docker 中的容器就是一个轻量级的虚拟机,是镜像运行起来的一个状态,本文就先来看看容器的基本操作。镜像就像是一个安装程序,而容器则是程序运行时的一个状态。
查看容器
启动 docker 后,应用 docker ps
命令能够查看以后正在运行的容器:
$ docker ps
查看所有容器
下面这条命令是查看以后正在运行的容器,如果须要查看所有容器,则能够通过 docker ps -a
命令查看:
$ docker ps -a
在查看容器时,波及到几个查看参数,含意别离如下:
CONTAINER ID
:CONTAINER ID 是指容器的 id,是一个惟一标识符, 这是一个 64 位的十六进制整数,在不会混同的状况下能够只采纳 id 的前几位进行标识一个容器。IMAGE
:IMAGE 示意创立容器时应用的镜像。COMMAND
:COMMAND 示意容器最初运行的命令。CREATED
:创立容器的工夫。STATUS
:容器的状态,这里可能显示一个容器启动工夫,也能显示容器敞开工夫。具体显示哪个要看容器以后的状态。PORTS
:容器对外开放的端口。NAMES
:容器的名字,如果不设置,会有一个默认的名字。
查看最新创立的容器
应用 docker ps -l
能够查看最近创立的容器,如下:
$ docker ps -l
查看最新创立的 n 个容器
能够应用 docker ps -n=XXX
来查看最新创立的 n 个容器,如下:
$ docker ps -n=2
创立容器
创立容器整体上来说有两种不同的形式,能够先创立,再启动,也能够连创立带启动一步到位,无论是那种形式,流程都是类似的,当执行一个创立命令之后,docker 首先会去本地门路下查找是否有相应的镜像,如果没有,就去 docker hub 上搜寻,如果搜寻到了,则下载下来,而后利用该镜像创立一个容器并启动。容器的文件系统是在只读的镜像文件上增加一层可读写的文件层,这样能够使在不扭转镜像的状况下,只记录扭转的数据。上面对这两种形式别离予以介绍。
开发者能够首先应用 docker create
命令创立一个容器,这个时候创立进去的容器是处于进行状态,没有运行,例如要创立一个 nginx 容器,创立命令如下:
$ docker create nginx
创立胜利后,能够查看容器是否创立胜利:
$ docker ps -a
此时创立的容器并未运行,处于进行状态,容器的 name 是随机生成的,开发者也能够在创立容器时指定 name,如下:
$ docker create --name=nginx nginx
此时的 name 属性就不是随机生成的,而是用户指定的 name。这种形式只是单纯的创立了一个用户,并未启动。
容器创立 + 启动
如果开发者须要既创立又启动容器,则能够应用 docker run
命令。docker run
命令又能够启动两种不同模式的容器:后盾型容器和交互型容器,顾名思义,后盾型容器就是一个在后盾运行的容器,默默的在后盾执行计算就行了,不须要和开发者进行交互,而交互型容器则须要接管开发者的输出进行解决给出反馈。对于开发者而言,大部分状况下创立的都是后盾型容器,不过在很多时候,即便是后盾型容器也不可避免的须要进行交互,上面别离来看。
后盾型容器
后盾型容器以 nginx 为例,个别 nginx 在后盾运行即可:
$ docker run --name nginx1 -d -p 8080:80 nginx
--name
含意和上文一样,示意创立的容器的名字,-d 示意容器在后盾运行,-p 示意将容器的 80 端口映射到宿主机的 8080 端口。
首先仍然会去本地查看,本地没有相应的容器,则会去 Docker Hub 上查找,查找到了下载并运行,并且生成了一个容器 id。运行胜利后,在浏览器中输出 http://localhost:8080
就能看到 Nginx 的默认页面了。这是一个后盾型容器的根本创立形式。
交互型容器
也能够创立交互型容器,例如创立一个 ubuntu 容器,开发者可能须要在 ubuntu 下面输出命令执行相干操作,交互型容器创立形式如下:
$ docker run --name ubuntu -it ubuntu /bin/bash
参数含意都和上文统一,除了 -it,-it 参数,i 示意开发容器的规范输出(STDIN),t 则示意通知 docker,为容器创立一个命令行终端。该命令执行完后,会关上一个输出终端,读者就能够在这个终端里欢快的操作 ubuntu 了。想要退出该终端,只须要输出 exit 命令即可。
容器启动
如果开发者应用了 docker run
命令创立了容器,则创立实现后容器就曾经启动了,如果应用了 docker create
命令创立了容器,则须要再执行 docker start
命令来启动容器,应用 docker start
命令联合容器 id 或者容器 name 能够启动一个容器。
docker start
启动的是一个曾经存在的容器,要应用该命令启动一个容器,必须要先晓得容器的 id 或者 name,开发者能够通过这两个属性启动一个容器(案例中,nginx 是通过 name 启动,而 ubuntu 则是通过 id 启动)。一般来说,第一次能够应用 docker run
启动一个容器,当前间接应用 docker start
即可。
重启
容器在运行过程中,会不可避免的出问题,出了问题时,须要可能主动重启,在容器启动时应用 --restart
参数能够实现这一需要。依据 docker 官网的解释,docker 的重启策略能够分为 4 种:
no
:示意不主动重启容器,默认即此。on:failure:[max-retries]
:示意在退出状态为非 0 时才会重启(非正常退出),有一个可抉择参数:最大重启次数,能够设置最大重启次数,重启次数达到下限后就会放弃重启。always
:示意始终重启容器,当 docker 守护过程启动时,也会无论容器过后的状态为何,都会尝试重启容器。unless-stopped
:示意始终重启容器,然而当 docker 守护过程启动时,如果容器曾经进行运行,则不会去重启它。
容器进行
通过 docker stop
命令能够终止一个容器。能够通过 name 或者 id 终止一个容器。
$ docker stop container_name/id
容器删除
单个删除
容器进行后还仍然存在,如果须要,还能够通过 docker start
命令再次重启一个容器,如果不须要一个容器,则能够通过 docker rm
命令删除一个容器。删除容器时,只能删除曾经进行运行的容器,不能删除正在运行的容器。能够通过 name 或者 id 删除一个容器。如果非要删除一个正在运行的容器,能够通过 -f 参数实现,如下:
$ docker rm -f ubuntu
批量删除
容器也能够批量删除,命令如下:
$ docker rm $(docker ps -a -q)
docker ps -a -q
会列出所有容器的 id,供 rm 命令删除。如下命令也反对删除已退出的孤立的容器:
$ docker container prune
更多干货请移步:https://antoniopeng.com