下面是关于一篇文章弄懂Docker镜像的制作、上传、拉取和部署的完整攻略,包含两个示例说明。
Docker镜像制作
Docker镜像是Docker容器的基础。制作一个Docker镜像的过程一般可以分为以下步骤:
- 编写一个Dockerfile,这是Docker镜像的构建脚本,用于描述该镜像的组成、依赖和其他信息。一个简单的Dockerfile可以如下:
dockerfile
# 版本信息
FROM alpine:latest
# 添加预安装软件包
RUN apk add --no-cache nginx
# 添加网站文件
ADD index.html /usr/share/nginx/html/
# 暴露80端口
EXPOSE 80
# 启动命令
CMD ["nginx", "-g", "daemon off;"]
- 执行Docker build命令构建Docker镜像:
shell
$ docker build -t mynginx:latest .
这个命令会在当前路径下读取Dockerfile文件,并基于该文件构建名为mynginx:latest
的Docker镜像。
Docker镜像上传
Docker镜像可以通过Docker Hub上传和分享,也可以使用私有的Docker Registry上传和分享。
下面以使用Docker Hub为例,介绍如何上传镜像:
- 在Docker Hub上注册账号:
shell
$ docker login
访问https://hub.docker.com/
,注册账号或者使用已有账号登录。
- 标记本地的Docker镜像:
shell
$ docker tag mynginx:latest your-docker-hub-username/mynginx:latest
将本地的镜像标记为可以上传到Docker Hub上的格式your-docker-hub-username/mynginx:latest
。
- 上传标记的Docker镜像:
shell
$ docker push your-docker-hub-username/mynginx:latest
将标记的Docker镜像推送到Docker Hub。
Docker镜像拉取
Docker镜像可以从Docker Hub或私有的Docker Registry中拉取到本地。
下面以从Docker Hub中拉取镜像为例:
$ docker pull your-docker-hub-username/mynginx:latest
这个命令会从Docker Hub上拉取标记的镜像并存储到本地。
Docker容器部署
Docker容器是Docker镜像的实例化运行,可以使用Docker命令快速地启动、停止、删除容器。
下面以使用Nginx镜像部署一个网站为例:
- 启动一个新的Nginx容器:
shell
$ docker run --name mynginx -d -p 8000:80 mynginx:latest
这个命令会启动一个名为mynginx
的Nginx容器,并将容器的80端口映射到本地的8000端口。
- 访问Nginx容器中的网站:
访问http://localhost:8000/
,将会看到Docker镜像中预先配置好的index.html
页面。
- 停止并删除容器:
shell
$ docker stop mynginx
$ docker rm mynginx
这两个命令分别用于停止、删除该容器。
示例
下面提供两个示例:
示例一
假设有一个简单的Hello World网站,需要用Docker部署。该网站的文件结构如下:
mywebsite/
└── index.html
该网站的index.html内容如下:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
接下来,需要通过Docker将该网站部署到Nginx上,具体步骤如下:
- 在mywebsite目录下创建一个Dockerfile文件,内容如下:
dockerfile
# 版本信息
FROM nginx:latest
# 添加网站文件
ADD index.html /usr/share/nginx/html/
这个Dockerfile文件将基于nginx:latest
镜像,并添加index.html
文件到Nginx的默认网站目录。
- 执行Docker build命令构建Docker镜像:
shell
$ docker build -t mynginx:latest .
- 执行Docker run命令启动容器并发布网站:
shell
$ docker run --name mynginx -d -p 8000:80 mynginx:latest
访问http://localhost:8000/
,将会看到Hello World网站。
示例二
假设需要将Python Flask应用程序Docker化并部署,该应用程序的文件结构如下:
myapp/
├── app.py
└── requirements.txt
该应用程序的依赖在requirements.txt
文件中,具体内容如下:
flask==1.1.2
接下来,我们需要用Docker将该应用程序部署到容器中,具体步骤如下:
- 在myapp目录下创建一个Dockerfile文件,内容如下:
dockerfile
# 版本信息
FROM python:3.8
# 设置工作目录
WORKDIR /app
# 复制文件并安装依赖包
ADD . /app
RUN pip install --no-cache-dir -r requirements.txt
# 暴露5000端口
EXPOSE 5000
# 启动命令
CMD ["python", "app.py"]
这个Dockerfile文件将基于python:3.8
镜像,并安装requirements.txt
文件中的依赖包,同时该文件将使用5000端口作为服务端口。
- 执行Docker build命令构建Docker镜像:
shell
$ docker build -t myapp:latest .
- 执行Docker run命令启动容器并发布服务:
shell
$ docker run --name myapp -d -p 5000:5000 myapp:latest
访问http://localhost:5000/
,将会看到Flask应用程序启动的Hello World信息。
以上就是一篇文章弄懂Docker镜像的制作、上传、拉取和部署的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章弄懂Docker镜像的制作、上传、拉取和部署 - Python技术站