docker学习笔记(三):容器管理

170人浏览 / 0人评论

列举可用容器

最简单的命令:

docker ps

这个命令是查看当前正在运行的容器,如果需要查看所有容器则使用下面的命令:

docker ps -a

运行容器

基本命令是run,如下:

docker run centos

在执行run之前,需要确保已经拉去了指定镜像,比如上边命令中的centos。关于如何拉去进行,可以参考docker学习笔记(二):镜像管理

执行完上面的命令,并不会有任何的输出,使用docker ps命令也无法列出该容器,需要使用docker ps -a才能查看。可以看出以上命令执行后,容器仅运行了一瞬间就停止了。那么我们如何确定容器的生命周期呢?

  • 首先容器必须要执行一个程序
  • 容器在不指定执行什么程序的时候,默认执行镜像顶层的CMD
  • 容器内执行的程序的时长就是容器的存活时间

指定容器执行的程序

只需要在运行命令末尾加上需要容器执行的命令即可,如下:

# 让容器阻塞30s
docker run centos sleep 30

为容器分配一个终端 -t

命令如下:

docker run -t centos

但是需要注意的是,上面命令所分配的终端是不可交互的,会一直阻塞容器。

让终端可以交互 -i

命令如下:

docker run -t -i centos

也可以缩写为:

docker run -it centos

此时运行的容器就跟打开一个linux终端一样,可以执行一些命令了。

运行一个长期存活的容器 --restart=always

上边的命令所运行的容器都有一个问题,那就是一旦退出终端容器就会停止,为了让容器总是出去运行状态,docker run 还提供了的一个选项--restart=always,使用方法如下:

docker run  --restart=always centos 

这个特性很有用,特别是一些不稳定的环境中,可以让容器自动重启。

运行一个临时容器 --rm

我们可能会频繁的测试容器,这样会创建一大推不需要的容器,为了解决这种场景,docker提供了一种创建一次性容器的方法,使用--rm选项,例如:

docker run --rm centos

设定容器名称 --name

为了方便记忆,也方便删除容器,我们可以为容器指定名称,例如:

docker run --name=c1 centos

设定容器hostname -h

容器运行起来后默认的hostname是容器的id, 这个id是一窜没有规律的字符串,不方便记忆,所以docker还提供了了更改选项-h,例如:

# 指定容器的hostname为appuser
docker run -h appuser centos

设置容器变量 -e

有一些容器启动需要设置有些参数,比如mysql容器启动的时候需要设置roor密码,则可使用一下命令进行设置:

docker run -e MYSQL_ROOT_PASSWORD=123456 -e DATABASE=test mysql

后台运行容器 -d

上边运行mysql的容器的命令执行完后,相关日志会直接在当前终端中输出,一旦强行终止输出,那么容器也会跟着一起被关闭掉,所以我们需要让该容器在后台运行,可以使用-d选项,例如:

docker run -d -e MYSQL_ROOT_PASSWORD=123456 -e DATABASE=test mysql

该选项还可以跟 -t-i一起缩写为-dit

查看容器

基本命令:

# docker logs [容器名称或者id]
docker logs db

上边的命令仅能查看容器已经产生的日志,如果想一直关注该容器的运行状况,可使用一下命令:

docker logs -f db

删除容器

删除容器的基本指令是:

# docker rm [id或者容器名称]
docker rm db

如果基于id删除,则可使用id的前1位或者多位字符(只要能唯一定位)快速删除,不需要将id完整的输入,例如:

# 容器id为:dfdd1232, 下边的命令也可以删除
docker rm d

如果容器正在运行,则需要加上-f选项,例如:

docker rm -f db

全部评论