麦克斯仇
Think different
159
文章
34735
阅读
首页
INDEX
文章
ARTICLE
关于
ABOUT
Docker命令2:docker container(管理容器)
创建日期:
2020/01/09
修改日期:
2023/03/29
Docker
> 以下命令中,若有对 **CONTAINER** 操作时,可以写 CONTAINER ID 或者 NAMES NAMES 不可简写,可以写几个字母后使用`tab`键自动补全, CONTAINER ID 可以简写,简写至可以唯一确定即可, 比如:有三个 CONTAINER ID : 1358b3317b8b 15a086ed65d3 878a3a31895b rm 8 即可删除 878a3a31895b,rm 15 可删除 15a086ed65d3 ### run 运行一个新的容器 & create 创建一个新的容器 & update 更新一个或多个容器的配置 详见:[Docker 命令 5 docker run/create/update 运行/创建/修改容器](https://maxqiu.com/article/detail/30) ### ls 列出容器 ```bash docker ps [OPTIONS] docker container ls [OPTIONS] Options: -a, --all Show all containers (default shows just running) # 显示所有容器,默认仅显示运行中的容器 -f, --filter filter Filter output based on conditions provided --format string Pretty-print containers using a Go template -n, --last int Show n last created containers (includes all states) (default -1) # 列出n个最后创建的容器(包括所有状态) -l, --latest Show the latest created container (includes all states) # 显示最新创建的容器(包括所有状态) --no-trunc Don't truncate output # 完整输出 -q, --quiet Only display numeric IDs -s, --size Display total file sizes # 显示完整大小 ``` ```bash # 列出运行中的容器 docker ps # 列出所有容器 docker ps -a # 列出最后创建的两个容器(-n 默认包含已停止的,无需 -a 参数) docker ps -n 2 ``` 列 | 说明 | 注 ---|---|--- CONTAINER ID | 容器ID | IMAGE | 使用的镜像 | COMMAND | 执行的命令 | CREATED | 创建时间 | STATUS | 容器状态 | PORTS | 映射的端口 | NAMES | 容器名称 | SIZE | 容器大小 | 加 -s 显示 ### inspect 在一个或多个容器上显示详细信息 ```bash docker container inspect [OPTIONS] CONTAINER [CONTAINER...] # 此命令可以简写如下命令,但是 docker inspect 不仅仅可以查看 CONTAINER docker inspect [OPTIONS] NAME|ID [NAME|ID...] Options: -f, --format string Format the output using the given Go template -s, --size Display total file sizes ``` ```bash # 显示一个容器的详细信息 docker inspect my_reids ``` > inspect详细内容后期整理 ### stop 停止一个或多个容器 ```bash docker stop [OPTIONS] CONTAINER [CONTAINER...] docker container stop [OPTIONS] CONTAINER [CONTAINER...] Options: -t, --time int Seconds to wait for stop before killing it (default 10) # t秒(默认10秒)等待容器停止,若仍未停止,则kill ``` ```bash # 停止一个容器 docker stop d4b253c1b524 ``` ### start 启动一个或多个停止的容器 ```bash docker start [OPTIONS] CONTAINER [CONTAINER...] docker container start [OPTIONS] CONTAINER [CONTAINER...] Options: -a, --attach Attach STDOUT/STDERR and forward signals --detach-keys string Override the key sequence for detaching a container -i, --interactive Attach container's STDIN ``` ```bash # 启动一个已经停止的容器 docker start my_reids ``` ### restart 重新启动一个或多个容器 ```bash docker restart [OPTIONS] CONTAINER [CONTAINER...] docker container restart [OPTIONS] CONTAINER [CONTAINER...] Options: -t, --time int Seconds to wait for stop before killing the container (default 10) # t秒(默认10秒)等待容器停止,若仍未停止,则kill ``` ```bash # 重启 MySQL 容器 docker restart mysql ``` ### pause 暂停一个或多个容器中的所有进程 ```bash docker pause CONTAINER [CONTAINER...] docker container pause CONTAINER [CONTAINER...] ``` ```bash # 暂停 MySQL 进程 docker pause mysql ``` ### unpause 在一个或多个容器中暂停所有进程 ```bash docker unpause CONTAINER [CONTAINER...] docker container unpause CONTAINER [CONTAINER...] ``` ```bash # 恢复 MySQL 进程 docker unpause mysql ``` ### rename 重命名一个容器 ```bash docker rename CONTAINER NEW_NAME docker container rename CONTAINER NEW_NAME ``` ``` # 重命名一个容器 docker rename mysql my_mysql ``` ### rm 删除一个或多个容器 ```bash docker rm [OPTIONS] CONTAINER [CONTAINER...] docker container rm [OPTIONS] CONTAINER [CONTAINER...] Options: -f, --force Force the removal of a running container (uses SIGKILL) # 强制删除正在运行的容器(使用SIGKILL) -l, --link Remove the specified link -v, --volumes Remove the volumes associated with the container ``` ```bash # 删除容器 docker rm 878a3a31895b # 强制删除正在运行的容器 docker rm -f 875 ``` ### prune 删除所有停止的容器 ```bash docker container prune [OPTIONS] Options: --filter filter Provide filter values (e.g. 'until=<timestamp>') -f, --force Do not prompt for confirmation # 不提示确认 ``` ```bash # 删除所有未使用的容器,且不提示确认(-f 不提示确认) docker container prune -f ``` ### exec 在正在运行的容器中运行命令 ```bash docker exec [OPTIONS] CONTAINER COMMAND [ARG...] docker container exec [OPTIONS] CONTAINER COMMAND [ARG...] Options: -d, --detach Detached mode: run command in the background --detach-keys string Override the key sequence for detaching a container -e, --env list Set environment variables -i, --interactive Keep STDIN open even if not attached # 保持STDIN打开,即使没有连接 --privileged Give extended privileges to the command -t, --tty Allocate a pseudo-TTY # 分配一个pseudo-TTY -u, --user string Username or UID (format: <name|uid>[:<group|gid>]) -w, --workdir string Working directory inside the container ``` ```bash # 交互式进入一个容器(基本上 -i -t 是在一起用,简写成 -it) docker exec -it d4b253c1b524 /bin/bash ``` ### logs 获取容器的日志 ```bash docker logs [OPTIONS] CONTAINER docker container logs [OPTIONS] CONTAINER Options: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes) --tail string Number of lines to show from the end of the logs (default "all") -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes) ``` ```bash # 显示一个容器的运行日志 docker logs my_reids ``` ### top 显示容器的运行进程 ```bash docker top CONTAINER [ps OPTIONS] docker container top CONTAINER [ps OPTIONS] ``` ```bash # 显示容器的运行进程 docker top mysql # 显示容器内的全部进行(aux 是 Linux 中 ps 命令的参数) docker top mysql aux ``` > 输出内容含义与Linux的ps命令输出内容含义相同, [ps OPTIONS]可以写Linux的ps命令的参数 ### stats 显示容器资源使用统计信息的实时数据 ```bash docker stats [OPTIONS] [CONTAINER...] docker container stats [OPTIONS] [CONTAINER...] Options: -a, --all Show all containers (default shows just running) # 显示所有容器(默认显示正在运行) --format string Pretty-print images using a Go template --no-stream Disable streaming stats and only pull the first result # 禁用实时统计,只提取第一个结果 --no-trunc Do not truncate output # 不截断输出 ``` ```bash # 显示所有运作中的容器资源使用情况,使用 Ctrl + c 退出显示 docker stats # 显示所有运作中的容器资源使用情况,只显示一次 docker stats --no-stream ``` 列 | 说明 ---|--- CONTAINER ID | 容器ID NAME | 容器名称 CPU % | CPU占用率 MEM USAGE / LIMIT | 内存使用/总大小 MEM % | 内存使用率 NET I/O | 网络上传下载 BLOCK I/O | 磁盘读写 PID | 创建的进程或线程数 ### commit 根据一个变更后的容器创建新镜像(不推荐使用) ```bash docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] Options: -a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>") -c, --change list Apply Dockerfile instruction to the created image -m, --message string Commit message -p, --pause Pause container during commit (default true) ``` ```bash # 不推荐使用容器创建镜像,应当使用Dockerfile创建镜像 # 根据指定容器创建一个镜像,并命名为myimage,版本为V1 docker commit e62a959e3052 myimage:V1 ``` ### cp 在容器和本地文件系统之间复制文件/文件夹 ```bash # 容器至本地 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- # 本地至容器 docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH docker container cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH Use '-' as the source to read a tar archive from stdin and extract it to a directory destination in a container. # 使用 - 作为从stdin读取tar存档的源,并将其解压缩到容器中的目录目的地 Use '-' as the destination to stream a tar archive of a container source to stdout. # 使用 - 作为目标,将容器源的tar存档流传输到stdout Options: -a, --archive Archive mode (copy all uid/gid information) # 存档模式(复制所有uid/gid信息) -L, --follow-link Always follow symbol link in SRC_PATH # 始终遵循SRC_PATH中的符号链接 ``` ```bash # 将 web 容器内的 root 文件夹 拷贝到本地的 root 目录下 docker cp web:/root /root/ # 将本地的 blog 文件夹拷贝到 web 容器内的 root 目录下 docker cp /root/blog/ web:/root/ ``` ### diff 检查容器文件系统中文件或目录的更改 ```bash docker diff CONTAINER docker container diff CONTAINER ``` ```bash # 显示容器的文件或目录变更 docker diff mysql ``` 符号 | 说明 ---|--- A | 文件或目录已添加 D | 文件或目录已删除 C | 文件或目录已更改 ### export 将容器的文件系统导出为tar存档 ```bash docker export [OPTIONS] CONTAINER docker container export [OPTIONS] CONTAINER Options: -o, --output string Write to a file, instead of STDOUT ``` ```bash # 将 mysql 容器导出为 mysql.tar 文件 docker export -o mysql.tar mysql ``` ### kill 杀死一个或多个正在运行的容器 ```bash docker kill [OPTIONS] CONTAINER [CONTAINER...] docker container kill [OPTIONS] CONTAINER [CONTAINER...] Options: -s, --signal string Signal to send to the container (default "KILL") # 发送到容器的信号(默认为“KILL”) ``` ```bash # 关闭 mysql 容器 # 此时,容器的状态为 Exited (137) docker kill mysql # 使用 kill -15 关闭 mysql 容器 # 此时,容器的状态为 Exited (0) docker kill -s 15 mysql ``` ### port 列出端口映射或容器的特定映射 ```bash docker port CONTAINER [PRIVATE_PORT[/PROTO]] docker container port CONTAINER [PRIVATE_PORT[/PROTO]] ``` ```bash # 列出 mysql 的端口映射 docker port mysql 3306/tcp -> 0.0.0.0:53306 # 3306/tcp 容器内的 3306 端口 # 0.0.0.0:3306 本地的 3306 端口 ``` ### wait 阻塞,直到一个或多个容器停止,然后打印它们的退出代码 ```bash docker wait CONTAINER [CONTAINER...] docker container wait CONTAINER [CONTAINER...] ``` ```bash # 阻塞 mysql 容器,等待容器停止,另起一个 ssh 并执行停止容器命令,则原 ssh 窗口可以看到容器退出代码 docker wait web docker stop web ``` ### attach 将本地标准输入、输出和错误流附加到正在运行的容器中 ```bash docker attach [OPTIONS] CONTAINER docker container attach [OPTIONS] CONTAINER Options: --detach-keys string Override the key sequence for detaching a container --no-stdin Do not attach STDIN --sig-proxy Proxy all received signals to the process (default true) ``` ```bash # 注:不太会用。先用 attach mysql 再使用另一个 ssh 关闭 mysql 容器,即可看到输出 docker attach mysql docker stop mysql ```
9
全部评论