docker 初步使用
▶ 运行docker容器
docker 有三大部分组成:镜像、容器、仓库。
用个不是很确切的理解 镜像 和 容器 的关系就像是 程序 与 进程,前者 镜像/程序 是 静态 的,而后者 容器和进程 是 动态 的。
所以:镜像是容器运行的基石。
NAME
docker-run - Create and run a new container from an image
SYNOPSIS
docker run [-a|--attach[=[]]]
--snip--
通过使用 docker docker run 后面指定一个镜像就能够运行一个容器了。如运行一个 debian镜像 的容器就是 docker run debian
示列:
[root@server ~]# docker run debian
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
8cd46d290033: Pull complete
Digest: sha256:b8084b1a576c5504a031936e1132574f4ce1d6cc7130bbcc25a28f074539ae6b
Status: Downloaded newer image for debian:latest
[root@server ~]#
在上面的示列中很长的输出部分是拉取镜像的操作,这是在下载镜像,由于镜像是容器运行的基石,当docker发现当前的系统上没有 debian 这个镜像的时候,docker就会向 registry 也就是镜像仓库去下载镜像。
docker run debian 命令执行的过程是先看本地有没有指定的镜像,如果没有就会去仓库拉取指定的镜像,有的话直接就有本地的镜像,随后开始执行让镜像成为容器的过程。
在上面的输出中只有拉取的镜像的显示,后面的就没有了,这是因为镜像变成的容器已经结束了它的任务退出了,通过 docker ps -a 可以看到:
[root@server ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ccc7a9795f4e debian "bash" 7 minutes ago Exited (0) 7 minutes ago beautiful_chatterjee
ps 列出docker的容器,不带参数表示列出运行状态的容器,-a 的子选项是列出所有容器包括没有运行的。
可以看到 STATUS 一行是 Exited 的这个容器已经运行了然后退出了,这个 docker run debian 过程是很快的。最后一行是 NAMES 这一行名字是容器的名字,容器的名字可以自己来设置如果没有在 docker run 的时候对容器的名字进行设置那么docker会动取名字。
本部分就这些内容,关于 删除镜像、容器 等其他操作不是本篇的内容。
▷ docker run 运行容器更近一步
▷ docker run debian 后面添加参数试试
[root@server ~]# docker run debian echo "test the docker container"
test the docker container
[root@server ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c91f1fd86386 debian "echo 'test the dock…" 2 minutes ago Exited (0) 2 minutes ago silly_heyrovsky
ccc7a9795f4e debian "bash" 20 minutes ago Exited (0) 20 minutes ago beautiful_chatterjee
在先前的 docker run debian 命令后面添加 echo "test the docker container",可以看到在终端显示屏幕中已经显示了 test the docker container 这个字符串,执行完成后通过 docker ps -a 查看,发现果然这个运行的容器也和之前一样结束了任务,退出了。
COMMADN 部分知道第一行的容器就是该容器。
▷ 进入容器内部
[root@server ~]# docker run -i -t debian /bin/bash
root@cd99ded6f414:/# echo "the three container"
the three container
root@cd99ded6f414:/# exit
exit
[root@server ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd99ded6f414 debian "/bin/bash" 3 minutes ago Exited (0) 33 seconds ago bold_volhard
c91f1fd86386 debian "echo 'test the dock…" 8 minutes ago Exited (0) 8 minutes ago silly_heyrovsky
ccc7a9795f4e debian "bash" 27 minutes ago Exited (0) 27 minutes ago beautiful_chatterjee
上面的过程中就进入到了容器内部 -it 的意思是创建一个能够指定交互会话的容器,后面跟着的 /bin/bash 是指容器运行时候指定的 shell 环境,在容器内部使用 exit 退出容器,退出后容器也就 Exited 了。

浙公网安备 33010602011771号