如何在 Linux 上安装 Docker 25.0.3

简介

本教程将指导您如何在 linux 系统上安装 Docker 25.0.3。Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到各种操作系统上。Docker使应用的部署和扩展变得更加简单和高效。

前置要求

  • Linux 操作系统
  • 稳定的网络连接
  • 管理员权限(用于执行sudo命令)
  • 64位操作系统
  • 至少4GB的RAM
  • 内核版本3.10或更高

安装方法

使用官方存储库安装

使用Docker的官方存储库安装Docker Engine是推荐的方法。

1. 设置Docker存储库

首先,更新包索引并安装必要的依赖:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

这里以Ubuntu/Debian为例,其他发行版可能需要使用不同的包管理器命令。

2. 添加Docker官方GPG密钥

添加Docker的官方GPG密钥:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

3. 设置存储库

设置Docker的apt存储库:

echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. 安装Docker Engine

更新包索引并安装Docker Engine、containerd和Docker Compose:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5. 将当前用户添加到docker组

为了避免每次使用Docker命令都需要sudo,将当前用户添加到docker组:

sudo usermod -aG docker $USER
newgrp docker

使用便捷脚本安装

Docker提供了一个便捷脚本,可以快速安装Docker Engine。

1. 下载并执行安装脚本

使用以下命令下载并执行Docker的便捷安装脚本:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

这种方法适用于快速安装,但在生产环境中请谨慎使用。

2. 将当前用户添加到docker组

添加当前用户到docker组以避免使用sudo:

sudo usermod -aG docker $USER
newgrp docker

验证安装

1. 验证Docker版本

检查Docker是否正确安装及其版本:

docker --version
Docker version 25.0.3, build 4debf41

2. 验证Docker守护进程是否运行

运行一个简单的容器来验证Docker守护进程是否正常运行:

docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

3. 检查Docker信息

查看Docker系统信息:

docker info

这个命令会显示Docker的详细配置信息,包括存储驱动、容器数量、镜像数量等。

基本使用示例

运行一个容器

运行一个基于Nginx的Web服务器容器:

docker run -d -p 8080:80 --name my-nginx nginx

这个命令将拉取nginx镜像并在后台(-d)运行一个容器,将主机的8080端口映射到容器的80端口(-p 8080:80),并将容器命名为my-nginx。

列出所有容器

查看所有正在运行的容器:

docker ps

这个命令显示当前运行的所有容器。添加-a参数可以查看所有容器,包括已停止的容器。

停止和删除容器

停止和删除先前创建的Nginx容器:

docker stop my-nginx
docker rm my-nginx

首先使用stop命令停止容器,然后使用rm命令删除容器。

构建自定义镜像

使用Dockerfile创建自定义镜像:

# 创建Dockerfile
cat > Dockerfile << EOF
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
EOF

# 构建镜像
docker build -t my-node-app .

上述命令首先创建了一个简单的Dockerfile,定义了一个基于Node.js的应用。然后使用docker build命令构建镜像,并将其标记为my-node-app。

使用Docker Compose管理多容器应用

创建并启动一个包含Node.js应用和MongoDB数据库的多容器应用:

# 创建docker-compose.yml
cat > docker-compose.yml << EOF
version: "3.8"
services:
  app:
    image: my-node-app
    ports:
      - "3000:3000"
    depends_on:
      - mongodb
  mongodb:
    image: mongo
    ports:
      - "27017:27017"
    volumes:
      - mongodb_data:/data/db
volumes:
  mongodb_data:
EOF

# 启动服务
docker-compose up -d

这个示例展示了如何使用Docker Compose定义和运行多容器应用。docker-compose.yml文件定义了一个由Node.js应用和MongoDB数据库组成的应用堆栈。使用docker-compose up命令启动整个应用堆栈。

常见问题

问题:docker command not found

解决方案:确保软件已正确安装并添加到系统PATH中。可能需要重启终端或系统。

问题:安装过程中遇到权限错误

解决方案:确保您有管理员权限。在Windows上以管理员身份运行命令提示符,在Mac/Linux上使用sudo。

问题:Docker守护进程无法启动

解决方案:检查Docker服务状态并重启服务。

sudo systemctl restart docker

问题:权限不足

解决方案:确保当前用户属于docker用户组,或使用sudo运行Docker命令。

sudo usermod -aG docker $USER && newgrp docker

问题:Docker容器无法访问网络

解决方案:检查网络配置和防火墙设置。

sudo ufw allow 2375/tcp

使用技巧

使用Docker Compose简化多容器应用的管理。

经常使用docker system prune命令清理未使用的资源,包括悬挂镜像、停止的容器和未使用的网络。

为常用命令创建别名,例如在.bashrc或.zshrc中添加:alias dps="docker ps"。

使用Docker卷(volumes)持久化容器数据,而不是在容器内存储数据。

使用多阶段构建(multi-stage builds)减小最终镜像的大小。

在生产环境中,考虑使用Docker Swarm或Kubernetes进行容器编排。

定期更新您的Docker和基础镜像,以获取安全补丁和性能改进。

在Dockerfile中使用.dockerignore文件排除不需要的文件,减小构建上下文大小。

为了安全起见,在容器中使用非root用户运行应用。

使用Docker Scout或其他工具定期扫描您的容器镜像,查找安全漏洞。

相关资源

总结

恭喜!您已经成功安装了Docker 25.0.3,并了解了基本的使用方法。Docker是一个强大的工具,可以帮助您简化开发、测试和部署过程。随着您对Docker的深入了解,您将能够构建更复杂的容器化应用程序,使用Docker Compose管理多容器应用,甚至使用Docker Swarm或Kubernetes进行容器编排。继续探索Docker的更多功能,将为您的开发工作流程带来更多便利。