当前位置:首页 > 技术 > 正文内容

Ubuntu 24.04 环境下 Docker 实用指南

访客 技术 2026年6月4日 1

一、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 编辑文件。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。