Docker 容器基本操作
查看容器
启动容器后,使用docker ps
命令查看当前正在运行的容器:
查看容器时涉及到的几个参数
参数 | 释义 |
---|---|
CONTAINER ID | 容器id,唯一标识符,64位的十六进制整数,在不会混淆的情况下可以只采用id的前几位进行标识一个容器 |
IMAGE | 创建容器时使用的镜像 |
COMMAND | 表示容器最后的运行命令 |
CREATED | 创建容器的时间 |
STATUS | 容器状态,这里可能显示容器启动的时间,也可能是容器关闭的时间;具体要看哪个容器当前的状态 |
PORTS | 容器对外开放的端口 |
NAMES | 容器的名字,如果不设置,会自动生成一个默认的名字 |
docker ps
的其他命令
创建容器
有2中方式创建容器。1. 先创建,在启动; 2创建并且启动。
这两种方式的流程都很相似,当执行一个创建命令时,docker会首先去本地路径下查找是否有相应的镜像,如果没有就去你配置的镜像仓库(默认是 docker hub)上搜索,如果搜索到了,则下载下来,然后利用该镜像创建一个容器并启动。容器的文件系统是在只读的镜像文件上添加一层可读写的文件层,这样可以在不改变镜像的情况下,只改变记录数据
先创建,在启动
docker create nginx
这里的nginx是指IMAGE,容器会自动生成一个名字
docker create --name=nginx nginx
–name=nignx 这里的nginx指的是NAMES也就是你为容器指定的名称
创建+启动
docker run
后台型容器
以nginx为例
docker run --name nginx1 -d -p 8080:80 nignx
这里的–name nginx1 和上文的意思一致
-d 表示容器在后台运行
-p 表示表示将容器的80端口映射到宿主机的8080端口
在浏览器输入http://docker容器的ip地址:8080
就可以看到Nginx默认页面
交互型容器
例如创建一个Ubuntu容器
docker run --name ubuntu -it ubuntu /bin/bash
-it
i 表示开发容器的标准输入(STDIN)
t 表示告诉docker为容器创建一个命令行终端
这个命令执行结果如下
启动容器
docker start
如前文所说,如果使用的是docker create
命令,则需要执行docker start
命令
完整的容器启动命令:
docker start id|name
id 指的是你创建容器时,容器的CONTAINER ID
name 指的是 容器的NAMES
重启
容器在启动过程中,不可避免会出现问题,需要能够自动重启,在容器启动时使用--restart
参数可以实现这一需求。根据docker官网解释,docker重启策略有4中:
策略 | 结果 |
---|---|
no | 不自动重启容器,默认即此 |
on-failure[:max-retries] | 表示在退出状态为非0时才会重启,有一个可选参数:最大重启次数,达到上限后就会放弃重启 |
always | 始终重启容器,当docker守护进程启动时,无论容器当时的状态为何,都会尝试重启容器 |
ubless-stopped | 表示始终重启容器,当docker守护进程启动时,如果容器已经停止运行,则不会重启它 |
停止容器
docker stop id|name
id 指的是你创建容器时,容器的CONTAINER ID
name 指的是 容器的NAMES
容器删除
单个删除
docker rm id|name
id,name 意思和前文一样
删除容器时,只能删除已经停止的容器
如果非要删除一个正在运行的容器,可以通过-f参数实现
docker rm -f id|name
批量删除
docker rm $(docker ps -a -q)
docker ps -a -q
会列出所有容器的id,供rm命令删除
docker container prune
也支持删除以退出的孤立容器
依附容器
docker attach id|name
此命令主要是针对交互容器而言,执行此命令之前首先要确保容器已经启动,然后使用该命令才能进入到容器中,具体操作过程如下图所示:
容器内执行命令
docker exec
与docker attach
的区别
dcoker exec
: 在容器内执行命令,用户退出后,容器仍在后台运行
docker attach
: 用户退出后,容器自动关闭
查看容器信息
容器创建成功后可以通过 docker inspect
命令查看容器详细信息:包括容器id、容器名、环境变量、运行命令、主机配置、网络配置以及数据卷配置等信息。执行结果部分截图如下
使用format命令可以只查看用户关心的数据
- 查看容器运行状态:
docker inspect -f='{{.State.Running}}' ubuntu
- 查看容器ip地址
docker inspect -f='{{.NetworkSettingsd.IPAddress}} ubuntu'
- 查看容器名、容器id
docker inspect -f='{{.Name}} {{.ID}}' ubuntu
- 查看容器主机信息
docker inspect -f='{{HostConfig}}' ubuntu
查看容器进程
docker top id|name
使用此命令时确保容器已经启动,结果如下
查看容器日志
dcoker logs id|name
查询结果如下