主题
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 docker3. 基本配置
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 Registry3.2 查看 Docker 版本
bash
# 查看 Docker 版本
docker --version
# 查看 Docker 详细信息
docker info4. 常用命令
4.1 镜像管理
bash
# 拉取镜像
docker pull image_name:tag
# 列出本地镜像
docker images
# 删除本地镜像
docker rmi image_name:tag
# 查看镜像详情
docker inspect image_name:tag
# 搜索镜像
docker search keyword4.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_name4.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_name4.4 数据卷管理
bash
# 创建数据卷
docker volume create volume_name
# 列出数据卷
docker volume ls
# 删除数据卷
docker volume rm volume_name
# 查看数据卷详情
docker volume inspect volume_name5. 最佳实践
- 使用官方镜像:优先使用 Docker Hub 上的官方镜像
- 使用固定版本标签:避免使用
latest标签,明确指定版本号 - 最小化镜像大小:使用多阶段构建减少镜像大小
- 使用 .dockerignore 文件:避免将不必要的文件添加到镜像中
- 限制容器权限:避免使用 root 用户运行容器
- 使用数据卷:使用数据卷持久化数据
- 使用网络隔离:使用 Docker 网络隔离不同应用
- 定期清理:定期清理无用的镜像、容器和数据卷
6. 学习资源
- Docker 官方文档
- Docker 中文文档
- Docker 入门教程
- Docker 实战 书籍
- Docker 从入门到实践
docker images:列出本地主机上的镜像。docker pull <image-name>:从 Docker 镜像仓库中拉取指定的镜像。docker push <image-name>:将本地的镜像推送到 Docker 镜像仓库。docker rmi <image-name>:删除指定的镜像。
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>:删除指定的数据卷。