Docker 命令

Docker服务相关命令

Docker 采用客户端-服务器架构。Docker 守护进程(dockerd) 负责管理容器、镜像、网络等核心资源。在 Linux 系统中(如 CentOS 9),通常通过 systemd 来管理 Docker 服务。

  1. 服务状态管理

    1. 启动 Docker 服务

      sudo systemctl start docker
      
    2. 停止 Docker 服务

      sudo systemctl stop docker
      
    3. 重启 Docker 服务

      sudo systemctl restart docker
      
    4. 查看 Docker 服务状态

      sudo systemctl status docker
      
    5. 设置开机自启

      sudo systemctl enable docker
      
    6. 禁止开机自启

      sudo systemctl disable docker
      
    7. 重新加载配置(不重启,仅重新加载 daemon.json)或发送 HUP 信号

      # 重新加载配置
      sudo systemctl reload docker
      

Docker镜像相关命令

  1. 查看镜像(列出本地主机上的镜像)

    sudo docker images
    
    image-20260317125416720

    各个列说明

    • image:镜像的名称和标签,格式为 仓库名:标签。例如hello-world:latest
    • ID:镜像的唯一标识符(前 12 位),通常为 SHA256 哈希值的一部分。
    • DISK USAGE:该镜像实际占用的磁盘空间,包含镜像分层与元数据。
    • CONTENT SIZE:镜像的实际内容大小(即压缩后用于分发的体积),通常小于 DISK USAGE
    • EXTRA:略
  2. 搜索镜像

    # 搜索镜像
    sudo docker search <镜像名称>
    
    • 问题:执行 docker search 报错 connection refused
    • 原因:docker search 命令的设计逻辑:无论是否配置镜像源,它都会先尝试访问 Docker Hub 官方接口,这是 Docker 官方的默认行为,镜像加速器无法覆盖这个逻辑。
    • 解决方案:用Docker官网或国内镜像站替代搜索(查版本)
  3. 下载镜像

    # 下载镜像
    sudo docker pull <镜像名称>
    # 下载对应版本镜像
    sudo docker pull <镜像名称>:<版本号>
    
  4. 删除镜像

    sudo docker rmi <ID>
    sudo docker rmi<镜像名称>:<版本号>
    
    image-20260316035121097

    注意:如出现相同ID的镜像,本质上他们的版本是一致的。


Docker容器相关命令

创建容器

# 核心命令
sudo docker run [选项] 镜像名[:标签] [命令] [参数]
  • 常用选项

    选项 作用 示例
    -it 分配交互式终端(通常用于进入容器内部)(交互式) docker run -it ubuntu bash
    -d 后台运行容器(守护式) docker run -d nginx
    --name 指定容器名称(必须唯一) docker run --name mynginx nginx
    -e 设置环境变量 docker run -e MYSQL_ROOT_PASSWORD=123456 mysql
    -p 端口映射:宿主机端口:容器端口 docker run -p 8080:80 nginx
    -v 挂载数据卷:宿主机目录:容器目录 docker run -v /data:/app/data nginx
    --rm 容器停止后自动删除 docker run --rm -it ubuntu bash
    --restart 设置重启策略(always/on-failure/no) docker run --restart always nginx
  • --name选项的命名规则

    • 只允许使用字母、数字、下划线、点、短横线
    • 必须以字母或数字开头,不能以符号开头。
    • 示例:my-app_1.0mysql57test.container 都是合法的。
    • 错误示例:第一个mysql容器(包含中文)、-test(以短横线开头)。
  • 示例1

    # 创建一个centos7容器,取名为centos7,分配交互式终端(示例)
    sudo docker run -it --name=centos7 centos:7 /bin/bash
    
    • 进入容器后,可以执行 Linux 命令。
    • 输入 exit 或按 Ctrl+D 退出,容器会停止(因为主进程 bash 结束)。
  • 示例2

    sudo docker run -id --name=centos7.0 centos:7
    
    • 容器启动后立即返回终端,不会进入容器内部
    • docker exec进入后,输入 exit 或按 Ctrl+D 退出,容器不会停止(只会结束这个额外进程,不会影响容器的主进程)。

查看容器

# 查看所有容器(运行中的)
sudo docker ps
# 查看所有容器(包括已停止的)
sudo docker ps -a
# 查看所有容器的ID(包括已停止的)
sudo docker ps -aq
image-20260317144158086

各个列说明

  • CONTAINER ID:容器的唯一标识符(前12位),由Docker自动生成。可通过此ID管理容器(如启动、停止、删除)。
  • IMAGE:创建该容器所使用的镜像名称及标签。
  • COMMAND:容器启动时运行的命令。这里是 /bin/bash,表示启动了一个bash shell。由于没有使用 -d 后台运行,容器运行bash后等待用户交互,当退出bash时容器停止。
  • CREATED:容器创建时间(相对时间)。
  • STATUS:容器当前状态(Up 运行中,Exited 已退出)。
  • PORTS:容器的端口映射信息。
  • NAMES:容器的名称。

进入容器

# docker exec方式
# docker exec [选项] 容器名 命令
sudo docker exec -it centos7.0 bash
# docker attach方式
# docker attach 容器名
sudo docker attach centos7.0

区别

  • docker exec方式:在容器内启动新进程(如新 bash),与容器主进程隔离,退出新进程(如 exit)不会影响容器,容器继续运行。
  • docker attach方式:连接到容器主进程的标准输入、输出和错误,退出(如 Ctrl+Cexit)可能终止主进程,导致容器停止。

启动容器

sudo docker start 容器名
image-20260317200359470

停止容器

sudo docker stop 容器名
image-20260317200213455

删除容器

# 删除指定容器
sudo docker rm 容器名
# 删除所有容器
sudo docker rm `sudo docker ps -aq`
  • 注意:只能删除状态为已关闭的容器。
image-20260317200746158

查看容器信息

sudo docker inspect 容器名
image-20260317201213876
posted @ 2026-03-17 20:17  克峰同学  阅读(3)  评论(0)    收藏  举报