Docker——容器基本操作

docker toolbox更换阿里云镜像源

  1. 申请阿里云镜像
  2. 更换镜像源
docker-machine ssh default
sudo vi /var/lib/boot2docker/profile
  1. 在--label provider=virtualbox的下一行添加--registry-mirror https://xxxxxxxx.mirror.aliyuncs.com
  2. 重启docker服务:sudo /etc/init.d/docker restart
  3. 输入docker info 查看更改后的镜像源

查看容器

docker ps

查看所有容器

docker ps -a

在查看所有容器时,涉及到这几个参数:

  1. CONTAINER ID 是指容器的id,是一个唯一标识符,这是一个64位的十六进制整数,在不会混淆的情况下可以只采用id的前几位进行标识一个容器
  2. IMAGE 表示创建容器时使用的镜像
  3. COMMAND 表示容器最后运行的命令
  4. CREATED 创建容器的时间
  5. STATUS 容器的状态,这里可能显示一个容器启动时间,也能显示容器关闭时间。具体显示那个要看容器当前的状态。
  6. PORTS 容器对外开放的端口
  7. NAMES 容器的名字,如果不设置,会有一个默认的名字

查看最新创建的容器

docker ps -l

查看最新创建的n个容器

可以使用docker ps -n=XXX来查看最新创建的n个容器,如下:

创建容器

开发者可以首先使用docker create命令创建一个容器,这个时候创建出来的容器是处于停止状态,􀀀没有
运行,例如要创建一个nginx容器,创建命令如下:

docker create nginx

创建成功后,可以查看容器是否创建成功:

此时创建的容器并未运行,处于停止状态,容器的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的重启策略可以分为四种:

policy Result
no 表示不自动重启容器,默认即此。
on:failure:[max-retries] 表示在退出状态为非0时才会重启(非正常退出),有一个可选择参数:最大重启次数,可以设置最大重启次数,重启次数达到上限后就会放弃重启
always 表示始终重启容器,当docker守护进程启动时,也会无论容器当时的状态为何,都会尝试重启容器。
ubless-stopped 表示始终重启容器,但是当docker守护进程启动时,如果容器已经停止运行,则不会去重启它。

容器重启

通过docker stop命令可以终止一个容器

可以通过name或者id终止一个容器。

容器删除

单个删除

容器停止后还依然存在,如果需要,还可以通过docker start命令再次重启一个容器,如果不需要一个容器,则可以通过docker rm命令删除一个容器。删除容器时,只能删除已经停止运行的容器,不能删除正在运行的容器。如下:

可以通过name或者id删除一个容器。如果非要删除一个正在运行的容器,可以通过-f参数实现,如下:

批量删除

容器也可以批量删除,命令如下:

docker rm $(docker ps -a -q)

docker ps -a -q会列出所有容器的id,供rm命令删除。

如下命令也支持删除已退出的孤立的容器:

docker container prune
posted @ 2020-08-17 23:34  柒丶月  阅读(220)  评论(0编辑  收藏  举报