Linux容器与虚拟化:10.2 Docker的安装与使用
引言
Docker 是一个开源的容器化平台,允许开发者将应用及其依赖打包到一个轻量级的容器中。与传统的虚拟化技术相比,Docker 容器共享主机的操作系统内核,因此启动速度快、资源占用少。本文将详细介绍 Docker 的安装与使用,包括优缺点、注意事项以及丰富的示例代码。
1. Docker 的优缺点
优点
- 轻量级:Docker 容器比虚拟机更轻量,启动速度快,通常在几秒钟内。
- 一致性:Docker 提供了一种一致的开发、测试和生产环境,减少了“在我机器上可以运行”的问题。
- 资源利用率高:多个容器可以共享同一个操作系统内核,减少了资源的浪费。
- 易于扩展:Docker 容器可以轻松地进行横向扩展,支持微服务架构。
- 版本控制:Docker 镜像可以版本化,方便回滚和管理。
缺点
- 安全性:由于容器共享主机内核,容器之间的隔离性不如虚拟机。
- 学习曲线:对于初学者来说,Docker 的概念和命令可能需要一定的学习时间。
- 持久化存储:容器的文件系统是临时的,持久化数据需要额外配置。
- 网络配置复杂:Docker 的网络配置可能会比较复杂,尤其是在多容器应用中。
2. Docker 的安装
2.1 在 Ubuntu 上安装 Docker
以下是 Ubuntu 系统上安装 Docker 的步骤:
-
更新包索引:
sudo apt-get update
-
安装必要的依赖:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
-
添加 Docker 的官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
添加 Docker 的 APT 源:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-
再次更新包索引:
sudo apt-get update
-
安装 Docker CE(社区版):
sudo apt-get install docker-ce
-
启动 Docker 服务:
sudo systemctl start docker
-
设置 Docker 开机自启:
sudo systemctl enable docker
-
验证 Docker 是否安装成功:
sudo docker --version
2.2 在 CentOS 上安装 Docker
对于 CentOS 系统,安装步骤如下:
-
更新包索引:
sudo yum update
-
安装必要的依赖:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
-
添加 Docker 的官方仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
安装 Docker CE:
sudo yum install docker-ce
-
启动 Docker 服务:
sudo systemctl start docker
-
设置 Docker 开机自启:
sudo systemctl enable docker
-
验证 Docker 是否安装成功:
sudo docker --version
3. Docker 的基本使用
3.1 Docker 镜像与容器
- 镜像:Docker 镜像是一个只读的模板,用于创建 Docker 容器。镜像可以包含操作系统、应用程序及其依赖。
- 容器:容器是镜像的一个实例,具有可读写的文件系统。
3.2 常用命令
-
拉取镜像:
sudo docker pull ubuntu
-
列出本地镜像:
sudo docker images
-
运行容器:
sudo docker run -it ubuntu /bin/bash
这条命令会启动一个 Ubuntu 容器并进入其命令行。
-
列出正在运行的容器:
sudo docker ps
-
列出所有容器(包括停止的):
sudo docker ps -a
-
停止容器:
sudo docker stop <container_id>
-
删除容器:
sudo docker rm <container_id>
-
删除镜像:
sudo docker rmi <image_id>
3.3 创建自定义镜像
-
创建 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
目录。 -
构建镜像:
sudo docker build -t my-python-app .
-
运行自定义镜像:
sudo docker run -d my-python-app
3.4 数据持久化
Docker 容器的文件系统是临时的,若要持久化数据,可以使用卷(Volumes):
-
创建卷:
sudo docker volume create my-volume
-
使用卷运行容器:
sudo docker run -d -v my-volume:/data my-python-app
4. 注意事项
- 安全性:在生产环境中,尽量避免以 root 用户运行容器,使用非特权用户。
- 资源限制:可以通过
--memory
和--cpus
参数限制容器的资源使用。 - 网络配置:了解 Docker 的网络模式(如 bridge、host、overlay)以便于配置多容器应用。
- 镜像管理:定期清理不再使用的镜像和容器,以节省磁盘空间。
结论
Docker 是一个强大的工具,能够简化应用的开发、测试和部署过程。通过本文的介绍,您应该能够在 Linux 系统上成功安装 Docker,并掌握基本的使用方法。随着对 Docker 的深入了解,您可以探索更多高级功能,如 Docker Compose、Docker Swarm 和 Kubernetes 等。希望这篇教程能为您的 Docker 学习之旅提供帮助!