第一个docker容器
docker run 【OPTIONS】IMAGE【:TAG】【COMMAND】【ARG...】
用docker run命令运行第一个镜像,打印出了一些信息。这戏信息解释了docker运行镜像所经历的一系列操作。
下图可以更加简单的描述docker的一系列操作。
Client:执行docker命令的客户端
DOCKER_HOST:本机的docker服务
Registry:docker的远程镜像中心
docker pull首先第一步是docker daemon会检查本机颈项上是否存在,如果存在并且版本正确,就不会做任何操作,如果不存在就会去docker仓库找到我们想要拉取的镜像,如果存在就会拉取镜像到本地。
docker run的第一步是把命令发到本机的docker daemon,docker daemon会检查镜像在本机是否存在,如果不存在会先执行docker pull命令把镜像拉到本机,然后在运行镜像。
二、docker运行Nginx
首先第一步,先从网易镜像中心找到nginx的官方镜像,然后拉取镜像。
第二步,运行nginx。
用docker run命令运行nginx之后会看到光标闪动,然后打开一个新的bash窗口,输入 docker ps命令可以看到正在运行的docker镜像如下
从图中可以看到docker镜像运行的一系列信息。但是这样启动nginx是在前台启动nginx,只要control+c就能把服务停止了,但是nginx服务通常都是后台运行的服务。
运行docker run --help查看docker run命令可加的参数是否能满足我们后台启动nginx的需求。
从图中可以看到,只需要在docker run命令后加入-d参数就能让nginx在后台启动。
当我们加入-d参数执行docker run命令启动nginx服务时发现这个命令返回了一个字符串参数。
继续执行docker ps命令查看正在运行的镜像,发现刚刚执行docker run命令返回的字符串正是docker的容器id。
接下来,我们该进去docker容器中去查看我们运行的容器运行情况。执行docker exec命令去查看容器运行情况。在此之前,我们需要查看docker exec命令可以带什么参数。
从docker exec --help返回的可选参数中,我们把命令拼接出来为docker exec -ti {name} bash
当我执行docker exec命令时,弹出一个提示,这可能是因为我用window系统的缘故,所以需要在命令前加一个winpty参数。
从图中看到我们放佛进入了一个linux系统内部,这是由于nginx需要运行在Linux容器上,所以可以在容器内部执行linux命令。
由此已经成功的用docker运行了nginx。