【Docker】专题二:Docker 常用命令

2024-09-02 12:26:03 浏览数 (2)

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~

镜像操作命令

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          #清理缓存(低版本没有这个命令)

0 人点赞