Docker入门二容器管理
time: 2019-12-3
容器管理
docker常用命令
注: 命令中的CONTAINER,可以是conainer_id,也可以是container name
docker system info # 查看docker系统信息
docker container ls -a 查看当前已经创建的container
docker container ls:
-a 显示所有容器
-q 仅显示ID
-s 显示container的文件大小
快速启动容器
docker container run 可以快速创建并运行一个容器.
run 相当于pull + create + start等多步操作.
docker container run [OPTIONS] IMAGE [COMMAND [ARGS...]]OPTIONS:
-
-i, --interactive -
t,-tty,为终端 -
--rm在容器退出后自动移除 -
-p将容器的端口映射到主机 -
-v指定数据卷
一般会直接用-it就可以在创建container直接访问终端.
常用的小型IMAGE busybox
docker container run busybox echo "hello world"创建容器常用命令:
docker container run -i -t ubuntu /bin/bash进入容器之后:
-
exit可以终止容器 -
Ctrl+p+Ctrl+q可以切换到后台运行 -
docker container attach conatiner_id/name可以从后台重新切到终端
这里如果额外加 -d可以指定container直接后台运行.
创建容器
docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]例子:
docker container create \
--name container_01 \
--hostname container_01 \
--mac-address 00:01:02:03:04:05 \
--ulimit nproc=1024:2048 \
-it ubuntu /bin/bashulimit可以设置进程最大数量.
在创建完毕之后,container状态为Created
启动容器
docker container start CONTAINER停止/重启容器
docker container stop/restart CONTAINERstop状态为Exited
start状态为Up
暂停和恢复
- 暂停:
docker container pause CONTAINER此时状态为Paused
- 恢复:
docker container unpause CONTAINER连接运行的容器
docker container attach CONTAINER其他容器操作
查看容器元信息
docker container inspect CONTAINER可以显示该容器详细的系统信息,json格式
容器日志管理
docker container logs [OPTIONS] CONTAINER[OPTIONS]:
- -t --timestamps 显示时间戳
- -f实时输出,类似于tail -f
例子:
# dulei @ dulei-PC in ~ [0:09:06]
$ docker container run \
> --name container_02 \
> -i -t -d \
> ubuntu /bin/bash -c "while true; do echo hello world; sleep 2; done"
Unable to find image \'ubuntu:latest\' locally
latest: Pulling from library/ubuntu
7ddbc47eeb70: Pull complete
c1bbdc448b72: Pull complete
8c3b70e39044: Pull complete
45d437916d57: Pull complete
Digest: sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
Status: Downloaded newer image for ubuntu:latest
71d966a66fb35d395c30a30cb49f3b38cec175e04511d92d1de3c4e3895180ca
# dulei @ dulei-PC in ~ [10:53:48]
$ docker container logs -tf container_02
2019-12-04T02:53:48.014806012Z hello world
2019-12-04T02:53:50.016944143Z hello world
2019-12-04T02:53:52.017360512Z hello world查看容器进程
docker container top CONTAINER可以用来快速查看容器当前执行的进程:
$ docker container top container_02
UID PID PPID C STIME TTY TIME CMD
root 2611 32110 0 11:18 pts/0 00:00:00 sleep 2
root 32110 32085 0 10:53 pts/0 00:00:00 /bin/bash -c while true; do echo hello world; sleep 2; done查看文件修改
docker container diff CONTAINER可以相对于镜像的文件系统来说,查看容器中做了哪些修改.
# dulei @ dulei-PC in ~ [11:30:21]
$ docker container run \
--name container_02 \
-i -t -d \
ubuntu /bin/bash
37394323de1fffe9ec81c1d3cd330b9335cec12f53bb1b9f848a0d384079178d
# dulei @ dulei-PC in ~ [11:31:04]
$ docker container attach container_02
root@37394323de1f:/# touch ~/a.txt
root@37394323de1f:/# read escape sequence
# dulei @ dulei-PC in ~ [11:31:48] C:1
$ docker container diff container_02
C /root
A /root/a.txt
通过diif我们可以到新增了a.txt
发送命令
除了在docker container run中 执行命令之外,我们可以向运行中的容器发送命令:
docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]执行一条命令:
$ docker container exec container_02 ls root
a.txt执行多条命令:
$ docker container exec container_02 bash -c "cd /root && ls ./"
a.txt删除容器
docker container rm [OPTIONS] CONTAINER[OPTIONS]:
- -f 可以强制删除运行中的container
删除全部container
docker container rm -f $(docker container ls -aq)docker container ls -aq可以列出所有container的UUID