Linux容器与虚拟化:10.2 Docker的安装与使用

引言

Docker 是一个开源的容器化平台,允许开发者将应用及其依赖打包到一个轻量级的容器中。与传统的虚拟化技术相比,Docker 容器共享主机的操作系统内核,因此启动速度快、资源占用少。本文将详细介绍 Docker 的安装与使用,包括优缺点、注意事项以及丰富的示例代码。

1. Docker 的优缺点

优点

  1. 轻量级:Docker 容器比虚拟机更轻量,启动速度快,通常在几秒钟内。
  2. 一致性:Docker 提供了一种一致的开发、测试和生产环境,减少了“在我机器上可以运行”的问题。
  3. 资源利用率高:多个容器可以共享同一个操作系统内核,减少了资源的浪费。
  4. 易于扩展:Docker 容器可以轻松地进行横向扩展,支持微服务架构。
  5. 版本控制:Docker 镜像可以版本化,方便回滚和管理。

缺点

  1. 安全性:由于容器共享主机内核,容器之间的隔离性不如虚拟机。
  2. 学习曲线:对于初学者来说,Docker 的概念和命令可能需要一定的学习时间。
  3. 持久化存储:容器的文件系统是临时的,持久化数据需要额外配置。
  4. 网络配置复杂:Docker 的网络配置可能会比较复杂,尤其是在多容器应用中。

2. Docker 的安装

2.1 在 Ubuntu 上安装 Docker

以下是 Ubuntu 系统上安装 Docker 的步骤:

  1. 更新包索引

    sudo apt-get update
    
  2. 安装必要的依赖

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

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

    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    
  5. 再次更新包索引

    sudo apt-get update
    
  6. 安装 Docker CE(社区版)

    sudo apt-get install docker-ce
    
  7. 启动 Docker 服务

    sudo systemctl start docker
    
  8. 设置 Docker 开机自启

    sudo systemctl enable docker
    
  9. 验证 Docker 是否安装成功

    sudo docker --version
    

2.2 在 CentOS 上安装 Docker

对于 CentOS 系统,安装步骤如下:

  1. 更新包索引

    sudo yum update
    
  2. 安装必要的依赖

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

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

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

    sudo systemctl start docker
    
  6. 设置 Docker 开机自启

    sudo systemctl enable docker
    
  7. 验证 Docker 是否安装成功

    sudo docker --version
    

3. Docker 的基本使用

3.1 Docker 镜像与容器

  • 镜像:Docker 镜像是一个只读的模板,用于创建 Docker 容器。镜像可以包含操作系统、应用程序及其依赖。
  • 容器:容器是镜像的一个实例,具有可读写的文件系统。

3.2 常用命令

  1. 拉取镜像

    sudo docker pull ubuntu
    
  2. 列出本地镜像

    sudo docker images
    
  3. 运行容器

    sudo docker run -it ubuntu /bin/bash
    

    这条命令会启动一个 Ubuntu 容器并进入其命令行。

  4. 列出正在运行的容器

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

    sudo docker ps -a
    
  6. 停止容器

    sudo docker stop <container_id>
    
  7. 删除容器

    sudo docker rm <container_id>
    
  8. 删除镜像

    sudo docker rmi <image_id>
    

3.3 创建自定义镜像

  1. 创建 Dockerfile

    在项目目录下创建一个名为 Dockerfile 的文件,内容如下:

    FROM ubuntu:latest
    RUN apt-get update && apt-get install -y python3
    COPY . /app
    WORKDIR /app
    CMD ["python3", "app.py"]
    

    这个 Dockerfile 会基于最新的 Ubuntu 镜像,安装 Python3,并将当前目录的内容复制到容器的 /app 目录。

  2. 构建镜像

    sudo docker build -t my-python-app .
    
  3. 运行自定义镜像

    sudo docker run -d my-python-app
    

3.4 数据持久化

Docker 容器的文件系统是临时的,若要持久化数据,可以使用卷(Volumes):

  1. 创建卷

    sudo docker volume create my-volume
    
  2. 使用卷运行容器

    sudo docker run -d -v my-volume:/data my-python-app
    

4. 注意事项

  1. 安全性:在生产环境中,尽量避免以 root 用户运行容器,使用非特权用户。
  2. 资源限制:可以通过 --memory--cpus 参数限制容器的资源使用。
  3. 网络配置:了解 Docker 的网络模式(如 bridge、host、overlay)以便于配置多容器应用。
  4. 镜像管理:定期清理不再使用的镜像和容器,以节省磁盘空间。

结论

Docker 是一个强大的工具,能够简化应用的开发、测试和部署过程。通过本文的介绍,您应该能够在 Linux 系统上成功安装 Docker,并掌握基本的使用方法。随着对 Docker 的深入了解,您可以探索更多高级功能,如 Docker Compose、Docker Swarm 和 Kubernetes 等。希望这篇教程能为您的 Docker 学习之旅提供帮助!