四十六、Docker Compose-镜像构建与拉取

使用compose构建镜像

  • 在docker-compose文件中使用build参数来构建镜像
    注意:需要将构建镜像所需要的文件以及Dockerfile放到一个目录中
version: "3.8"

services:
  flask-demo:
    build: ./flask
    environment:
      - REDIS_HOST=redis-server
    networks:
      - demo-network
    ports:
      - 8080:5000

  redis-server:
    image: redis:latest
    networks:
     - demo-network

networks:
  demo-network:
  • 然后使用docker-compose build来构建
[root@localhost docker_exec]# docker-compose build
redis-server uses an image, skipping
Building flask-demo
Sending build context to Docker daemon  3.072kB
Step 1/8 : FROM python:3.9.5-slim
3.9.5-slim: Pulling from library/python
b4d181a07f80: Pull complete
a1111a8f2ec3: Pull complete
445d04774519: Pull complete
24f3f85d41f3: Pull complete
d299f7fb612d: Pull complete
Digest: sha256:9828573e6a0b02b6d0ff0bae0716b027aa21cf8e59ac18a76724d216bab7ef04
Status: Downloaded newer image for python:3.9.5-slim
 ---> c71955050276
Step 2/8 : RUN pip install flask redis &&     groupadd -r flask && useradd -r -g flask flask &&     mkdir /src &&     chown -R flask:flask /src
 ---> Running in 61a9ea4f8b0c
Collecting flask
  Downloading Flask-2.0.2-py3-none-any.whl (95 kB)
Collecting redis
  Downloading redis-4.0.2-py3-none-any.whl (119 kB)
Collecting Werkzeug>=2.0
  Downloading Werkzeug-2.0.2-py3-none-any.whl (288 kB)
Collecting click>=7.1.2
  Downloading click-8.0.3-py3-none-any.whl (97 kB)
Collecting itsdangerous>=2.0
  Downloading itsdangerous-2.0.1-py3-none-any.whl (18 kB)
Collecting Jinja2>=3.0
  Downloading Jinja2-3.0.3-py3-none-any.whl (133 kB)
Collecting MarkupSafe>=2.0
  Downloading MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (30 kB)
Collecting deprecated
  Downloading Deprecated-1.2.13-py2.py3-none-any.whl (9.6 kB)
Collecting wrapt<2,>=1.10
  Downloading wrapt-1.13.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (81 kB)
Installing collected packages: wrapt, MarkupSafe, Werkzeug, Jinja2, itsdangerous, deprecated, click, redis, flask
Successfully installed Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 deprecated-1.2.13 flask-2.0.2 itsdangerous-2.0.1 redis-4.0.2 wrapt-1.13.3
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 21.1.3; however, version 21.3.1 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
Removing intermediate container 61a9ea4f8b0c
 ---> af1a64177a64
Step 3/8 : USER flask
 ---> Running in 649da782ea69
Removing intermediate container 649da782ea69
 ---> 684e7f278baf
Step 4/8 : COPY app.py /src/app.py
 ---> 9e0ec93ea547
Step 5/8 : WORKDIR /src
 ---> Running in 785abca85c97
Removing intermediate container 785abca85c97
 ---> fdb04de07568
Step 6/8 : ENV FLASK_APP=app.py REDIS_HOST=redis
 ---> Running in 25d62f18b650
Removing intermediate container 25d62f18b650
 ---> bbcd791e0d7b
Step 7/8 : EXPOSE 5000
 ---> Running in f6f37e829600
Removing intermediate container f6f37e829600
 ---> f000ea534a32
Step 8/8 : CMD ["flask", "run", "-h", "0.0.0.0"]
 ---> Running in 34c9dde3da21
Removing intermediate container 34c9dde3da21
 ---> 7e1bb6b79a10
Successfully built 7e1bb6b79a10
Successfully tagged docker_exec_flask-demo:latest
[root@localhost docker_exec]#
[root@localhost docker_exec]#
[root@localhost docker_exec]# docker image ls
REPOSITORY               TAG          IMAGE ID       CREATED          SIZE
docker_exec_flask-demo   latest       7e1bb6b79a10   33 seconds ago   127MB
python                   3.9.5-slim   c71955050276   5 months ago     115MB

镜像的命名

  • 在docker-compose文件中加上image参数可指定镜像名称,如果不指定的话镜像名称前缀就会加上project(当前目录)的名称
version: "3.8"

services:
  flask-demo:
    build: ./flask
    image: flask-demo:latest
    environment:
      - REDIS_HOST=redis-server
    networks:
      - demo-network
    ports:
      - 8080:5000

  redis-server:
    image: redis:latest
    networks:
     - demo-network

networks:
  demo-network:

指定Dockerfile进行构建

  • 在build中加上context以及dockerfile参数,这里把标准的Dockerfile名称改为Dockerfile.dev
    • context:指定文件目录
    • dockerfile:指定dockerfile的名称
version: "3.8"

services:
  flask-demo:
    build:
      context: ./flask
      dockerfile: Dockerfile.dev
    image: flask-demo:latest
    environment:
      - REDIS_HOST=redis-server
    networks:
      - demo-network
    ports:
      - 8080:5000

  redis-server:
    image: redis:latest
    networks:
     - demo-network

networks:
  demo-network:

拉取镜像

  • 使用docker-compose pull来拉取镜像
[root@localhost docker_exec]# docker-compose pull
Pulling flask-demo   ... done
Pulling redis-server ... done
WARNING: Some service image(s) must be built from source by running:
    docker-compose build flask-demo

Note
通过docker-compose build以及docker-compose pull可以提前准备好镜像。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容