Docker 安装与使用手册

125 阅读1分钟

Docker 安装与使用手册

目录

  1. Docker 简介

  2. Docker 安装

  3. Docker 基本指令

  4. Docker Compose 使用

  5. 常见问题与解决方案

  6. 参考资料


Docker 简介

Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。Docker 容器与虚拟机类似,但容器更加轻量级,且性能开销更小。


Docker 安装

Ubuntu/Debian 系统

  1. 更新系统包

    bash

    复制

    sudo apt-get update
    sudo apt-get upgrade -y
    
  2. 安装依赖包

    bash

    复制

    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
    
  3. 添加 Docker 官方 GPG 密钥

    bash

    复制

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
  4. 添加 Docker 仓库

    bash

    复制

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

    bash

    复制

    sudo apt-get update
    sudo apt-get install -y docker-ce
    
  6. 启动 Docker 服务

    bash

    复制

    sudo systemctl start docker
    sudo systemctl enable docker
    
  7. 验证安装

    bash

    复制

    sudo docker --version
    

CentOS/RHEL 系统

  1. 更新系统包

    bash

    复制

    sudo yum update -y
    
  2. 安装依赖包

    bash

    复制

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
  3. 添加 Docker 仓库

    bash

    复制

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  4. 安装 Docker

    bash

    复制

    sudo yum install -y docker-ce
    
  5. 启动 Docker 服务

    bash

    复制

    sudo systemctl start docker
    sudo systemctl enable docker
    
  6. 验证安装

    bash

    复制

    sudo docker --version
    

Docker 基本指令

镜像操作

  1. 拉取镜像

    bash

    复制

    docker pull <镜像名>:<标签>
    

    示例:

    bash

    复制

    docker pull ubuntu:20.04
    
  2. 列出本地镜像

    bash

    复制

    docker images
    
  3. 删除镜像

    bash

    复制

    docker rmi <镜像ID或镜像名>
    
  4. 构建镜像

    bash

    复制

    docker build -t <镜像名>:<标签> <Dockerfile路径>
    

    示例:

    bash

    复制

    docker build -t myapp:1.0 .
    

容器操作

  1. 运行容器

    bash

    复制

    docker run [选项] <镜像名>:<标签>
    

    示例:

    bash

    复制

    docker run -it ubuntu:20.04 /bin/bash
    
  2. 列出运行中的容器

    bash

    复制

    docker ps
    
  3. 列出所有容器(包括停止的)

    bash

    复制

    docker ps -a
    
  4. 停止容器

    bash

    复制

    docker stop <容器ID或容器名>
    
  5. 启动已停止的容器

    bash

    复制

    docker start <容器ID或容器名>
    
  6. 删除容器

    bash

    复制

    docker rm <容器ID或容器名>
    
  7. 进入运行中的容器

    bash

    复制

    docker exec -it <容器ID或容器名> /bin/bash
    
  8. 查看容器日志

    bash

    复制

    docker logs <容器ID或容器名>
    

网络操作

  1. 列出网络

    bash

    复制

    docker network ls
    
  2. 创建网络

    bash

    复制

    docker network create <网络名>
    
  3. 连接容器到网络

    bash

    复制

    docker network connect <网络名> <容器ID或容器名>
    
  4. 断开容器与网络的连接

    bash

    复制

    docker network disconnect <网络名> <容器ID或容器名>
    

数据卷操作

  1. 创建数据卷

    bash

    复制

    docker volume create <卷名>
    
  2. 列出数据卷

    bash

    复制

    docker volume ls
    
  3. 删除数据卷

    bash

    复制

    docker volume rm <卷名>
    
  4. 挂载数据卷到容器

    bash

    复制

    docker run -v <卷名>:<容器内路径> <镜像名>:<标签>
    

Docker Compose 使用

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过 docker-compose.yml 文件,可以配置应用的各个服务、网络和卷。

  1. 安装 Docker Compose

    bash

    复制

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
  2. 编写 docker-compose.yml 文件

    yaml

    复制

    version: '3'
    services:
      web:
        image: nginx
        ports:
          - "80:80"
      db:
        image: mysql
        environment:
          MYSQL_ROOT_PASSWORD: example
    
  3. 启动服务

    bash

    复制

    docker-compose up -d
    
  4. 停止服务

    bash

    复制

    docker-compose down
    

常见问题与解决方案

  1. Docker 容器无法启动

    • 检查容器日志:docker logs <容器ID>
    • 确保端口未被占用,或修改端口映射。
  2. Docker 镜像拉取失败

    • 检查网络连接。
    • 尝试更换镜像源。
  3. Docker 容器内无法访问外部网络

    • 检查 Docker 网络配置。
    • 确保防火墙未阻止 Docker 的网络流量。