Docker的使用

发布于:2024-10-17 ⋅ 阅读:(13) ⋅ 点赞:(0)

Docker 安装使用

docker

1. Docker 安装步骤:

  • Linux(以Ubuntu为例):

    sudo apt-get update
    sudo apt-get install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
    
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  • WindowsMacOS

    • 直接从Docker官网下载安装Docker Desktop。
  • 验证安装

    docker --version
    

2. Docker 基本命令:

  • 启动/停止 Docker 服务

    sudo systemctl start docker
    sudo systemctl stop docker
    
  • 查看 Docker 镜像

    docker images
    
  • 运行一个容器

    docker run -it ubuntu /bin/bash
    
  • 查看正在运行的容器

    docker ps
    
  • 停止一个容器

    docker stop <container_id>
    
  • 删除一个容器

    docker rm <container_id>
    
  • 删除一个镜像

    docker rmi <image_id>
    

自定义别名(alias)

在 Linux 中,你可以通过 自定义别名(alias) 的方式将较长的命令简化为你想要的短命令,比如将 docker ps 变成 dps,或将 docker images 变成 dis。这些自定义指令可以通过编辑用户的 shell 配置文件 来实现,比如 ~/.bashrc(如果使用 Bash)或 ~/.zshrc(如果使用 Zsh)。

步骤:如何自定义 Linux 命令别名

1. 创建临时别名

如果你只需要临时创建一个别名,可以直接在命令行中使用以下格式:

alias dps='docker ps'
alias dis='docker images'

这个别名只在当前终端会话中有效。一旦你关闭终端或注销,别名就会失效。

2. 创建永久别名

要让别名在每次登录时都有效,可以将别名保存到你的 shell 配置文件 中。常见的 shell 配置文件有:

  • 如果你使用 Bash,编辑 ~/.bashrc 文件。
  • 如果你使用 Zsh,编辑 ~/.zshrc 文件。
步骤:
  1. 打开 shell 配置文件:

    • 对于 Bash:

      nano ~/.bashrc
      
    • 对于 Zsh:

      nano ~/.zshrc
      
  2. 在文件末尾添加别名定义。例如:

    alias dps='docker ps'
    alias dis='docker images'
    
  3. 保存并退出编辑器(在 nano 中按 Ctrl + O 保存,Ctrl + X 退出)。

  4. 更新配置文件,使新添加的别名生效:

    • 对于 Bash:

      source ~/.bashrc
      
    • 对于 Zsh:

      source ~/.zshrc
      
3. 测试别名

现在你可以在终端中直接输入 dpsdis 来执行相应的 Docker 命令:

dps    # 等同于 'docker ps'
dis    # 等同于 'docker images'

注意事项

  1. 别名与已有命令冲突:确保你定义的别名不会与已有的系统命令冲突。比如 dps 是一个较短的命令,可能已经被其他应用使用,定义之前可以用以下命令检查它是否已被占用:

    which dps
    
  2. 移除别名:如果你想删除某个别名,只需要在配置文件中找到对应的 alias 行并删除,然后重新加载配置文件(source ~/.bashrcsource ~/.zshrc)。

  3. 复杂别名:如果你的命令较为复杂,可以使用带参数的别名。注意带参数的命令使用时需要用单引号来封装整个命令,且参数要正确引用。


通过这种方式,你可以方便地为常用的长命令创建短命令,从而提高工作效率。

Docker Compose 使用总结

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。你可以使用一个 YAML 文件来定义应用程序的服务,然后用一个命令创建并启动所有服务。

1. 安装 Docker Compose:

Docker Desktop 内置了 docker-compose,如果单独使用 Docker,安装步骤如下:

  • Linux

    sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
  • 验证安装

    docker-compose --version
    

2. 使用 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
    
  • 后台运行

    docker-compose up -d
    
  • 停止服务

    docker-compose down
    

Docker Compose 优势

  • 简化多容器应用的管理。
  • 容易定义依赖关系,如数据库、缓存等。
  • 通过一个配置文件管理服务、网络、卷等。

Dockerfile 使用总结

Dockerfile 是用于构建 Docker 镜像的脚本文件,它包含了镜像的基础设置、环境配置和软件安装步骤。

1. Dockerfile 基本结构:

  • 示例:
    # 选择基础镜像
    FROM node:18
    
    # 设置工作目录
    WORKDIR /app
    
    # 复制当前目录下的文件到容器中
    COPY . .
    
    # 安装依赖
    RUN npm install
    
    # 暴露端口
    EXPOSE 3000
    
    # 启动命令
    CMD ["npm", "start"]
    

2. 构建 Docker 镜像:

docker build -t my-node-app .

3. 运行镜像:

docker run -p 3000:3000 my-node-app

Dockerfile 优势

  • 每次构建都保证相同的环境。
  • 可重用,团队成员可以通过相同的 Dockerfile 快速创建一致的开发或生产环境。
  • 支持缓存,加快构建速度。

Docker Compose 和 Dockerfile 对比

  • Dockerfile:专注于构建单个服务的镜像,定义了如何构建一个容器的步骤。常用于项目的开发、测试或生产环境的标准化构建。

  • Docker Compose:用于管理多个容器,特别是在微服务架构中。通过 docker-compose.yml 文件,简化了多个容器的启动、停止和管理。可以指定容器间的依赖关系。

应用场景对比

  • Dockerfile:通常用来构建单个应用的基础镜像,适用于持续集成和持续部署的场景。
  • Docker Compose:适用于需要运行多个相互依赖的服务,比如前后端分离的应用、数据库、缓存等,适合在开发或本地测试时使用。

Docker Compose

Docker Compose 配置文件(docker-compose.yml)使用 YAML 格式来定义多容器应用。通过它可以描述应用中的各个服务、网络、卷等。以下是 Docker Compose 配置文件中的主要语法和关键字段。

基本结构

version: '3' # 定义Compose文件的版本
services:    # 定义服务
  web:       # 服务名称
    image: nginx     # 使用的镜像
    ports:           # 映射端口
      - "8080:80"    # 宿主机端口:容器内部端口
    volumes:         # 挂载卷
      - ./data:/var/www/html  # 宿主机路径:容器路径
    environment:     # 定义环境变量
      - NGINX_HOST=localhost
      - NGINX_PORT=80
  db:                # 另一个服务
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db_data:/var/lib/mysql

volumes:   # 定义数据卷
  db_data:

version 版本

  • version 字段指定 Compose 文件的版本,不同版本支持的语法有所不同。推荐使用较新的 version: '3' 或以上版本。

services 服务

services 字段用来定义应用的各个服务(容器),每个服务可以独立配置。

  • image:指定要使用的 Docker 镜像,可以是官方镜像或自定义镜像。例如 image: nginx

  • build:用来指定 Dockerfile 路径来构建镜像:

    build: ./app  # 指定目录包含Dockerfile
    
  • ports:映射宿主机端口和容器端口。格式为 "宿主机端口:容器端口"

    ports:
      - "8080:80"
    
  • volumes:映射宿主机的目录到容器内的目录:

    volumes:
      - ./data:/var/www/html
    
  • environment:定义环境变量,格式为 KEY=VALUE

    environment:
      - MYSQL_ROOT_PASSWORD=example
    
  • command:覆盖容器启动时的默认命令:

    command: ["npm", "start"]
    
  • depends_on:指定服务的依赖关系,确保按顺序启动。

    depends_on:
      - db
    
  • networks:指定服务的网络配置:

    networks:
      - frontend
      - backend
    

volumes

volumes 字段用于定义全局的数据卷。数据卷可以在多个服务之间共享,或者用于持久化存储。

volumes:
  db_data:  # 名字可以自定义

networks 网络

networks 字段用来定义服务间的网络。Compose 默认会为服务创建一个网络,也可以手动定义多个网络。

networks:
  frontend:
  backend:

完整的示例

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      - ./data:/var/www/html
    depends_on:
      - db
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80
    networks:
      - frontend
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - backend

volumes:
  db_data:

networks:
  frontend:
  backend:

常用字段解释

  • restart:指定容器的重启策略(如 always, on-failure, no):

    restart: always
    
  • extra_hosts:为容器添加自定义的 hosts 映射:

    extra_hosts:
      - "myapp.local:127.0.0.1"
    
  • healthcheck:配置容器的健康检查:

    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 1m30s
      timeout: 10s
      retries: 3
    

Docker Compose 常用命令

  • 启动服务

    docker-compose up
    
  • 后台启动

    docker-compose up -d
    
  • 停止服务

    docker-compose down
    
  • 查看日志

    docker-compose logs
    
  • 列出服务

    docker-compose ps
    

通过 Docker Compose,能够快速定义、部署和管理复杂的多容器应用,在开发和测试中非常高效。