以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!
如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~
镜像操作命令
1、登录镜像仓库
代码语言:javascript复制docker login -u "用户名" -p "用户密码" "镜像仓库地址"
2、从仓库下载镜像
代码语言:javascript复制docker pull <镜像名称或镜像ID>
# 示例:docker pull docker.io/nginx:1.21
# <镜像名称>格式一般为:<镜像仓库地址>/<仓库名称>:<标签>
# --platform:指定镜像架构,如 amd64、arm64 等
3、修改镜像名称
代码语言:javascript复制docker tag <原镜像名称> <新镜像名称>
# 示例:docker tag docker.io/nginx:1.21 local.hub/nginx-demo:1.21-xxx
4、推送镜像至仓库
代码语言:javascript复制docker push <镜像名称>
# 示例:docker push local.hub/nginx-demo:1.21-xxx
5、构建镜像
代码语言:javascript复制docker build -t <镜像名称> -f <Dockerfile> <构建上下文>
# -t:指定镜像名称
# -f:指定 Dockerfile 文件
6、从本地文件导入镜像
代码语言:javascript复制docker load < demo.tar 或 demo.tgz
docker load -i demo.tar 或 demo.tgz
7、导出镜像至本地文件
代码语言:javascript复制docker save <镜像名称> > demo.tar
docker save <镜像名称> -o demo.tar
docker save <镜像名称> | gzip > demo.tgz
8、查看本地镜像列表
代码语言:javascript复制docker image ls
docker images
9、删除本地镜像
代码语言:javascript复制docker rmi -f <镜像名称或镜像ID>
10、查看镜像历史
代码语言:javascript复制docker history <镜像名称或ID>
# --no-trunc:显示完整构建记录
容器操作命令
1、运行容器
代码语言:javascript复制docker run -itd -v <主机目录或数据卷>:<容器目录>:<权限> <镜像名称> bash
# -i:允许交互
# -t:打开终端
# -d:后台运行
# -v:指定主机与容器的目录映射,默认权限是读写rw
# -p:指定主机与容器的端口映射,格式为:主机端口:容器端口/IP
# -e:指定环境变量,格式为:key=value
# --name:指定容器名称
# --env-file:指定配置文件
# --add-host:向容器的/etc/hosts文件中添加host解析,格式为:"HOST:IP"
2、重启容器
代码语言:javascript复制docker restart <容器名称或容器ID>
3、停止容器
代码语言:javascript复制docker stop <容器名称或容器ID>
4、查看容器列表
代码语言:javascript复制docker container ls
docker ps
# -a:显示所有状态的容器
# -q:仅显示容器ID
# -s:显示容器文件大小,等价于
## docker ps --format '{{.Names}}t{{.Size}}'
## docker ps —-format 'table {{json .Names}}t{{json .Size}}'
5、查看容器进程
代码语言:javascript复制docker top <容器名称或容器ID>
6、查看容器资源使用情况
代码语言:javascript复制docker stats
# --no-stream:只输出一次结果,非连续显示
7、查看容器日志
代码语言:javascript复制docker logs -f <容器名称或容器ID>
# -f:刷新实时日志
8、查看容器实时事件
代码语言:javascript复制docker events --since/--until "过滤条件"
# 过滤条件可以为日期、时间、h、m、s
9、查看容器元信息
代码语言:javascript复制docker inspect --format '{{ json .State.Status }}' <容器名或容器ID>
10、删除容器
代码语言:javascript复制docker rm -f <容器名称或容器ID>
11、将容器打包成镜像
代码语言:javascript复制docker commit -a "作者信息" -m "摘要信息" <容器名称> <镜像名称>
# 实质:保存容器的最终状态
# 缺点:无法打包映射目录的内容;存在冗余数据
12、进入容器
代码语言:javascript复制docker exec -it <容器名或容器ID> bash
# 不进入容器执行命令(在脚本中、crontab中需要去掉-i或-t)
docker exec -it <容器名或容器ID> bash -c '命令'
网络操作命令
1、查看容器网络
代码语言:javascript复制docker network ls
2、创建容器网络
代码语言:javascript复制docker network create --driver bridge --subnet xx.xx.xx.xx/xx --gateway xx.xx.xx.1 <网络名称>
# 自动创建的默认网段为172.18.0.0/16
# --driver:指定网络模式,包括 bridge(网桥模式)、host(主机模式)、container(容器模式)和 none
# --subnet:指定网段
# --gateway:指定网关
3、删除容器网络
代码语言:javascript复制docker network rm <网络名称>
4、查看容器网络元信息
代码语言:javascript复制docker network inspect <网络名称>
5、新增网络关联
代码语言:javascript复制docker network connect <网络名称> <容器名或容器ID>
6、删除网络关联
代码语言:javascript复制docker network disconnect -f <网络名称> <容器名或容器ID>
数据卷操作命令
1、查看数据卷
代码语言:javascript复制docker volume ls
2、创建数据卷
代码语言:javascript复制docker volume create my-vol
3、删除数据卷
代码语言:javascript复制docker volume rm my-vol
4、查看数据卷元信息
代码语言:javascript复制docker volume inspect my-vol
其它操作命令
1、查看 Docker 信息
代码语言:javascript复制docker info
2、查看占用空间
代码语言:javascript复制# 查看镜像、容器、数据卷占用的空间
docker system df
3、清理数据
代码语言:javascript复制# 全面清理镜像、容器、网络、缓存
docekr system prune -a -f
# -a 或 --all:可以一并清除所有未使用的镜像和悬空镜像
# -f 或 --force:用以忽略相关告警确认信息
# 等价于以下的合集:
docker image prune #清理镜像
docker container prune #清理容器
docker network prune #清理网络
docker builder prune #清理缓存(低版本没有这个命令)