1. 介绍
什么是 Docker?
Docker 是一个基于容器虚拟化技术的平台,用于高效地开发、分发和运行应用程序。与传统的虚拟机(VM)不同,容器共享宿主操作系统内核,从而实现更快的启动速度和更低的资源消耗。
在 Ubuntu 上使用 Docker 的优势
Ubuntu 是与 Docker 兼容性极强的 Linux 发行版之一。主要原因包括:
- 官方支持:Docker 官方支持 Ubuntu,可通过官方仓库轻松安装。
- 稳定的包管理:Ubuntu 的 APT 包管理器使版本管理变得简洁明了。
- 广泛的社区支持:Ubuntu 拥有庞大的全球用户群,遇到问题时更容易获得帮助和解决方案。
本文将教您什么
本指南将逐步讲解以下内容:
- 如何在 Ubuntu 上安装 Docker
- Docker 镜像的基本操作
- 使用 Dockerfile 创建自定义镜像
- 在 Ubuntu 容器中设置日语语言环境
- 优化与精简 Docker 镜像
- 在 Ubuntu 容器内开发应用程序
- 常见错误及排查方法
本文内容适用于初学者和高级,您可以在任何阶段参考使用。
2. 在 Ubuntu 上安装 Docker
使用官方仓库安装 Docker
在 Ubuntu 中,您可以通过官方仓库轻松安装 Docker。请按照以下步骤配置环境。
1. 移除已有的 Docker 包
Ubuntu 可能已预装名为 docker.io 的软件包,该版本可能较旧。请在安装最新 Docker 之前将其移除。
sudo apt remove docker docker-engine docker.io containerd runc
2. 安装所需依赖包
在安装前先安装依赖软件包。
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
3. 添加官方 Docker 仓库
添加 Docker 官方的 GPG 密钥并配置仓库地址。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. 安装 Docker
添加仓库后,安装 Docker 软件包。
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
5. 验证安装
通过显示版本信息来检查 Docker 是否已正确安装。
docker --version
安装后的初始设置
1. 启动并启用 Docker 服务
启动 Docker 服务并设置开机自启。
sudo systemctl start docker
sudo systemctl enable docker
2. 允许非 root 用户运行 Docker
默认情况下,仅 root 用户可以运行 Docker。请为普通用户授予 Docker 命令执行权限。
sudo usermod -aG docker $USER
注销并重新登录以使更改生效。
3. 测试 Docker 运行情况
使用普通用户账户运行 hello-world 容器进行测试。
docker run hello-world
如果输出中包含 “Hello from Docker!” 则说明安装成功。

3. Docker 镜像的基本操作
什么是 Docker 镜像?
Docker 镜像相当于创建容器的模板。使用基于 Ubuntu 的 Docker 镜像,您可以快速启动一个 Ubuntu 环境。
从 Docker Hub 拉取 Ubuntu 镜像
Docker Hub 提供大量官方 Docker 镜像。要下载 Ubuntu 镜像,请执行以下命令:
docker pull ubuntu
启动与停止容器
使用已下载的 Ubuntu 镜像启动:
docker run -it ubuntu bash
这会在 Ubuntu 容器中打开一个 shell,允许您在其中操作。
列出容器
显示正在运行的容器:
docker ps
显示所有容器,包括已停止的容器:
docker ps -a
停止和移除容器
停止一个正在运行的容器:
docker stop [container ID or name]
移除一个不必要的容器:
docker rm [container ID or name]
管理 Docker 镜像
列出已下载的 Docker 镜像:
docker images
移除一个镜像:
docker rmi [image ID]
4. 使用 Dockerfile 创建自定义镜像
什么是 Dockerfile?
Dockerfile 是一个用于构建 Docker 镜像的配置文件。根据 Dockerfile 中编写的指令,您可以创建自定义的 Docker 镜像。这允许您统一开发环境或创建包含所需软件包的镜像。
Dockerfile 的基本语法
Dockerfile 通常包括以下命令:
| Command | Description |
|---|---|
FROM | Specifies the base image |
RUN | Executes commands to build the image |
COPY | Copies files into the container |
WORKDIR | Sets the working directory |
CMD | Default command executed when the container starts |
ENTRYPOINT | Defines the entry point of the container |
创建基于 Ubuntu 的自定义镜像
按照以下步骤创建基于 Ubuntu 的自定义 Docker 镜像。
1. 创建工作目录
首先,创建一个新的项目目录并进入其中。
mkdir my-ubuntu-image
cd my-ubuntu-image
2. 创建 Dockerfile
在目录中创建一个 Dockerfile 并写入以下内容:
# Base Ubuntu official image
FROM ubuntu:latest
# Maintainer information (optional)
LABEL maintainer="your-email@example.com"
# Update package list and install basic tools
RUN apt update && apt install -y curl vim git
# Set working directory
WORKDIR /workspace
# Default command when the container starts
CMD ["bash"]
3. 构建 Docker 镜像
从您的 Dockerfile 构建自定义镜像:
docker build -t my-ubuntu-image .
-t 选项为镜像分配一个名称。
4. 验证镜像
检查您新构建的镜像:
docker images
5. 运行容器
从自定义镜像启动一个容器:
docker run -it my-ubuntu-image
此镜像包含诸如 curl 和 vim 等工具。
5. 在 Ubuntu 容器中设置日语环境
默认的 Ubuntu 镜像使用英语环境。要使用日语,需要进行额外的配置。
设置日语 Locale
要在 Ubuntu 容器中启用日语显示和输入,请安装日语 locale。
1. 安装所需软件包
apt update
apt install -y language-pack-ja locales
2. 配置 Locale
生成并应用 locale:
locale-gen ja_JP.UTF-8
update-locale LANG=ja_JP.UTF-8
3. 应用设置
export LANG=ja_JP.UTF-8
设置日语输入
要在终端中输入日语字符,请安装 ibus-mozc:
apt install -y ibus-mozc
如果使用 GUI 应用程序,请添加以下环境变量:
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
使用 GUI 应用程序
要在 Docker 容器中运行 GUI 应用程序,请在主机上使用 X 服务器。
使用启用 X11 运行容器:
docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix my-ubuntu-image
6. 优化和最小化 Docker 镜像
Docker 镜像可以进行优化,以提高容器启动速度并减少存储使用量。以下是创建轻量级镜像的几种技术。
如何创建基于 Ubuntu 的轻量级镜像
默认的 ubuntu:latest 镜像相对较大。使用更轻量级的选项如 ubuntu:minimal 可以帮助减少容器大小。
FROM ubuntu:minimal
另一个选项是使用 Alpine Linux,它比 Ubuntu 小得多。
FROM alpine:latest
RUN apk add --no-cache bash curl
使用 Alpine 可以将镜像大小减少数百兆字节。
通过移除不必要的文件来减少镜像大小
您可以通过删除 apt-get 创建的非必要缓存文件来减小镜像大小。
RUN apt update && apt install -y curl vim \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
具体而言,rm -rf /var/lib/apt/lists/* 命令会删除软件包列表和未使用的数据。
使用多阶段构建
多阶段构建允许您仅在构建过程中使用工具,同时保持最终镜像的轻量化。
FROM ubuntu as builder
RUN apt update && apt install -y gcc
FROM ubuntu:minimal
COPY --from=builder /usr/bin/gcc /usr/bin/gcc
这样,您就可以避免在最终镜像中包含开发工具,从而显著减小体积。
7. 实践示例:在 Ubuntu 容器中进行应用开发
本节介绍如何在 Ubuntu 容器内部署开发环境。
设置 Python 开发环境
创建以下 Dockerfile,以在 Ubuntu 容器中搭建 Python 开发环境:
FROM ubuntu:latest
RUN apt update && apt install -y python3 python3-pip
CMD ["python3"]
构建镜像并运行容器:
docker build -t python-dev .
docker run -it python-dev
该环境允许您使用 python3 命令进行脚本开发和测试。
设置 Node.js 开发环境
要搭建 Node.js 开发环境,请使用以下 Dockerfile:
FROM ubuntu:latest
RUN apt update && apt install -y nodejs npm
CMD ["node"]
构建并运行容器:
docker build -t node-dev .
docker run -it node-dev
该环境支持使用 node 命令执行 JavaScript 并进行应用开发。
8. 常见问题与故障排除
使用 Docker 可能会遇到各种问题。以下是常见问题及典型解决方案。
Docker 与虚拟机的区别
- Docker:共享宿主操作系统内核,轻量且容器启动快速。
- 虚拟机 (VM):每个虚拟机都包含完整的操作系统,导致资源占用更高且启动较慢。
Docker 在资源优化方面表现出色,适用于开发环境和自动化部署。
在 Ubuntu 容器中持久化数据
要在容器停止后仍保留数据,请使用 卷挂载:
docker run -v my_data:/data ubuntu
即使容器被删除,存储在 my_data 卷中的数据仍可重复使用。
常见错误及解决方案
1. permission denied 错误
如果在尝试运行 Docker 时看到 permission denied,可能是因为您的用户未加入 docker 组。
将用户添加到 Docker 组:
sudo usermod -aG docker $USER
注销并重新登录以使更改生效。
2. image not found 错误
如果某镜像已从 Docker Hub 移除,请在拉取时指定更新的标签:
docker pull ubuntu:22.04
明确指定版本可确保获取到正确的镜像。



