镜像构建流程

  • 1、找一个镜像: centos
  • 2、创建一个容器: docker run centos
  • 3、进入容器: docker exec -it 容器 命令
  • 4、操作: 各种应用配置
  • 5、构造新镜像: docker commit



1、选一个基础镜像

2、启动成一个容器

3、进入容器

4、在容器内容进行配置(例如安装nginx等)

5、基于修改配置的容器构造成新的镜像


Dockerfile就是把上述的镜像构建流程实现脚本自动化!

使用准则

1、大: 首字母必须大写D

2、空: 尽量将Dockerfile放在空目录中。

3、单: 每个容器尽量只有一个功能。

4、少: 执行的命令越少越好。

示例:(将前端项目用容器部署运行起来)

一、手动构建镜像

0、准备工作(宿主机)

  • 先确保你的宿主机的nginx服务已经完全关闭,端口8081、8080未被占用!
  • 准备好一个基础镜像文件
  • windows docker 打包算法模块 dockerfile打包_容器

  • 新建/data/base/目录,存放nginx配置文件前端项目文件

windows docker 打包算法模块 dockerfile打包_Dockerfile_02

  • /data/base/目录下新建启动脚本command.sh内容如下:
cd /data/meiduo_mall/
uwsgi --ini uwsgi.ini
nginx -g "daemon off;"

1、编写/data/base/Dockerfile脚本,内容如下:

# 选择提前准备好的基础镜像
FROM ubuntu:18.04
# 作者
MAINTAINER cfw

# 更新源
RUN apt-get update -y
# 安装nginx
RUN apt-get install nginx -y --allow-unauthenticated
# 安装python3
RUN apt-get install python3-pip -y

# 把本地宿主机的项目工程文件上传到容器(压缩包会自动解压)
ADD front_end_pc.tar.gz /data/

# 切换容器中的目录(工程文件目录),并且安装各种依赖包
# WORKDIR /data/meiduo_mall/
RUN pip3 install -r requirements.txt

# 复制nginx配置文件到容器目录下
COPY 8080.conf /etc/nginx/conf.d/

# 发送容器启动脚本
COPY command.sh /data


# 设置环境变量;作用:指定系统语言为UTF-8;如果不设置,uwsgi运行无法处理中文语言
ENV LC_ALL="zh_CN.utf8"

# 容器开放端口为8000、8080和8081
EXPOSE 8080 8081 8000


# 切换容器目录
WORKDIR /data
# 指定容器运行的启动指令
ENTRYPOINT ["/bin/bash", "command.sh"]

2、在/data/base/目录下,使用Dockerfile脚本生成镜像

docker image build -t meiduo ./

3、运行镜像

docker container run -d --name meiduo --network=host meiduo:latest

4、最后完成,就可以使用浏览器访问部署好的前端页面了

注意:如果运行镜像成容器的时候,使用的网络模型为--network=host (表示:容器和宿主机共享网络)
      则Dockerfile脚本文件定义的开放端口可做可不做。