Docker与Docker Compose速查

发布 | 2024-10-25 | Tools

以下是完整的Docker和Docker Compose学习笔记,特别详细地涵盖了Docker Compose的安装、使用、构建、网络配置、数据卷等内容。


Linux安装Docker

  • 更新包索引

    sudo apt-get update
  • 安装必要的包

    sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        software-properties-common
  • 添加Docker的官方GPG密钥

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • 添加Docker的稳定版本仓库

    sudo add-apt-repository \
        "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
        $(lsb_release -cs) \
        stable"
  • 安装Docker

    sudo apt-get update
    sudo apt-get install docker-ce

启动和管理Docker服务

  • 启动Docker

    sudo systemctl start docker
  • 设置开机自启

    sudo systemctl enable docker
  • 检查Docker状态

    sudo systemctl status docker

国内换源

为了提高Docker Hub的下载速度,可以使用国内镜像源。

  • 修改Docker配置文件(通常在 /etc/docker/daemon.json

    {
        "registry-mirrors": ["https://<your_mirror>.mirror.aliyuncs.com"]
    }
  • 重启Docker服务

    sudo systemctl restart docker

常用Docker命令

基本命令

  • 查看Docker版本

    docker --version
  • 拉取镜像

    docker pull <image_name>
  • 列出本地镜像

    docker images
  • 删除镜像

    docker rmi <image_name>

容器管理

  • 运行容器

    docker run -d --name <container_name> <image_name>
  • 列出运行中的容器

    docker ps
  • 列出所有容器

    docker ps -a
  • 停止容器

    docker stop <container_name>
  • 启动容器

    docker start <container_name>
  • 删除容器

    docker rm <container_name>

其他实用命令

  • 进入容器

    docker exec -it <container_name> /bin/bash
  • 查看容器日志

    docker logs <container_name>

Docker Compose

安装Docker Compose V2

Docker Compose V2已集成到Docker CLI中,可以通过以下步骤安装:

  • 下载并安装

    sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/libexec/docker/cli-plugins/docker-compose
  • 添加执行权限

    sudo chmod +x /usr/libexec/docker/cli-plugins/docker-compose
  • 验证安装

    docker compose version

创建docker-compose.yml文件

docker-compose.yml文件用于定义服务、网络和数据卷等。以下是一个详细示例:

version: '3.8'  # 指定Compose文件版本

services:  # 定义服务
  web:
    image: nginx:latest  # 使用Nginx镜像
    ports:
      - "80:80"  # 映射端口
    volumes:
      - ./html:/usr/share/nginx/html  # 将本地html目录挂载到容器
    networks:
      - webnet  # 使用自定义网络

  db:
    image: postgres:latest  # 使用PostgreSQL镜像
    environment:  # 定义环境变量
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - db_data:/var/lib/postgresql/data  # 持久化数据库数据
    networks:
      - webnet

networks:  # 定义自定义网络
  webnet:

volumes:  # 定义数据卷
  db_data:

Docker Compose常用命令

启动和停止服务

  • 启动服务
    启动在docker-compose.yml中定义的所有服务,并在后台运行。

    docker compose up -d
  • 停止服务
    停止运行的服务并移除容器,但保留数据卷。

    docker compose down
  • 停止并删除所有服务和网络

    docker compose down --volumes

查看状态和日志

  • 查看服务状态
    列出当前正在运行的服务及其状态。

    docker compose ps
  • 查看服务日志
    查看所有服务的输出日志。

    docker compose logs
  • 查看特定服务的日志

    docker compose logs <service_name>

其他常用命令

  • 执行命令
    在指定服务的容器中执行命令,例如进入web服务的容器。

    docker compose exec web /bin/bash
  • 构建服务
    根据Dockerfile构建服务,可以使用以下命令:

    docker compose build
    • 强制重新构建
      如果需要强制重新构建(例如,修改了Dockerfile),可以使用--no-cache选项:
    docker compose build --no-cache
  • 查看构建信息

    docker compose build --progress=plain
  • 缩放服务
    启动指定数量的容器。例如,启动2个web服务实例。

    docker compose up -d --scale web=2

更新服务

  • 重新启动服务
    仅重启指定的服务。

    docker compose restart <service_name>
  • 更新服务
    拉取新版本的镜像并更新服务。

    docker compose pull
    docker compose up -d

网络配置

docker-compose.yml中定义的网络可以通过以下方式使用:

  • 自定义网络

    networks:
      my_custom_network:
        driver: bridge  # 使用桥接网络
  • 在服务中引用网络

    services:
      my_service:
        networks:
          - my_custom_network

数据卷

使用数据卷可以持久化容器中的数据:

  • docker-compose.yml中定义数据卷

    volumes:
      my_volume:
  • 在服务中使用数据卷

    services:
      my_service:
        volumes:
          - my_volume:/data  # 将数据卷挂载到容器中的/data路径

标签
没有标签

© 著作权归作者所有

本文由 趣代码Blog 创作,采用 知识共享署名4.0 国际许可协议进行许可,本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。

吐槽一下吧

*选项为必填