镜像操作命令

1、登录镜像仓库

docker login -u "用户名" -p "用户密码" "镜像仓库地址"

2、从仓库下载镜像

docker pull <镜像名称或镜像ID>
# 示例:docker pull docker.io/nginx:1.21
# <镜像名称>格式一般为:<镜像仓库地址>/<仓库名称>:<标签>
# --platform:指定镜像架构,如 amd64、arm64 等

3、修改镜像名称

docker tag <原镜像名称> <新镜像名称>
# 示例:docker tag docker.io/nginx:1.21 local.hub/nginx-demo:1.21-xxx


4、推送镜像至仓库

docker push <镜像名称>
# 示例:docker push local.hub/nginx-demo:1.21-xxx


5、构建镜像

docker build -t <镜像名称> -f <Dockerfile> <构建上下文>
# -t:指定镜像名称
# -f:指定 Dockerfile 文件


6、从本地文件导入镜像

docker load < demo.tar 或 demo.tgz
docker load -i demo.tar 或 demo.tgz


7、导出镜像至本地文件

docker save <镜像名称> > demo.tar
docker save <镜像名称> -o demo.tar
docker save <镜像名称> | gzip > demo.tgz


8、查看本地镜像列表

docker image ls
docker images


9、删除本地镜像

docker rmi -f <镜像名称或镜像ID>


10、查看镜像历史

docker history <镜像名称或ID>
# --no-trunc:显示完整构建记录

容器操作命令

1、运行容器

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、重启容器

docker restart <容器名称或容器ID>

3、停止容器

docker stop <容器名称或容器ID>


4、查看容器列表

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、查看容器进程

docker top <容器名称或容器ID>


6、查看容器资源使用情况

docker stats
# --no-stream:只输出一次结果,非连续显示


7、查看容器日志

docker logs -f <容器名称或容器ID>
# -f:刷新实时日志


8、查看容器实时事件

docker events --since/--until "过滤条件"
# 过滤条件可以为日期、时间、h、m、s


9、查看容器元信息

docker inspect --format '{{ json .State.Status }}' <容器名或容器ID>


10、删除容器

docker rm -f <容器名称或容器ID>


11、将容器打包成镜像


docker commit -a "作者信息" -m "摘要信息" <容器名称> <镜像名称>
# 实质:保存容器的最终状态
# 缺点:无法打包映射目录的内容;存在冗余数据


12、进入容器

docker exec -it <容器名或容器ID> bash
 
# 不进入容器执行命令(在脚本中、crontab中需要去掉-i或-t)
docker exec -it <容器名或容器ID> bash -c '命令'

网络操作命令
1、查看容器网络

docker network ls

2、创建容器网络

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、删除容器网络

docker network rm <网络名称>


4、查看容器网络元信息

docker network inspect <网络名称>

5、新增网络关联

docker network connect <网络名称> <容器名或容器ID>


6、删除网络关联

docker network disconnect -f <网络名称> <容器名或容器ID>

数据卷操作命令

1、查看数据卷

docker volume ls

2、创建数据卷

docker volume create my-vol

3、删除数据卷

docker volume rm my-vol


4、查看数据卷元信息

docker volume inspect my-vol


其它操作命令

1、查看 Docker 信息

docker info

2、查看占用空间

# 查看镜像、容器、数据卷占用的空间
docker system df

3、清理数据

# 全面清理镜像、容器、网络、缓存
docekr system prune -a -f
# -a 或 --all:可以一并清除所有未使用的镜像和悬空镜像
# -f 或 --force:用以忽略相关告警确认信息
# 等价于以下的合集:
docker image prune            #清理镜像
docker container prune        #清理容器
docker network prune          #清理网络
docker builder prune          #清理缓存(低版本没有这个命令)