当我们使用Docker来管理应用程序时,我们需要制作镜像并将其上传到Docker仓库,以便在其他机器上部署该应用程序。Docker的镜像可以通过在线制作和离线制作两种方式来完成。下面将详细介绍这两种制作方式的过程,以及给出相应的示例说明。
在线制作镜像
在线制作镜像是指直接从Docker Hub上的公共镜像开始,修改配置并生成新的镜像。这种方式制作出来的镜像较小,适合于部署较为简单的应用程序。
下面是基于官方的Node.js镜像,制作一个Hello world应用程序的示例:
- 用以下命令获取Node.js的最新版本镜像。
$ docker pull node:latest
- 在本地创建一个文件夹,并在该文件夹中创建一个app.js文件,然后输入以下内容:
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
- 在该文件夹中创建一个Dockerfile文件,并输入以下内容:
FROM node
WORKDIR /app
COPY . /app
EXPOSE 3000
CMD ["node", "app.js"]
- 在该文件夹中打开命令行工具,输入以下命令来构建镜像,并将镜像的名称设置为“hello-world”:
$ docker build -t hello-world .
在构建命令中的最后一个参数“.”指代当前目录,Dockerfile文件和app.js文件都应在该目录中。
- 镜像构建完成后,使用以下命令启动容器:
$ docker run -p 3000:3000 -d hello-world
其中,3000:3000参数表示将容器内部的3000端口映射到主机的3000端口,-d参数表示将容器置于后台运行。
- 最后,打开浏览器并输入“http://localhost:3000/”,应该可以看到显示“Hello World”的网页。
离线制作镜像
离线制作镜像是指基于一个空的Docker镜像,并离线安装包、库等依赖,最终生成一个完整的应用程序镜像。这种方式制作出来的镜像较大,但能够完全满足应用程序的部署需求。
下面是基于一个空的Ubuntu镜像,制作一个Node.js应用程序的示例:
- 在本地创建一个文件夹,并在该文件夹中创建一个app.js文件,然后输入以下内容:
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
- 在该文件夹中创建一个Dockerfile文件,并输入以下内容:
FROM ubuntu:latest
MAINTAINER Your Name <you@example.com>
RUN apt-get update && apt-get -y install curl
RUN curl -sL https://deb.nodesource.com/setup_15.x | bash -
RUN apt-get install -y nodejs
WORKDIR /app
COPY . /app
EXPOSE 3000
CMD ["node", "app.js"]
使用apt-get命令来安装curl工具和Node.js环境。
- 在该文件夹中打开命令行工具,输入以下命令以构建镜像,并将镜像的名称设置为“node-hello-world”:
$ docker build -t node-hello-world .
在构建命令中最后一个参数“.”指代当前目录,Dockerfile文件和app.js文件都应在该目录中。
- 镜像构建完成后,使用以下命令启动容器:
$ docker run -p 3000:3000 -d node-hello-world
其中,3000:3000参数表示将容器内部的3000端口映射到主机的3000端口,-d参数表示将容器置于后台运行。
- 最后,打开浏览器并输入“http://localhost:3000/”,应该可以看到显示“Hello World”的网页。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker制作镜像的两种方式(在线制作和离线制作) - Python技术站