Docker 是一个开源的容器化平台,旨在简化应用程序的部署、管理和扩展。它可以将应用及其所有依赖项打包成一个独立的容器,确保应用在不同环境下运行一致。随着容器化技术的广泛应用,Docker 已成为开发者和运维工程师的必备工具之一。在这篇文章中,我们将详细介绍如何在 Ubuntu 操作系统上安装和使用 Docker。

一、安装 Docker 前的准备工作

在开始安装 Docker 之前,首先需要确保 Ubuntu 系统满足 Docker 的最低要求。Docker 支持的 Ubuntu 版本包括 Ubuntu 18.04 LTS、20.04 LTS 及更新版本。请确保你的系统已更新,并且拥有足够的磁盘空间来安装 Docker 和相关的容器镜像。

首先,更新系统的软件包索引,确保你的操作系统拥有最新的软件包信息:

sudo apt update

然后,升级现有的软件包:

sudo apt upgrade -y

接下来,安装 Docker 所需的依赖包,以确保系统能够正确地从 Docker 仓库中下载软件包。

sudo apt install apt-transport-https ca-certificates curl software-properties-common

二、安装 Docker 引擎

在准备工作完成后,我们可以开始正式安装 Docker 引擎。Docker 提供了官方的安装脚本,我们可以通过添加 Docker 的官方 APT 仓库来安装最新版本的 Docker。

首先,添加 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 update

现在,安装 Docker 引擎:

sudo apt install docker-ce

安装完成后,Docker 服务应该已经自动启动。你可以通过以下命令检查 Docker 服务是否正在运行:

sudo systemctl status docker

如果看到类似“active (running)”的状态,说明 Docker 已成功安装并正在运行。

三、配置 Docker 用户权限

默认情况下,Docker 需要 root 权限来运行命令。如果你不想每次都使用 sudo 命令,可以将当前用户添加到 Docker 用户组中。这样,你就可以在不使用 sudo 的情况下运行 Docker 命令。

通过以下命令将当前用户添加到 Docker 用户组:

sudo usermod -aG docker $USER

添加用户到 Docker 用户组后,需要退出当前会话并重新登录,或者可以使用以下命令使更改生效:

newgrp docker

完成后,你可以尝试运行 Docker 命令,确认是否不再需要 sudo:

docker run hello-world

如果能够成功运行命令并看到欢迎信息,说明 Docker 配置正确。

四、Docker 的基本使用

Docker 安装完成后,接下来我们来学习如何使用 Docker 来管理容器和镜像。

1. 拉取镜像

Docker 使用镜像来创建容器。在 Docker 中,镜像是一个只读的模板,容器则是镜像的运行实例。你可以从 Docker Hub 拉取镜像。以拉取 Ubuntu 镜像为例:

docker pull ubuntu

这条命令将会从 Docker Hub 上拉取最新版本的 Ubuntu 镜像。你可以通过以下命令查看已经下载的镜像:

docker images

2. 创建并运行容器

从镜像中创建并启动一个容器,使用以下命令:

docker run -it ubuntu

这条命令将会基于 Ubuntu 镜像启动一个容器,并进入该容器的交互式终端。你可以在其中执行 Linux 命令。若要退出容器的交互式终端,可以使用 exit 命令。

3. 管理容器

查看正在运行的容器:

docker ps

查看所有容器(包括已停止的容器):

docker ps -a

停止容器:

docker stop <container_id>

启动已停止的容器:

docker start <container_id>

删除容器(删除前需要停止容器):

docker rm <container_id>

五、Docker 镜像管理

除了容器,Docker 的另一个重要组成部分是镜像。镜像是构建容器的基础,它定义了容器的文件系统和所有依赖。Docker 提供了强大的命令来管理镜像。

1. 查看镜像

通过以下命令,你可以查看所有本地存储的镜像:

docker images

2. 删除镜像

删除本地的镜像可以使用以下命令:

docker rmi <image_id>

3. 构建自定义镜像

如果你需要根据某些特定需求构建镜像,可以使用 Dockerfile 文件。Dockerfile 是一个包含了一系列命令的文本文件,Docker 会根据这些命令自动构建镜像。

以下是一个简单的 Dockerfile 示例:

# 使用官方的 Node.js 镜像作为基础镜像
FROM node:14

# 设置工作目录
WORKDIR /usr/src/app

# 复制应用代码到容器
COPY . .

# 安装依赖
RUN npm install

# 启动应用
CMD ["node", "app.js"]

使用以下命令构建镜像:

docker build -t my-node-app .

六、Docker Compose 管理多个容器

当需要在一个项目中运行多个容器时,Docker Compose 是一个非常有用的工具。它允许你通过一个配置文件(docker-compose.yml)来定义和运行多个 Docker 容器。

首先,安装 Docker Compose:

sudo apt install docker-compose

接下来,创建一个 docker-compose.yml 文件来定义多个服务。例如,定义一个简单的 web 应用和数据库服务:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example

然后,使用以下命令启动服务:

docker-compose up

通过 Docker Compose,你可以更加高效地管理多个容器。

七、Docker 的常用命令总结

总结一下 Docker 常用的命令,帮助你快速上手:

docker pull <image_name>:从 Docker Hub 拉取镜像

docker run <options> <image_name>:运行容器

docker ps:列出正在运行的容器

docker ps -a:列出所有容器

docker stop <container_id>:停止容器

docker rm <container_id>:删除容器

docker rmi <image_id>:删除镜像

docker-compose up:启动所有 Compose 服务

docker-compose down:停止并删除所有 Compose 服务

八、总结

Docker 是一个功能强大且灵活的容器化平台,能够大大简化应用的部署和管理。通过本文的介绍,相信你已经掌握了在 Ubuntu 上安装 Docker 和使用 Docker 容器的基本方法。无论是开发、测试还是生产环境,Docker 都能够提供一致的运行环境,帮助你提高开发效率和运维水平。

希望这篇文章对你有所帮助,祝你在 Docker 的学习和使用过程中取得成功!