当前位置:首页 » 《关注互联网》 » 正文

Docker如何自定义一个镜像?(三)_夏夏不吃糖的博客

0 人参与  2021年08月19日 10:03  分类 : 《关注互联网》  评论

点击全文阅读


Docker 支持通过扩展现有镜像,以及创建新的镜像。

下面演示如何自制一个自己的镜像,并且使用自制镜像启动容器的实验。

目录

第一步、编辑Dockerfile文件

第2步、编辑requirements.txt文件

第3步、编辑app.py文件

第4步、生成镜像文件

 第5步、使用镜像,启动容器

第6步、访问容器的web服务

 第7步、 启动redis容器

第8步、 再次启动一个自己制作镜像的容器,链接到redis容器 

 第九步、访问容器的web服务


第一步、编辑Dockerfile文件

1、在/下创建一个目录,再进入到该目录:

mkdir /mydocker/
cd /mydocker/

2、创建Dockerfile文件

vim Dockerfile

Dockerfile 文件内容是:

# 使用python3.9版本
FROM python:3.9-slim

# /app文件
WORKDIR /app

# 加载/app文件内容
ADD . /app

RUN pip install --trusted-host  pypi.python.org -r requirements.txt

# 80端口
EXPOSE 80

# 环境ENV的设置:NAME和AUTHOR可以自己设置
ENV NAME World
ENV AUTHOR xiayuzhen

# CMD用来执行文件的
CMD ["python","app.py"]

第2步、编辑requirements.txt文件

创建requirements.txt文件,内容如下:

Flask
Redis

vim requirements.txt

第3步、编辑app.py文件

app.py是程序文件

vim app.py

app.py 文件内容:

from flask import Flask
from redis import Redis, RedisError
import os
import socket

# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \
           "<b>Hostname:</b> {hostname}<br/>" \
           "<b>Visits:</b> {visits}"
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

第4步、生成镜像文件

使用docker bulid -t 生成镜像文件,注意后面一定要使用 “  .  ”把当前目录下的第三个文件都加载进去。

1、查看当前目录下,只有三个刚刚创建的文件:

2、生成镜像文件

docker build -t xyz_friendlyhello_1 .

 会自动从上往下一步一步的执行文件,最后出现successfully就创建镜像成功!

3、查看镜像文件

docker images

 第5步、使用镜像,启动容器

生成一个使用自制镜像的容器:

docker run -d -p 4080:80  --name xyz-hello--1 xyz_friendlyhello_1

第6步、访问容器的web服务

使用curl或者chrome浏览器访问;
 主机ip:4080   

因为redis数据库容器没有启动,flask web服务不能连接到redis数据库

(端口要接容器设定的端口号访问)

 第7步、 启动redis容器

docker run -d -p 6379:6379 --name sc_redis_1 redis

查看启动的容器:

第8步、 再次启动一个自己制作镜像的容器,链接到redis容器 

docker run -d --name xyz-hello--2 -p 4081:80 --link sc_redis_1:redis xyz_friendlyhello_1

 查看容器是否启动,每一次启动后的容器,都查看确保已经启动。

 第九步、访问容器的web服务

使用重新启动容器的端口访问,链接redis后,可以显示出访问次数。

    curl或者chrome浏览器访问
    宿主机ip:4081

 总结:从镜像的制作到代码编写,启动容器并且使用的实验就完成啦,而且还链接到redis查看到访问次数。


点击全文阅读


本文链接:http://zhangshiyu.com/post/25737.html

容器  镜像  文件  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 凤青禾,江明远,***枢小说(别人修仙我捡漏,卷王们破防了)最近更新(凤青禾,江明远,***枢)整本无套路阅读
  • 薛梨小说无删减+后续(曾经亲情似草芥)畅享阅读
  • 沈南栀小说(穿越时空,我要修补时空裂缝)章节目录+起点章节(沈南栀)全篇清爽版在线
  • 未婚妻被巨蟒缠身,我该吃就吃该喝就喝前言+后续_阿豪林月周然后续+番外_小说后续在线阅读_无删减免费完结_
  • 陆骁,陆本初小说(陆骁,陆本初)(癫!睁眼穿成老太太挥鞭***逆子)前传+阅读全新作品预订
  • 姐姐含冤而死后冥王另娶,我杀穿整个地府在线阅读_阎罗殿殷红别提一口气完结_小说后续在线阅读_无删减免费完结_
  • (书荒必看)毒后重生:疯王的神医小娇妻沈清歌,萧绝:+后续热血十足
  • 重生后我和太监联手灭了敌国喻辰,林雪续集(重生后我和太监联手灭了敌国)终极反转(喻辰,林雪)全篇一口气阅读
  • 我不做灵媒后,自称灵媒摆渡人的养妹害怕了内容精选_苏晓霍老阿姐无广告_小说后续在线阅读_无删减免费完结_
  • 前传一别再无相见续集:全文+番外戚许许樵风:结局+番外新上热文
  • 嫂子照顾我怀孕生子,我倒欠她一个孩子最新目录_老公婆婆龙凤胎一口气看完_小说后续在线阅读_无删减免费完结_
  • 卿本祸水小说(苏窈,冰冷,萧霁寒)+起点章节(卿本祸水)阅读

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1