Skip to content

Docker

1. 简介

Docker 是一个开源的容器化平台,允许开发者打包应用及其依赖项到一个轻量级、可移植的容器中,然后在任何支持 Docker 的环境中运行。

2. 安装

2.1 CentOS 安装

bash
# 1. 安装依赖项
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 2. 添加 Docker 的软件仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 3. 安装 Docker
sudo yum install docker-ce docker-ce-cli containerd.io

# 4. 启动 Docker 服务
sudo systemctl start docker

# 5. 设置 Docker 开机自启
sudo systemctl enable docker

# 6. 检查 Docker 是否正确安装
sudo docker run hello-world

如果一切正常,你应该看到 "Hello from Docker!" 的输出信息。

2.2 Ubuntu 安装

bash
# 1. 更新包索引
sudo apt-get update

# 2. 安装依赖项
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# 3. 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 4. 添加 Docker 软件仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 5. 安装 Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 6. 启动 Docker 服务
sudo systemctl start docker

# 7. 设置 Docker 开机自启
sudo systemctl enable docker

3. 基本配置

3.1 配置镜像源

bash
# 1. 编辑或创建 daemon.json 文件
sudo vi /etc/docker/daemon.json

# 2. 添加国内镜像源
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

# 3. 重新加载 Docker 配置
sudo systemctl daemon-reload

# 4. 重启 Docker 服务
sudo systemctl restart docker

# 5. 验证配置是否生效
sudo docker info | grep Registry

3.2 查看 Docker 版本

bash
# 查看 Docker 版本
docker --version

# 查看 Docker 详细信息
docker info

4. 常用命令

4.1 镜像管理

bash
# 拉取镜像
docker pull image_name:tag

# 列出本地镜像
docker images

# 删除本地镜像
docker rmi image_name:tag

# 查看镜像详情
docker inspect image_name:tag

# 搜索镜像
docker search keyword

4.2 容器管理

bash
# 运行容器
docker run -d --name container_name image_name:tag

# 查看正在运行的容器
docker ps

# 查看所有容器(包括停止的)
docker ps -a

# 启动容器
docker start container_name

# 停止容器
docker stop container_name

# 重启容器
docker restart container_name

# 删除容器
docker rm container_name

# 进入容器
docker exec -it container_name /bin/bash

# 查看容器日志
docker logs container_name

# 查看容器资源使用情况
docker stats container_name

4.3 网络管理

bash
# 创建网络
docker network create network_name

# 列出网络
docker network ls

# 删除网络
docker network rm network_name

# 将容器连接到网络
docker network connect network_name container_name

# 将容器从网络断开
docker network disconnect network_name container_name

4.4 数据卷管理

bash
# 创建数据卷
docker volume create volume_name

# 列出数据卷
docker volume ls

# 删除数据卷
docker volume rm volume_name

# 查看数据卷详情
docker volume inspect volume_name

5. 最佳实践

  1. 使用官方镜像:优先使用 Docker Hub 上的官方镜像
  2. 使用固定版本标签:避免使用 latest 标签,明确指定版本号
  3. 最小化镜像大小:使用多阶段构建减少镜像大小
  4. 使用 .dockerignore 文件:避免将不必要的文件添加到镜像中
  5. 限制容器权限:避免使用 root 用户运行容器
  6. 使用数据卷:使用数据卷持久化数据
  7. 使用网络隔离:使用 Docker 网络隔离不同应用
  8. 定期清理:定期清理无用的镜像、容器和数据卷

6. 学习资源

2. 容器相关命令

  • docker run <image-name>:创建并启动一个新的容器。
  • docker start <container-id>:启动已经创建但处于停止状态的容器。
  • docker stop <container-id>:停止正在运行的容器。
  • docker restart <container-id>:重启容器。
  • docker rm <container-id>:删除指定的容器。
  • docker ps:列出当前正在运行的容器。
  • docker ps -a:列出所有的容器,包括停止状态的容器。
  • docker exec -it <container-id> <command>:在正在运行的容器中执行命令。
  • docker logs <container-id>:查看容器的日志信息。

3. 网络相关命令

  • docker network ls:列出当前存在的网络。
  • docker network create <network-name>:创建一个新的网络。
  • docker network connect <network-name> <container-id>:将容器连接到指定的网络。
  • docker network disconnect <network-name> <container-id>:将容器从指定的网络中断开连接。

4. 数据卷相关命令

  • docker volume ls:列出当前存在的数据卷。
  • docker volume create <volume-name>:创建一个新的数据卷。
  • docker volume inspect <volume-name>:显示指定数据卷的详细信息。
  • docker volume rm <volume-name>:删除指定的数据卷。

https://www.runoob.com/docker/docker-command-manual.html

最近更新