CentOS 7 Docker环境搭建实战教程

CentOS 7 Docker 环境搭建实战教程

Docker 作为一种轻量级的虚拟化技术,近年来在软件开发、测试和部署领域获得了广泛的应用。它通过容器化技术,将应用程序及其依赖项打包到一个可移植的容器中,从而实现了应用程序在不同环境中的一致性运行。CentOS 7 作为一款稳定、可靠的 Linux 发行版,是运行 Docker 的理想选择。本文将详细介绍在 CentOS 7 上搭建 Docker 环境的步骤,并提供一些实用的技巧和注意事项,帮助你快速上手 Docker。

一、 准备工作

在开始安装 Docker 之前,我们需要确保 CentOS 7 系统满足以下要求:

  1. 内核版本: Docker 要求 CentOS 7 的内核版本为 3.10 或更高。你可以通过以下命令查看当前内核版本:

    bash
    uname -r

    如果内核版本低于 3.10,你需要先升级内核。

  2. 系统更新: 建议将 CentOS 7 系统更新到最新状态,以获取最新的软件包和安全补丁。可以使用以下命令更新系统:

    bash
    sudo yum update -y

  3. 禁用 SELinux (可选): SELinux (Security-Enhanced Linux) 是 CentOS 7 的一个安全模块,可能会对 Docker 的运行产生影响。如果你不熟悉 SELinux 的配置,建议暂时禁用它。可以通过编辑 /etc/selinux/config 文件,将 SELINUX 的值设置为 disabled,然后重启系统。

    ```bash
    sudo vi /etc/selinux/config

    将 SELINUX=enforcing 改为 SELINUX=disabled

    sudo reboot
    ```

    注意:禁用SELinux会降低系统安全性,建议在熟悉SELinux配置后再启用。

  4. 安装必要的软件包:
    安装yum-utilsdevice-mapper-persistent-datalvm2yum-utils 提供了yum-config-manager 实用程序,device-mapper-persistent-datalvm2 是 devicemapper 存储驱动程序所需要的。

    bash
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2

二、 安装 Docker

CentOS 7 上安装 Docker 有多种方式,我们将介绍两种常用的方法:

1. 使用 Docker 官方仓库安装(推荐)

这是官方推荐的安装方式,可以确保你安装的是最新版本的 Docker。

  1. 添加 Docker 仓库: 首先,我们需要添加 Docker 的官方 Yum 仓库。

    bash
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

  2. 安装 Docker Engine: 添加仓库后,就可以安装 Docker Engine 了。

    bash
    sudo yum install -y docker-ce docker-ce-cli containerd.io

  3. 启动 Docker 服务: 安装完成后,启动 Docker 服务并设置为开机自启。

    bash
    sudo systemctl start docker
    sudo systemctl enable docker

  4. 验证安装: 运行一个简单的 Docker 容器来验证安装是否成功。

    bash
    sudo docker run hello-world

    如果一切正常,你将看到类似以下的输出:

    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    ...

2. 使用 CentOS 官方仓库安装 (较旧版本)

CentOS 7 的官方仓库也提供了 Docker 软件包,但版本可能不是最新的。

  1. 安装 Docker: 直接使用 Yum 安装 Docker。

    bash
    sudo yum install -y docker

  2. 启动 Docker 服务: 安装完成后,启动 Docker 服务并设置为开机自启。

    bash
    sudo systemctl start docker
    sudo systemctl enable docker

  3. 验证安装: 同样,运行一个简单的 Docker 容器来验证安装。

    bash
    sudo docker run hello-world

注意:使用CentOS官方仓库安装,你可能会遇到一些问题,比如版本过旧,缺少某些新特性。因此,强烈建议使用Docker官方仓库安装。

三、 Docker 常用命令

安装完成后,我们来学习一些 Docker 的常用命令,以便更好地管理容器。

  • docker run 运行一个新的容器。
    bash
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

    例如:docker run -d -p 8080:80 nginx (以后台模式运行一个 Nginx 容器,并将容器的 80 端口映射到主机的 8080 端口)

  • docker ps 列出正在运行的容器。
    bash
    docker ps [OPTIONS]

    例如:docker ps -a (列出所有容器,包括已停止的)

  • docker stop 停止一个正在运行的容器。
    bash
    docker stop CONTAINER_ID

  • docker start 启动一个已停止的容器。
    bash
    docker start CONTAINER_ID

  • docker rm 删除一个容器。
    bash
    docker rm CONTAINER_ID

    例如:docker rm -f CONTAINER_ID (强制删除一个正在运行的容器)

  • docker rmi 删除一个镜像。
    bash
    docker rmi IMAGE_ID

  • docker images 列出本地镜像。

  • docker pull 从 Docker Hub 或私有仓库拉取镜像。
    bash
    docker pull IMAGE_NAME[:TAG]

    例如:docker pull ubuntu:latest (拉取最新版本的 Ubuntu 镜像)

  • docker build 从 Dockerfile 构建镜像。

  • docker exec 在运行的容器中执行命令。
    bash
    docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

    例如:docker exec -it CONTAINER_ID bash (进入容器的交互式 shell)

  • docker logs: 查看容器的日志。
    bash
    docker logs [OPTIONS] CONTAINER

    例如: docker logs -f CONTAINER_ID (实时跟踪容器日志)

  • docker inspect 获取容器或镜像的详细信息。

  • docker network 管理 Docker 网络。

  • docker volume 管理 Docker 数据卷。

这只是 Docker 命令的一小部分,Docker 提供了非常丰富的命令和选项,你可以通过 docker --helpdocker <command> --help 查看更详细的帮助信息。

四、 Docker 镜像加速

由于国内网络环境的原因,从 Docker Hub 拉取镜像可能会比较慢。为了提高镜像拉取速度,我们可以配置 Docker 镜像加速器。国内有很多云服务商提供了免费的 Docker 镜像加速服务,例如阿里云、腾讯云、DaoCloud 等。

这里以阿里云的镜像加速器为例,介绍配置方法:

  1. 获取加速器地址: 登录阿里云容器镜像服务控制台(https://cr.console.aliyun.com/),找到“镜像加速器”页面,获取你的专属加速器地址。

  2. 配置 Docker Daemon: 修改 Docker Daemon 的配置文件 /etc/docker/daemon.json(如果文件不存在,则创建它),添加以下内容:

    json
    {
    "registry-mirrors": ["你的阿里云加速器地址"]
    }

    你的阿里云加速器地址 替换为你实际获取到的地址。

  3. 重启 Docker 服务:

    bash
    sudo systemctl daemon-reload
    sudo systemctl restart docker

配置完成后,Docker 将会优先从镜像加速器拉取镜像,从而提高下载速度。

五、 Docker Compose 安装与使用(可选)

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件,你可以配置应用程序的服务、网络和数据卷,然后使用一个简单的命令启动和管理整个应用程序。

1. 安装 Docker Compose

```bash
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

验证安装

docker-compose --version
```

注意:
1. 如果curl命令下载缓慢,可以尝试其他下载方式。
2. 请替换v2.24.6为你想要安装的具体版本号。你可以在Docker Compose Releases 页面查找最新版本。

2. 使用 Docker Compose

  1. 创建 docker-compose.yml 文件: 在你的项目目录下创建一个名为 docker-compose.yml 的文件,并在其中定义你的应用程序服务。

    yaml
    version: '3.8'
    services:
    web:
    image: nginx:latest
    ports:
    - "8080:80"
    db:
    image: postgres:latest
    environment:
    POSTGRES_PASSWORD: mysecretpassword

    这个示例定义了两个服务:web (使用 Nginx 镜像) 和 db (使用 PostgreSQL 镜像)。web 服务将容器的 80 端口映射到主机的 8080 端口,db 服务设置了一个环境变量。

  2. 启动应用程序:docker-compose.yml 文件所在的目录下,运行以下命令启动应用程序:

    bash
    docker-compose up -d

    -d 参数表示以后台模式运行。

  3. 停止应用程序:

    bash
    docker-compose down

Docker Compose 还有很多其他命令和选项,可以帮助你更方便地管理多容器应用程序。

六、 Docker 安全加固

Docker 的安全性非常重要,以下是一些建议的安全加固措施:

  1. 保持 Docker 更新: 定期更新 Docker 到最新版本,以获取最新的安全补丁。

  2. 使用非 root 用户运行 Docker: 默认情况下,Docker Daemon 以 root 用户权限运行。为了降低安全风险,可以创建一个普通用户,并将其添加到 docker 用户组,然后使用该用户运行 Docker 命令。

    bash
    sudo groupadd docker
    sudo usermod -aG docker $USER
    newgrp docker #或者退出当前会话重新登录

    执行此操作后,注销并重新登录以使更改生效。

  3. 限制容器的资源使用: 通过 Docker 的资源限制功能,可以限制容器的 CPU、内存等资源使用,防止容器过度消耗系统资源。

  4. 使用安全的镜像: 尽量使用官方镜像或经过验证的镜像,避免使用来源不明的镜像。

  5. 配置 Docker Daemon 的安全选项: 可以通过修改 Docker Daemon 的配置文件 /etc/docker/daemon.json,配置一些安全选项,例如启用 TLS 加密、限制网络访问等。

  6. 使用 Docker 安全扫描工具: 可以使用一些 Docker 安全扫描工具,例如 Clair、Anchore 等,扫描镜像中的漏洞。

  7. 最小化容器内的权限: 尽量以普通用户身份在容器内运行应用程序,避免使用 root 用户。

  8. 不共享宿主机敏感目录: 避免将宿主机的敏感目录(如/etc/root)挂载到容器中。

七、 进阶技巧

  • Dockerfile 最佳实践:
    • 使用多阶段构建,减小镜像体积。
    • 选择合适的基础镜像。
    • 利用缓存机制,加快构建速度。
    • 避免在镜像中包含敏感信息。
    • 使用 .dockerignore 文件排除不必要的文件。
    • 为镜像打上合适的标签。
  • 使用私有仓库: 如果你需要存储和管理自己的私有镜像,可以搭建一个私有 Docker Registry,例如使用 Docker 官方提供的 Registry 镜像,或者使用 Harbor 等开源项目。

  • Docker 与 CI/CD 集成: 将 Docker 集成到你的持续集成/持续交付 (CI/CD) 流程中,可以实现自动化构建、测试和部署。

  • 容器编排工具: 对于复杂的应用程序,可以使用容器编排工具,例如 Kubernetes、Docker Swarm 等,来管理和调度多个容器。

Docker环境搭建后的思考

通过以上步骤,我们已经在 CentOS 7 上成功搭建了 Docker 环境,并了解了一些常用的 Docker 命令、镜像加速、Docker Compose 以及安全加固等方面的知识。Docker 的强大功能和灵活性为我们带来了很多便利,但同时也需要我们不断学习和探索。

Docker 的生态系统非常庞大,除了本文介绍的内容外,还有很多其他的工具和技术值得我们去学习,例如 Docker 网络、数据卷、日志管理、监控等等。希望本文能够帮助你入门 Docker,并在实践中不断提升你的 Docker 技能。 Docker的学习永无止境,希望大家都能在容器化的道路上不断探索,享受技术带来的乐趣!

THE END