进阶实战:Docker 核心操作

在理解了容器底层原理后,我们需要通过 Docker 这个“管理大师”来实际操控它们。本章节将带你完成从环境搭建到应用部署的完整闭环。


1. 安装与免 Sudo 配置

TAB分类
💡 点击标签可切换下方对比内容
视图分类:

Ubuntu / Debian

sudo apt install docker.io

Arch Linux

sudo pacman -S docker

免 Sudo 配置 (推荐)

默认执行 docker 命令需要 root。将当前用户加入 docker 组即可:

sudo usermod -aG docker $USER
# 重启系统或重新登录生效

2. 镜像 (Image) 的一生:Dockerfile 实战

Dockerfile 是构建镜像的脚本。

创建一个简单的 Node.js 应用镜像
# 1. 基础镜像
FROM node:18-alpine
 
# 2. 设置工作目录
WORKDIR /app
 
# 3. 复制依赖并安装
COPY package*.json ./
RUN npm install
 
# 4. 复制代码
COPY . .
 
# 5. 暴露端口并运行
EXPOSE 3000
CMD ["npm", "start"]

构建指令: docker build -t my-app:v1 .


3. 容器 (Container) 的生命周期管理

操作命令说明
创建并运行docker run -d -p 80:80 nginx-d 后台运行,-p 映射端口
查看运行中docker ps添加 -a 查看所有(含停止的)
进入容器docker exec -it <id> sh-it 交互式终端
查看日志docker logs -f <id>-f 实时追踪
删除资源docker rm -f <id>强杀并删除容器

4. 持久化与网络:容器的大动脉

4.1 数据卷 (Volumes)

容器销毁后,内部数据会丢失。使用数据卷将宿主机目录挂载进去:

docker run -v /opt/data:/var/lib/mysql mysql

4.2 网络 (Networks)

默认容器使用 bridge 模式。如果你想让两个容器互相通信,建议创建自定义网络:

docker network create my-net
docker run --network my-net --name web nginx

5. 结业练习

任务 1 运行 Nginx 使用 docker run 启动一个 Nginx 容器,并成功通过浏览器访问到宿主机的 8080 端口。
练习 2 构建镜像 尝试编写一个 Dockerfile,将你本地的一个静态 HTML 文件夹打包成镜像。
练习 3 资源清理 运行 docker system prune,观察它清理了多少无用的镜像层和停止的容器。
💡 Tip

掌握了 build, run, v (volume) 和 p (port),你就已经能应付 80% 的 Docker 使用场景了。

Navigation