Administrator
Published on 2025-02-28 / 10 Visits
0

docker常用命令

1. Docker 镜像管理

1.1 构建 Docker 镜像

  • 命令docker build

  • 目的:从 Dockerfile 构建一个新的 Docker 镜像。

  • 示例

    docker build -t my-app .
    

    解释:从当前目录(包含 Dockerfile)构建一个名为 my-app 的镜像。

  • 注意事项

    • 确保 Dockerfile 格式正确。
    • 使用 -t 标签指定镜像名称。

1.2 列出 Docker 镜像

  • 命令docker images

  • 目的:查看本地 Docker 镜像列表。

  • 示例

    docker images
    

    输出示例:

    REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
    my-app              latest    a2b5c6d8d2b9   2 days ago      500MB
    

1.3 删除 Docker 镜像

  • 命令docker rmi

  • 目的:删除本地 Docker 镜像。

  • 示例

    docker rmi my-app
    

1.4 推送和拉取 Docker 镜像

  • 命令docker pull, docker push
  • 目的:从 Docker Hub 拉取镜像,或将镜像推送到 Docker Hub。
  • 示例
    • 拉取镜像:docker pull nginx
    • 推送镜像:docker push my-app

2. Docker 容器管理

2.1 启动容器

  • 命令docker run

  • 目的:启动一个新的 Docker 容器。

  • 示例

    docker run -d -p 8080:80 nginx
    

    解释:以后台模式启动 nginx 容器,并将容器的 80 端口映射到宿主机的 8080 端口。

2.2 列出容器

  • 命令docker ps

  • 目的:列出当前正在运行的容器。

  • 示例

    docker ps
    

    输出示例:

    CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                  NAMES
    a2b5c6d8d2b9   nginx     "/docker-entrypoint.…"   2 hours ago      Up 2 hours      0.0.0.0:8080->80/tcp   webserver
    

2.3 停止容器

  • 命令docker stop
  • 目的:停止一个正在运行的容器。
  • 示例
    docker stop <container-id>
    

2.4 删除容器

  • 命令docker rm
  • 目的:删除一个已停止的容器。
  • 示例
    docker rm <container-id>
    

2.5 查看容器日志

  • 命令docker logs
  • 目的:查看容器的输出日志。
  • 示例
    docker logs <container-id>
    

3. Docker 网络管理

3.1 查看 Docker 网络

  • 命令docker network ls

  • 目的:列出当前 Docker 主机上的所有网络。

  • 示例

    docker network ls
    

    输出示例:

    NETWORK ID     NAME      DRIVER    SCOPE
    0a4f842ed9c1   bridge    bridge    local
    5cfedff9fb64   host      host      local
    6a8fe51f3b1b   none      null      local
    
  • 注意事项

    • Docker 默认创建了 3 种网络:bridgehostnonebridge 是默认的网络模式,host 共享主机的网络栈,none 则没有网络连接。

3.2 创建自定义网络

  • 命令docker network create

  • 目的:创建一个自定义网络,可以指定网络驱动(如 bridgeoverlay)。

  • 示例:

    docker network create --driver bridge my_custom_network
    
  • 解释

    • --driver:指定网络驱动类型,常用的有 bridge(默认)、hostoverlay 等。
    • my_custom_network:网络名称。

3.3 连接容器到网络

  • 命令docker network connect

  • 目的:将运行中的容器连接到指定的网络。

  • 示例

    docker network connect my_custom_network <container-id>
    

3.4 断开容器与网络的连接

  • 命令docker network disconnect

  • 目的:将容器从网络中断开。

  • 示例:

    docker network disconnect my_custom_network <container-id>
    

3.5 删除网络

  • 命令docker network rm

  • 目的:删除一个不再需要的网络。

  • 示例:

    docker network rm my_custom_network
    

4. Docker 数据卷管理

4.1 创建数据卷

  • 命令docker volume create
  • 目的:创建一个持久化数据的卷。
  • 示例
    docker volume create my_volume
    

4.2 挂载卷到容器

  • 命令docker run -v
  • 目的:将数据卷挂载到容器内。
  • 示例
    docker run -d -v my_volume:/data my-app
    

4.3 查看卷

  • 命令docker volume ls
  • 目的:列出所有数据卷。
  • 示例
    docker volume ls
    

4. Docker 数据卷管理

4.1 创建数据卷

  • 命令docker volume create
  • 目的:创建一个持久化存储的数据卷,用于容器的数据保存。
  • 示例
    docker volume create my_volume
    
  • 注意事项
    • **Docker 会在默认的卷路径 **/var/lib/docker/volumes/ 中创建卷,但你也可以指定卷的位置。
    • 卷用于持久化数据,即使容器被删除,数据依然保留。

4.2 挂载卷到容器

  • 命令docker run -v

  • 目的:将卷挂载到容器的指定路径,便于容器之间共享数据。

  • 示例

    docker run -d -v my_volume:/data my-app
    

    解释:将 my_volume 挂载到容器内的 /data目录,容器可以在该目录中读写数据。

4.3 查看卷

  • 命令docker volume ls

  • 目的:列出当前 Docker 主机上的所有数据卷。

  • 示例:

    docker volume ls
    

4.4 删除卷

  • 命令docker volume rm

  • 目的:删除不再使用的数据卷。

  • 示例

    docker volume rm my_volume
    
  • 注意事项

    • 删除数据卷前,确保没有容器在使用该卷,否则无法删除。

4.5 查看卷的详细信息

  • 命令docker volume inspect

  • 目的:查看数据卷的详细信息,如挂载路径等。

  • 示例

    docker volume inspect my_volume
    

    输出示例:

    [
      {
        "CreatedAt": "2025-02-24T12:34:56Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/my_volume/_data",
        "Name": "my_volume",
        "Scope": "local"
      }
    ]
    

5. Docker 容器间通信

5.1 使用 Docker Compose 管理多容器应用

  • 命令docker-compose
  • 用途:用于管理和启动多容器的应用。
  • 示例
    • docker-compose.yml 示例:
      version: '3'
      services:
        web:
          image: nginx
          ports:
            - "8080:80"
        db:
          image: mysql
          environment:
            MYSQL_ROOT_PASSWORD: example
      
    • 启动服务
      docker-compose up -d
      

6. Docker 性能监控

6.1 查看容器资源使用

  • 命令docker stats
  • 目的:实时查看容器的 CPU、内存、网络等资源使用情况。
  • 示例
    docker stats