Docker - 常用命令合集
2025年03月22日 09:03:38 [原创]
目录
- 1. 镜像仓库
- 2. 本地镜像管理
- 3. 获取镜像
- 4. 提交镜像
- 5. 导入镜像作
- 6. 保存镜像
- 7. 修改镜像名称
- 8. 清理镜像
- 9. 运行镜像
- 10. 列出镜像
- 11. 查看docker资源占用空间
- 12. 根据仓库名列出镜像
- 13. 列出特定的某个镜像
- 14. 删除本地镜像
- 15. docker 定制镜像
- 16. docker update
- 1. 查看所有的数据卷
- 2. 创建一个数据卷
- 3. 以查看指定 数据卷 的信息
- 4. 启动一个挂载数据卷的容器
- 5. 删除数据卷
- 6. 清理无主数据卷
- 7. 挂载主机目录
- 8. 复用其他容器的数据卷
- 9. 备份数据卷
- 10. 还原数据卷
一. 容器
1. 容器生命周期管理
命令 |
作用 |
run | 创建一个新容器并运行 |
start/stop/restart | 开启/停止/重启 一个容器并使其在后台运行 |
kill | 杀掉一个容器进程 |
rm | 删除容器 |
create | 从镜像中创建一个容器 |
exec | 对一个容器执行shell命令 |
pause/unpause | 暂停容器/恢复暂停容器 |
attach | 链接正在运行的容器 |
2. 容器操作
命令 |
作用 |
ps | 列出容器 |
top | 查看正在运行中的容器进程信息 |
logs | 获取docker日志 |
port | 列出一个容器的端口映射情况 |
export | 将一个容器的文件系统打包至tar,但不会保留元数据(如环境变量、启动命令、卷等) |
import | 导入 tar 文件为新镜像 |
commit | 提交一个容器的文件系统,使之生成一个新的镜像 |
cp | 向一个正在运行的容器复制文件,或将容器中的文件复制出来 |
diff | 检查一个容器文件系统更改情况 |
inspect | 获取容器或镜像的元数据 |
events | 从docker服务器获取事件 |
wait | 让一个容器进入等待,使其进入阻塞状态 |
container | 管理已经运行的容器的 |
update | 更新容器 |
rename | 重命名容器 |
system df | 查看docker(容器/镜像/数据卷)磁盘占用情况 |
system prune -af | 可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及 dangling 镜像 |
3. 常用操作
示例 |
命令 |
启动容器 | docker run -it 镜像名 /bin/bash |
进入容器 | docker exec -it 容器名 bash |
运行容器 | docker run -d ubuntu:17.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" |
查看log信息 | docker logs 容器名 |
终止容器 | docker stop 容器名 |
导入导出容器 | 导入 tar 文件为新镜像 |
删除容器 | docker rm 容器ID或容器名 |
查询容器信息 | docker inspect [容器名] |
查看容器状态 | docker inspect -f [容器名] |
查看容器ip | docker inspect -f [容器名] |
查看docker占用的系统资源 | docker stats [容器名] |
二. 镜像
1. 镜像仓库
命令 |
作用 |
login | docker登入 docker login -u cn-north-4@HST3WDEEOB8E5CQJZCPX -p d7e83c824ef4a69e4ac363cfe9eb8fde312aa3c6ec0904a9f29e405308c867c6 swr.cn-north-4.myhuaweicloud.com |
logout | docker登出 docker logout swr.cn-north-4.myhuaweicloud.com |
pull | 拉取镜像 |
push | 推送镜像 |
search | 在docker hub上查询镜像 |
2. 本地镜像管理
命令 |
作用 |
images | 列出镜像 |
rmi | 修改本地某一镜像的标记,使其镜像属于某一仓库 |
tag | 修改本地某一镜像的标记,使其镜像属于某一仓库 |
import | 从tar中创建一个新镜像 |
build | 通过指定Dockerfile文件编译镜像 |
history | 查看镜像历史 |
save | 将制定镜像保存成tar文件 |
load | 从tar中恢复镜像 |
checkpoint | 设置checkpoint,类似于恢复点,可以让镜像撤销到曾经设置的某一个checkpoint上 |
image | docker镜像管理 |
manifest | docker镜像清单管理 |
trust | docker可信镜像管理 |
inspect | 查看镜像元数据 |
3. 获取镜像
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
docker pull ubuntu:16.04
4. 提交镜像
docker commit 容器ID或名称 镜像名称:标签
docker commit abc123 my_image:latest
5. 导入镜像
docker load < nginx.tar
6. 保存镜像
docker save > nginx.tar nginx:latest
7. 修改镜像名称
docker tag 旧镜像名 新镜像名
8. 清理镜像
docker system prune -af
9. 运行镜像
docker run -it --rm ubuntu:16.04 bash
10. 列出镜像
docker image ls
11. 查看docker资源占用空间
docker system df
12. 根据仓库名列出镜像
docker image ls ubuntu
13. 列出特定的某个镜像
docker image ls ubuntu:16.04
14. 删除本地镜像
docker image rm [选项] 镜像1 [镜像2…]
15. docker 定制镜像
docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=xxxxxx)
# 创建自己的镜像路径
在路径下touch Dockerfile
docker build [选项] 上下文路径/URL/-
docker build -t scrapy:v3 .
# 镜像构建上下文(Context)
1> ENV 设置环境变量
2> CMD 容器启动命令
3> ADD 更高级的复制文件
4> WORKDIR 指定工作目录,格式为 WORKDIR 工作目录路径
5> 列出所有在指定image 之后创建的image的父image: docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=xxx) # xxx image ID
6> 强制删除none镜像
# 查看none镜像
docker images | grep none
# 查看none镜像ID
docker images | grep none | awk '{print $3}'
# 强制删除none镜像
docker images | grep none | awk '{print $3}' |xargs docker rmi
16. docker update
docker update [OPTIONS] CONTAINER [CONTAINER...]
# 更新 CPU 共享数量, f361b7d8465 为 容器ID
docker update --cpu-shares 512 f361b7d8465
# 更新容器内存
docker update -m 500M f361b7d8465
# 更新容器的重启策略
Docker容器的重启策略如下:
no,默认策略,在容器退出时不重启容器
on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
docker update --restart=always f361b7d8465
名称 |
描述 |
--blkio-weight | 阻塞IO (相对权重),介于10到1000之间,0表示禁用(默认禁止)</i> |
--cpu-period | 限制CPU CFS(完全公平的调度程序)期限</i> |
--cpu-quota | 限制CPU CFS(完全公平的调度程序)配额 |
--cpu-rt-period | API 1.25+,将CPU实时时间限制为微秒 |
--cpu-rt-runtime | API 1.25+,将CPU实时运行时间限制为微秒 |
history | 查看镜像历史 |
--cpu-shares,-c | CPU份额(相对权重) |
--cpus | API 1.29+,CPU数量 |
--cpuset-cpus | 允许执行的CPU(0-3,0,1) |
--cpuset-mem | 允许执行的MEM(0-3,0,1) |
--kernel-memory | 内核内存限制 |
--memory-swap | 交换限制等于内存加交换,“-1”以启用无限交换 |
--memory-reservatio | 内存软限制 |
--memory,-m | 内存限制 |
--pids-limit | API 1.40+,调节容器pids限制(-1表示无限制) |
--restart | 容器退出时重新启动策略以应用 |
三. 数据卷
数据卷
1> 是一个可供一个或者多个容器使用的特殊目录它绕过 UFS,可以提供很多有用的特性:
a. 数据卷 可以在容器之间共享和重用
b.对 数据卷的修改会立马生效
c. 对 数据卷的更新不会影响镜像
d. 数据卷 默认会一直存在, 即使容器被删除
1. 查看所有的数据卷
docker volume ls
2. 创建一个数据卷
docker volume create [数据卷名称]
3. 以查看指定 数据卷 的信息
docker volume inspect my-vol
4. 启动一个挂载数据卷的容器
docker run -d -P --name web --mount source=my-vol,target=/webapp training/webapp python app.py
5. 删除数据卷
docker volume rm my-vol
6. 清理无主数据卷
docker volume prune
7. 挂载主机目录
docker run -p 28018:27017 -v /data/db:/data/db -d --name mongo_server mongo:3.4
8. 复用其他容器的数据卷
注:即使删除挂载了数据卷的容器(包括初始的容器和其他子容器), 复用的数据卷并不会被删除。 如果想删除该数据卷, 必须在删除最后一个引用该数据卷的时候调用docker rm -v 显示删除数据卷
#db1 的数据卷复用现有容器dbdata的数据卷, dbdata是容器名
docker run -d --volumes-from dbdata --name db1 taining/postgres
9. 备份数据卷
通过参数 --volumes-from 从数据卷挂载数据卷, 然后备份数据卷中的数据。/dbdata是容器内数据卷对应的目录。
docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backip.tar /dbdata
10. 备份、还原数据卷
可以利用数据卷容器来备份、恢复、迁移数据卷
将备份的数据恢复到原有的容器或者其他任何容器。 备份到新的容器
# 首先使用--volumes-from创建一个加载dbdata容器卷的容器,并从本地主机挂载当前到容器的/backup目录
docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
# 然后创建另一个容器,挂载 dbdata2 的容器,并使用 tar 解压备份文件到挂载的容器卷中。
docker run -v /dbdata -v $(pwd):/backup busybox tar xvf /backup/backup.tar
四. 手动联合挂载
mount -t overlay overlay -o lowerdir=/a,upperdir=/b,workdir=/work /c
五. XFS限额配置
uquota/usrquota/quota // 用户配额限制,usrquota (ext4),uquota (XFS)。quota:旧版 Linux 系统的通用配额选项(已逐渐淘汰)。
gquota/grpquota // 组配额限制,grpquota (ext4),gquota (XFS)
pquota/prjquota // 目录配额限制,不能与 grpquota 同时设定。prjquota(ext4),pquota(XFS)