一、什么是镜像和容器
我们不做过深的解读,直接可以把他看做一个样板原型,容器就是根据这个样本实现出来一个产品,同时这个容器又可以进行一下包装或者二次加工,反过来做一个新的样板原型
**
二、获取一个镜像
通过docker pull 拉取仓库里面镜像
# 语法# docker pull [OPTIONS] NAME[:TAG|@DIGEST]# OPTOINS# -a 拉取相关所有与NAME相关的镜像# -q 禁止详情输出## :TAG 表示镜像具体的标签,默认值为latest,表示最新的# 例子docker pull centos #拉取一个centos latest镜像docker pull centos:7 #拉取centos 7镜像
测试
我们拉取用一个centos镜像,他的标签是latest
查看镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
三、启动一个镜像为容器
通过docker run 启动镜像为一个容器
# 语法# docker run [OPTIONS] IMAGE [COMMAND] [ARG...]# OPTIONS(常用)# -d 后台运行容器,并返回容器ID;# -i 以交互模式运行容器,通常与 -t 同时使用;# -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;# --name 为容器指定一个名称;# -v,-volume 绑定一个卷(做数据持久化)# --volumes-from# -p 指定端口映射,格式为:主机(宿主)端口:容器端口## IMAGE 指代 [镜像名|镜像ID]# [COMMAND] [ARG...] 后面可以跟上一些shell命令 如果不写默认是 /bin/bash# 例子docker run -dit -p 8080:80 -v /root/docker/volumeData:/tmp/data --name test centos# 解释# 我们启动一个cento容器,他的名字叫test, 他是以交互式的方式运行,并且分配一个伪终端并进入,同时,# 映射了一个主机8080到容器的80端口,另外原主机的/root/docker/volumeData目录和宿主的/tmp/data# 目录建立了一个共享机制来共享数据
1、启动一个容器并进入容器
docker run -it --name testCentos centos

可以看到这里多了一串hash,此时我们启动了容器并进入到了容器内部
2、启动一个容器,让他在后台运行
普通的启动一个镜像,然后我们通过 docker ps 查看容器
这时我们发现容器列表为空,是因为没有启动起来?其实不然,实际上容器是启动起来了,第二行,我们可以看到返回了一个hash串。
以下是参考原因:
① docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出
② 容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出
③ 这个是 docker 的机制问题
解决办法**:
# 法1docker run -d centos /bin/sh -c "while true; do echo 1; sleep 1; done"# 法2docker run -d centos tail -f /dev/null# 法3docker run -dit centos# 法4# 我们先启动容器docker run -it cetnos ,然后进入容器 docker attach [容器id/容器名], 按键盘 ctrl + p + q的方式退出,这里不能是ctrl + d,后者是直接把容器杀了 法4
总体思路前两个就是让他挂一个命令一直执行,但是有问题是,当我们docker attach [容器id/容器名] 的时候会卡界面
后两种是通过挂伪终端的方式让docker容器保持活跃
四、提交一个容器为一个新的镜像
一般来说,我们启动一个容器后,我们可以在这个容器里面安装各种自己自定义的软件,此后,我们可以将这个容器保留一个新的镜像作为一个新的蓝本。
提交一个容器成为一个新的镜像
# 语法# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]# OPTIONS# -a 作者# -m 提交的信息# -p 提交期间暂停容器(默认是true)# -c 使用Dockerfile指令来创建镜像# CONTAINER [容器名/容器ID]# TAG 标签,默认latest# 例子docker commit -a 'zhenbo' -m '测试提交容器为一个镜像' testCentos newcentos# 解释 把容器testCentos 提交为 一个作者为'zhenbo' 信息为 '测试提交容器为一个镜像' 名字为 newcentos的一个新镜像

五、总

