第六章、创建自定义镜像
这一章我们来学习如何自己制作 Docker 的镜像。
创建自定义镜像通常有两种方法:
- 用 docker commit 命令制作镜像
- 用 Dockerfile 文件制作镜像
如下图所示

也就是说我们可以使用 Dockerfile 创建一个镜像,也可以使用一个原始镜像来创建一个容器,在容器中安装运行时软件,然后再使用 docker commit 命令将容器制作成镜像。
无论从哪种方式来制作镜像,我们需要在容器建立一个同真实的物理机器一样的运行环境来验证应用是否可用。只用实际应用在真实环境中运行起来,才能保证制作的容器能够正常运行。
1. Http 服务器搭建
下面我们使用 Python 中的 http.server 模块在搭建一个静态网页的 Web 服务器。然后我们在用同样的方法和步骤来创建 Docker 容器。
准备资料
网站内容的压缩包 mywebsite.tar.gz (需要从百度网盘下载或手动生成)
上述资料可以从百度网盘下载:
- 百度网盘链接地址:https://pan.baidu.com/s/1U2CUtna3oq9NFkh8ewMzdg 提取码: 9gy6
mywebsite.tar.gz 网页的压缩包位于 docker教程资料/ 文件夹下的 mywebsite.tar.gz。
解压缩此压缩包到当前文件夹下,如:
weimingze@mzstudio:~$ tar -xzvf mywebsite.tar.gz
mywebsite/
mywebsite/index.html
mywebsite/second_page.html
weimingze@mzstudio:~$ tree mywebsite
mywebsite
├── index.html
└── second_page.html
1 directory, 2 files
手动制作网站内容
如果你无法下载此资料,你也可以手动制作这个压缩包。方法如下:
- 在 当前路径创建文件夹
mywebsite, 并在 mywebsite 下创建两个文件index.html和second_page.html。
weimingze@mzstudio:~$ mkdir mywebsite
weimingze@mzstudio:~$ touch mywebsite/index.html
weimingze@mzstudio:~$ touch mywebsite/second_page.html
weimingze@mzstudio:~$ tree mywebsite
mywebsite
├── index.html
└── second_page.html
1 directory, 2 files
weimingze@mzstudio:~$
- 编辑
mywebsite/index.html文件,写入如下内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Docker 教程 - 明择工作室</title>
</head>
<body>
<h1>Docker 测试主页</h1>
<a href="./second_page.html">进入下一页</a>
</body>
</html>
- 编辑
mywebsite/second_page.html文件,写入如下内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Docker 教程 - 明择工作室</title>
</head>
<body>
<h1>Docker 测试第二页</h1>
<a href="./">返回主页</a>
</body>
</html>
- 将
mywebsite文件夹压缩成mywebsite.tar.gz的归档包。供下节课使用
weimingze@mzstudio:~$ tar -czvf mywebsite.tar.gz mywebsite/
mywebsite/
mywebsite/index.html
mywebsite/second_page.html
weimingze@mzstudio:~$
使用 Python 启动 Web 服务器
在 Ubuntu 24.04 的终端中运行如下命令,启动 Web 服务器。
python3 -m http.server --directory ./mywebsite 8000
-m http.server是让 Python 执行http.server模块。./mywebsite是网站网页的根文件夹。8000是访问网站开放的端口号(默认就是8000),你也可以改成浏览器默认的80端口号(需要root权限)。
在 MacOS 和 Linux 下使用
python3命令,在 Windows 下需要使用python命令。
在 MacOS 和 Windows 下需要安装 Python 3.6 及以上版本的 Python 解释执行器。
安装方法详见:https://weimingze.com/pythonbase/mac_install_python.html
运行结果
weimingze@mzstudio:~$ python3 -m http.server --directory ./mywebsite 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
在本机打开浏览器,输入网址 http://0.0.0.0:8000/ 就可以访问这个网站了。
如果在局域网的其他电脑或手机访问此网站,需要使用网站 http://<启动Web服务器的IP地址>:8000/ 来访问此机器,效果如下:

这样,我们完成了在 Ubuntu 24.04 上搭建一个静态网页的 Web 服务器。
下节课我们这个 Web 服务器封装到 Docker 容器中。