☰
Docker 入门与应用程序容器化实践
2026/10/6 8:06:22 网站建设 项目流程

实验环境

  • Kali GNU/Linux 2024.4
  • Docker CE
  • 应用示例:docker/getting-started-app

一、安装并配置 Docker

1. 添加 Docker 官方源

Kali 基于 Debian,这里使用 Debian bookworm 的 Docker 源:

sudomkdir-p/etc/apt/keyringscurl-fsSLhttps://download.docker.com/linux/debian/gpg|\sudogpg--dearmor-o/etc/apt/keyrings/docker.gpgecho"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable"|\sudotee/etc/apt/sources.list.d/docker.list

2. 安装 Docker CE

更新软件源并安装:

sudoaptupdatesudoaptinstall-ydocker-ce docker-ce-cli containerd.io

3. 启动并设置开机自启

sudosystemctlenabledocker--now

4. 将当前用户加入 docker 组

这样后续使用 Docker 时不必每次都加sudo:

sudousermod-aGdocker$USERnewgrpdocker

如果组权限未立即生效,可以重启 Docker 服务:

sudosystemctl restartdocker

5. 验证安装

运行官方测试镜像:

sudodockerrun hello-world

如果看到 “Hello from Docker!” 之类的输出,说明 Docker 已安装成功。


二、Docker 基础操作

1. 拉取镜像

从镜像仓库拉取 Ubuntu 镜像:

dockerpull ubuntu

2. 列出本地镜像

dockerimages

输出中可以看到仓库、标签、镜像 ID、创建时间和大小等信息。

3. 查看镜像详细信息

dockerinspect ubuntu

该命令会输出 JSON 格式的镜像元数据,包括镜像 ID、创建时间、环境变量、默认命令、架构、大小等。

4. 创建并后台运行容器

dockerrun-itdubuntu /bin/bash
  • -i:保持标准输入打开
  • -t:分配伪终端
  • -d:后台运行

命令执行后会返回容器 ID。

5. 列出正在运行的容器

dockerps

可以看到容器 ID、使用的镜像、启动命令、创建时间、状态、端口和名称。

6. 停止容器

dockerstop<container_id>

再次执行docker ps,可以看到该容器已不在运行列表中。

7. 启动已停止的容器

dockerstart<container_id>

8. 查看容器日志

dockerlogs<container_id>

9. 进入容器 Shell

dockerexec-it<container_id>/bin/bash

进入后可以在容器内部执行命令,例如查看当前目录、安装软件等。

10. 查看容器详细信息

dockerinspect<container_id>

这里会显示容器的网络、挂载、配置、状态等信息。其中比较有用的包括:

  • 容器 IP 地址
  • 网关
  • 网络模式
  • 挂载点
  • 环境变量
  • 启动命令

11. 删除容器

dockerrm<container_id>

如果容器仍在运行,需要先停止再删除:

dockerstop<container_id>dockerrm<container_id>


三、将应用程序容器化

下面以一个 Node.js 待办事项应用为例,演示如何把应用程序打包成 Docker 镜像并运行。

1. 下载应用源代码

gitclone https://github.com/docker/getting-started-app.gitcdgetting-started-appls-la

目录中通常包含:

package.json README.md spec/ src/ yarn.lock

2. 编写 Dockerfile

在getting-started-app目录下,与package.json同级位置创建Dockerfile:

touchDockerfile

写入以下内容:

FROM registry.cn-beijing.aliyuncs.com/cuccs/node:18-alpine WORKDIR /app COPY . . RUN npm install -g node-gyp RUN yarn install --production CMD ["node", "src/index.js"] EXPOSE 3000

说明:

  • FROM:指定基础镜像,这里使用 Node.js 18 Alpine 版本,体积较小。
  • WORKDIR:设置容器内工作目录。
  • COPY:把当前目录内容复制到镜像的/app。
  • RUN:构建镜像时执行的安装命令。
  • CMD:容器启动时默认执行的命令。
  • EXPOSE:声明应用监听 3000 端口。

3. 构建镜像

确保当前目录在getting-started-app下:

pwd

然后构建镜像:

dockerbuild-tgetting-started.
  • -t getting-started:给镜像命名为getting-started
  • .:表示使用当前目录的 Dockerfile

4. 启动应用程序容器

使用docker run启动容器,并将宿主机 3000 端口映射到容器 3000 端口:

dockerrun-dp127.0.0.1:3000:3000 getting-started
  • -d:后台运行
  • -p 127.0.0.1:3000:3000:把宿主机的 127.0.0.1:3000 映射到容器 3000 端口

5. 访问应用

打开浏览器访问:

http://localhost:3000

如果一切正常,可以看到待办事项应用页面,并可以添加、完成、删除项目。

6. 查看运行中的容器

dockerps

输出中应能看到getting-started镜像对应的容器,以及端口映射信息:

127.0.0.1:3000->3000/tcp


四、常用命令速查

功能命令
拉取镜像docker pull <image>
查看本地镜像docker images
查看镜像详情docker inspect <image>
创建并运行容器docker run -itd <image> /bin/bash
查看运行中容器docker ps
查看所有容器docker ps -a
停止容器docker stop <container>
启动容器docker start <container>
查看日志docker logs <container>
进入容器docker exec -it <container> /bin/bash
删除容器docker rm <container>
构建镜像docker build -t <name> .
端口映射运行docker run -dp 宿主机端口:容器端口 <image>

五、总结

Docker 把应用及其依赖打包进镜像,使应用可以在不同环境中以一致的方式运行。本文完成了三件事:

  1. 安装与配置 Docker:添加官方源、安装 Docker CE、启动服务、配置用户组。
  2. 掌握基础命令:拉取镜像、查看镜像、运行容器、停止/启动容器、查看日志、进入容器、删除容器。
  3. 应用程序容器化:编写 Dockerfile、构建镜像、启动容器并通过浏览器验证应用。

实际使用中,还应注意:

  • 使用.dockerignore排除不必要文件;
  • 尽量使用体积小、安全性高的基础镜像;
  • 不要把密码、密钥等敏感信息写入镜像;
  • 生产环境避免使用latest标签,建议固定版本;
  • 容器不要以 root 用户运行,必要时创建普通用户;
  • 定期更新基础镜像,减少已知漏洞。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询