10、docker镜像构建

简介

在日常的工作中,常常需要制作自己的项目的镜像,一般通过以下两种方式制作镜像:Docker commit、Dockerfile

Docker commit 命令

  • Docker commit 一般用作从一个运行状态的容器来创建一个新的镜像。定制镜像应该使用Dockerfile来完成。默认commit镜像,对外不做解释,不方便排查问题,可维护性差
  • docker commit 容器名 新镜像名:tag

Docker build 命令

  • 忽略文件:.dockerignore
  • 指定文件:docker build -f
  • 添加标签:docker build -t
  • 不使用缓存:docker build --no-cache
  • 构建时变量:docker build --build-arg
    • ARG指令变量

演示

[root@moli flask_web]# cat .dockerignore
build-1.txt
Dockerfile*
[root@moli flask_web]# cat Dockerfile-build 
FROM python:3.7-alpine
LABEL maintainer="13840453509@163.com"

ARG kdir=/home/wangruixia

# 工作路径设定为
WORKDIR $kdir

# 创建环境变量给 Flask 使用
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0

# 复制 app.py 到容器内 /code 目录
COPY ..

# 安装 python 的依赖
RUN pip install flask

# 映射端口
EXPOSE 5000

STOPSIGNAL SIGTERM

# 为容器设置默认启动命令
CMD ["flask", "run"]
[root@moli flask_web]# cat app.py 
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'hello world!'
[root@moli flask_web]# cat requirements.txt 
flask
redis
[root@moli flask_web]# docker build -t app:v2 -f Dockerfile-build .
Sending build context to Docker daemon  7.168kB
[root@moli flask_web]# docker run -d -p 5000:5000 app:v2
bfe01f61e9c3b3ee50af104c2d808b001c302e28acd8b211f1640af855d5f8b1

此时浏览器访问5000端口可以看到hello world

[root@moli flask_web]# docker exec -it focused_swirles sh
/home/wangruixia # ls
__pycache__         app.py              docker-compose.yml  requirements.txt
/home/wangruixia # pwd
/home/wangruixia
/home/wangruixia # ls -a
.                   ..                  .dockerignore       .env                __pycache__         app.py              docker-compose.yml  requirements.txt
[root@moli flask_web]# docker build -t app:v2 -f Dockerfile-build --no-cache .
Sending build context to Docker daemon  7.168kB
[root@moli flask_web]# docker build -t app:v2 -f Dockerfile-build --no-cache --build-arg kdir=/root .
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值