Ubuntu 24.04 环境下 Docker 实用指南
一、Docker 安装步骤
在 Ubuntu 24.04 系统中部署 Docker 非常简便,只需通过系统包管理器即可完成安装。
1. 更新软件包索引
sudo apt update
2. 安装 Docker 引擎
sudo apt install -y docker.io
该命令将自动安装 Docker 及其依赖项,包括 containerd 和相关服务。安装过程中会创建必要的系统服务链接:
- 启用并配置
docker.service - 设置 socket 激活机制
docker.socket
3. 验证安装结果
docker --version
输出示例:Docker version 28.2.2, build abc123,表示安装成功。
4. 检查运行状态
systemctl status docker
5. 启动与开机自启
若服务未运行,执行以下命令启动并设置为开机启动:
sudo systemctl start docker
sudo systemctl enable docker
二、配置国内镜像加速器
由于网络限制,直接访问 Docker Hub 可能较慢或失败,建议使用国内镜像代理提升拉取速度。
1. 创建守护进程配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://docker.xuanyuan.me",
"https://docker.1panel.live",
"https://mirror.ccs.tencentyun.com"
]
}
EOF
2. 重启服务以应用配置
sudo systemctl daemon-reload
sudo systemctl restart docker
三、常用镜像操作命令
1. 下载镜像(pull)
从远程仓库获取镜像:
docker pull nginx
完整格式为:[registry/]namespace/image:tag,其中:
- registry:注册表地址,默认为
docker.io - namespace:命名空间,官方镜像可省略(如 library/nginx 可简写为 nginx)
- tag:标签,代表版本,默认是 latest
例如拉取指定用户下的镜像:
docker pull giniclark/docker_test:latest
2. 查看本地镜像列表
docker images
3. 删除本地镜像
docker rmi 镜像ID或名称
4. 拉取特定架构的镜像
适用于多平台环境(如 ARM64):
docker pull --platform linux/amd64 nginx
四、容器运行与管理详解
1. 基础运行模式
docker run nginx
此命令会自动下载镜像(如不存在),然后启动一个容器。默认前台运行,输出日志至终端。
2. 查看运行中的容器
docker ps
显示当前正在运行的容器信息,包括容器 ID、镜像名、启动命令、运行时间及端口映射等。
3. 后台运行(-d 参数)
docker run -d nginx
添加 -d 标志使容器在后台运行,返回容器 ID。
4. 端口映射(-p 参数)
将宿主机端口映射到容器内部端口:
docker run -d -p 80:80 nginx
此时可通过访问宿主机 IP 的 80 端口来访问 Nginx 服务。
5. 数据卷挂载(-v 参数)
(1) 绑定挂载(Bind Mount)
将宿主机目录挂载进容器,实现数据持久化:
docker run -d -p 80:80 -v /website/html:/usr/share/nginx/html nginx
注意:若宿主机目录为空,可能导致 Nginx 返回 403 错误。需确保挂载路径包含有效的网页文件。
创建测试页面:
sudo mkdir -p /website/html
sudo vim /website/html/index.html
填入基础 HTML 内容后刷新浏览器即可看到效果。
(2) 命名卷(Named Volume)
由 Docker 管理存储位置,适合不需要关心具体路径的场景:
docker volume create nginx_html
docker run -d -p 80:80 -v nginx_html:/usr/share/nginx/html nginx
查看卷的实际路径:
docker volume inspect nginx_html
首次使用命名卷时,Docker 会自动将容器中原有内容复制到卷中,而绑定挂载则不会。
(3) 卷管理命令
- 列出所有卷:
docker volume ls - 删除指定卷:
docker volume rm nginx_html - 清理无用卷:
docker volume prune -a
6. 设置环境变量(-e 参数)
用于传递配置参数给容器,常见于数据库初始化:
docker run -d \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=secret123 \
--name mongo-db \
mongo
启动后可通过如下命令进入 MongoDB Shell 进行验证:
docker exec -it mongo-db mongosh -u admin -p secret123
7. 自定义容器名称(--name)
docker run -d --name my-web-server nginx
便于后续管理与识别。
8. 临时交互式容器(-it + --rm)
适用于调试和临时任务:
docker run -it --rm alpine sh
退出后容器自动清除,避免残留。
9. 设置重启策略(--restart)
--restart always:无论何种原因停止都会重启--restart unless-stopped:除非手动停止,否则总是重启
docker run -d --restart unless-stopped nginx
五、容器调试与维护
1. 查看容器状态
- 运行中:
docker ps - 全部(含已停止):
docker ps -a
2. 控制容器生命周期
# 启动已停止的容器
docker start 容器ID或名称
# 停止运行中的容器
docker stop 容器ID或名称
3. 查看详细配置信息
docker inspect mongo-db
可用于检查环境变量、挂载点、网络设置等元数据。
4. 创建但不启动容器
docker create -p 27017:27017 mongo
后续可通过 docker start 手动启动。
5. 查看日志输出
# 查看最近日志
docker logs mongo-db
# 实时追踪日志
docker logs -f mongo-db
6. 在容器内执行命令
docker exec 容器ID 命令
例如查看进程:
docker exec mongo-db ps aux
7. 进入容器内部进行操作
docker exec -it my-web-server /bin/sh
进入后可浏览文件系统、修改配置等。
8. 容器内安装缺失工具
某些轻量镜像(如 nginx、alpine)缺少编辑器,可手动安装:
# 先确认操作系统类型
cat /etc/os-release
以 Debian 为基础的镜像可使用 APT 包管理器:
apt update
apt install -y vim
之后即可使用 vim 编辑文件。