docker简单介绍----镜像和容器管理
docker可以分为三部分:docker镜像 docker仓库 docker容器
docker镜像:一个image可以包含一个镜像,也可以理解为一个系统模板,里面安装了相关应用,也可以是纯净版的系统
docker仓库:docker registries ,也叫docker仓库, 分为共有库和私有库俩种,上传下载images是通过dcoker仓库来实现的,公有库叫docker hub,也可以在局域网部署一个私有的docker仓库
docker容器:容器是从image中创建的,可以执行启动、开始、停止、删除等操作,可以理解为image创建的一个虚拟机
开始正题:
docker安装:centos 7 ------------yum -y install docker-io
查看docker目前有哪些镜像:
docker images
查看docker库中有哪些images
docker search “images-name” 例如: docker search centos7
我们看到下图出现很多参数,其中包括image的名字、描述、stars(受欢迎程度) 是否为官方创建 是否为自动创建等
Docker Official Images指docker标准库, 由docker 官方建立. 用户建立的image则会有userid的prefix.

拉取镜像
docker pull docker.io/ansible/centos7-ansible #下载完镜像后可以使用docker images查看是否下载成功
启动容器并进入到容器中
docker run -it {镜像id} /bin/bash #也可以添加-d参数后台运行
假如容器在后台运行,这个时候就需要进入到该容器进行操作
1. docker attach 容器id
不常用:但在,使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。
2.容器中安装sshd进行远程
不常用:为了保证安全性,不建议开启SSHD服务
3.使用nsenter进行远程(默认已经安装,如果没有可以手动安装)
docker inspect -f '{{.State.Pid}}' 容器ID
nsenter --target 容器PID --mount --uts --ipc --net --pid
例如:

4.使用 exec进入docker容器
docker exec -it 容器id /bin/bash
===============================================================================================================================================
创建新镜像:在容器中部署好应用,有时会迁移到其它docker环境中,所以我们需要将当前容器中的应用创建为新的镜像上传到docker仓库中,方便下载使用
(1) docker commit来生成新镜像
参数详解:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
举例说明:
docker commit -a "guohaidong" -m "vsftpd" f8315ebb750b vsftpd:v1
使用Dockerfile创建新镜像
指令说明
指令的一般格式为INSTRUNCTION arguments,指令包括FROM、MAINTAINER、RUN等。具体指令及说明如下:
| 指令 | 说明 |
| FROM | 指定所创建镜像的基础镜像 |
| MAINTAINER | 指定维护者信息 |
| RUN | 运行命令 |
| CMD | 指定启动容器时默认执行的命令 |
| LABEL | 指定生成镜像的元数据标签信息 |
| EXPOSE | 声明镜像内服务所监听的端口 |
| ENV | 指定环境变量 |
| ADD | 赋值指定的<src>路径下的内容到容器中的<dest>路径下,<src>可以为URL;如果为tar文件,会自动解压到<dest>路径下 |
| COPY | 赋值本地主机的<scr>路径下的内容到容器中的<dest>路径下;一般情况下推荐使用COPY而不是ADD |
| ENTRYPOINT | 指定镜像的默认入口 |
| VOLUME | 创建数据挂载点 |
| USER | 指定运行容器时的用户名或UID |
| WORKDIR | 配置工作目录 |
| ARG | 指定镜像内使用的参数(例如版本号信息等) |
| ONBUILD | 配置当前所创建的镜像作为其他镜像的基础镜像时,所执行的创建操作的命令 |
| STOPSIGNAL | 容器退出的信号 |
| HEALTHCHECK | 如何进行健康检查 |
| SHELL | 指定使用SHELL时的默认SHELL类型 |
Dockerfile文件格式
最简单的案例:
在linux系统中的某个路径新建一个文件为Dockerfile文件
vim Dockerfile
FROM docker.io/centos
MAINTAINER Guo Haidong <493630393@qq.com>
RUN yum -y install mariadb
然后使用docker build -t contos/mariadb:v1 -f /data/docker/Dockerfile . #来生成新的镜像# “.”默认是指Dockerfile是在当前路径,也可以使用-f参数来指定Dockerfile路径
-t 指定镜像名称和tag
-f 指定Dcokerfile文件的path
#*******搭建私有docker仓库,上传镜像到仓库,后面介绍
删除镜像
docker rmi 镜像id
删除镜像前必须删除容器
docker rm -f 容器id
查看容器id方法:
docker ps
===================================
终端运行一个nginx容器,如果没有nginx镜像会自动从docker仓库中pull下来
docker run --name nginx -it nginx /bin/bash
===========================================================
查看容器的pid
docker inspect -f '{{.State.Pid}}' 容器ID
使用nsenter配合容器PID来进入到容器里
nsenter --target 容器PID --mount --uts --ipc --net --pid
============================================================================
命令总结:
镜像管理
docker search 搜索镜像
docker pull 获取镜像
docker images 查看镜像
docker rmi 删除镜像
docker commit命令或者编写dockerfile文件 生成新镜像
容器管理
docker run --name -h hostname 启动容器
docker stop|start|restart 容器id 停止|启动|重启 容器
docker run --restart=always --name hostname -d 容器id或者容器名称 自动重启容器(当容器由于某种错误导致容器停止就会触发restart信号)
docker ps -l 查看最后一个退出容器
docker ps -n number 显示最后几个容器
docker top 容器id或者容器名称 查看当前运行的进程
docker logs -f 容器id或者容器名称 实时查看当前容器日志输出
docker attach | 容器SSH |使用nsenter |使用exec 进入容器 #这里推荐使用后俩种,
*****docker inspect 容器名称或者容器id 显示容器的详细信息
*****docker inspect --format '{{.Config.Hostname}}' 容器名称或者容器id
docker简单介绍----镜像和容器管理的更多相关文章
- Docker简单介绍
Docker简单介绍 Docker是一个能够把开发的应用程序非常方便地部署到容器的开源引擎.由Docker公司团队编写,基于Apache 2.0开源授权协议发行.Docker的主要目的例如以下: 提供 ...
- Docker系列(一):Docker简单介绍
Docker简介: 多语言和框架:支持多语言和框架以及语言框架的扩展机制 多服务:开放的核心服务以及服务的扩展机制 多云和多IaaS技术:支持多种IaaS技术和多云的部署,包括公有云和私有云 Dock ...
- Docker 镜像与容器管理
镜像与容器简介 Docker的大部分操作都围绕着它的三大核心概念:镜像.容器.仓库而展开.因此,准确把握这三大核心概念对于掌握Docker技术尤为重要,在docker中,我们重点关注的就是镜像和容器了 ...
- Docker镜像和容器管理(二)
Docker安装 Docker镜像管理 https://hub.docker.com/ 是公共的一个Docker镜像仓库,类似GitHub一样,上面有非常多的开源项目镜像. 可以直接在命令行搜索镜像 ...
- docker(2)安装centos7镜像与容器管理
1.镜像加速器 创建/etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn ...
- Docker——理解好镜像和容器的关系
关注公众号,大家可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料. 镜像也是 docker 的核心组件之一,镜像时容器运行的基础,容器是镜像运行后的形态.前面我们介绍了 ...
- 一个简单易用的容器管理平台-Humpback
什么是Humpback? 在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是继续称 Docker). 在 Docker-百度百科 中,对 Docker 已经解释得很清 ...
- docker 简单介绍及基础命令运用
一.什么是docker? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. 简单的来讲Docker实际上就是一个大型容器.容器是完全使用沙箱机制,相互之间不 ...
- Docker&K8S&持续集成与容器管理--系列教程
前言 网络虚拟化 一 Docker简介 Docker介绍 → B站视频链接 Docker架构 → B站视频链接 二 Docker安装 Ubuntu Docker 安装 CentOS Docker ...
随机推荐
- Java里的不能与无用.
不能获取参数名 , 导致函数的参数名无用. 在MyBatis的方法里. 参数名是无法反射得到的. 导致必须使用注解,指定参数名. 这样的话. 参数名就没有了意义.
- 判断语句之单if
什么是判断语句? 给定一个判断条件,并在程序执行过程中判断该条件是否成立,根据判断结果执行不同的操作,从而改变代码的执行顺序,实现更多的功能,这就是判断语句. 判断语句if if语句第一种格式:if ...
- 微信小程序代码快速转化为H5代码的方法!
1.把小程序html里面的如下标签对应改成小程序的标签,即可快速转化成H5的页面! 利用ctrl+H将下面的对应标签全部替换! html: <view === <div </view ...
- mac用BootCamp装windows装完之后驱动问题
刚装完会有一个临时盘里面找到BootCamp文件夹然后运行setup.exe,装完即可.
- 深入Eureka/Feign/Hystrix原理学习(1)
第一步: 创建注册中心项目,引入cloud discovery相关依赖. ①在pom文件中引入相关依赖. ②在启动类上加上@EnableEurekaServer注解,标注这是一个注 册中心. ③在ap ...
- OTZ%%%子谦。大佬
又上了节课...俩题 计算系数 组合数问题... 要不是大佬指点就只能阶乘暴力算了 (主要还是我忘了杨辉三角) 杨辉三角与组合数C有着千丝万缕的联系,在计算,使用方面相当方便. 先说计算系数 计 ...
- C++模板、.vimrc和一些Linux配置
C++模板 #include<cstdio> #include<iostream> #include<cmath> #include<cstring> ...
- python基础5 字典
一.字典 字典是python的基础数据类型之一:字典可以存储大量的数据,关系型数据. 同样他也是python中唯一的映射类的数据类型. 数据类型的分类: 可变的(不可哈希)数据类型:list,dict ...
- Activiti工作流框架——快速上手
一.前言 最近在做公司的OA,里面有用到工作流,公司用的是 jbpm4,感觉比较老,资料有点少,就先学学 新一点的 activiti ㄟ(▔▽▔)ㄏ 首先工作流的概念是:工作流(Workfl ...
- Maze HDU - 4035(期望dp)
When wake up, lxhgww find himself in a huge maze. The maze consisted by N rooms and tunnels connecti ...