IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Docker镜像的制作 -> 正文阅读

[Python知识库]Docker镜像的制作

目录

一、镜像images

二、镜像的层次结构

三、镜像的制作


一、镜像images

A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.(来自docker官方文档)

镜像可以理解成一个软件,是一个app的封装,里面有核心代码,系统工具,系统库等。

二、镜像的层次结构

容器启动的时候,内核启动bootfs后直接将base镜像加载,然后一层一层的加载,是自下而上;

容器运行后访问文件的时候,是自上而下,一层一层往下访问的。

scratch是最基础的docker镜像,是一个空白的镜像。

镜像分层结构的最大好处就是资源共享。

?可写层和镜像层:当容器启动时,一个新的可写层被加载到镜像的顶部,这一层被称作“容器层”,容器层之下的都叫“镜像层”。所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。

三、镜像的制作

接下来只是制作镜像一个流程,下一篇博客会具体解释dockerfile里的指令已经镜像的制作

1.新建一个空目录

[root@docker mydocker]# mkdir mydocker
[root@docker mydocker]# cd mydocker/

2.新建Dockerfile文件

[root@docker mydocker]# vim Dockerfile 

#下载一个python2.7的基础镜像模板(python3.9也行)
FROM python:2.7-slim
#创建容器后,进入docker容器所在的目录
WORKDIR /app
#复制当前目录下的所有的内容到容器里的/app目录下
ADD . /app
#数据卷,可以不写
VOLUME ["/data_flask"]
#下载requirements.txt里的库,在制作镜像的时候运行
RUN pip install --trusted-host pypi.python.org -r requirements.txt
#表示开放80端口
EXPOSE 80
#声明环境变量NAME,值为World
ENV NAME World
#容器启动的时候执行的命令
CMD ["python","app.py"]

3.新建requirements.txt文件

[root@docker mydocker]# vim requirements.txt
[root@docker mydocker]# cat requirements.txt 
Flask
Redis

4.新建app.py文件

[root@docker mydocker]# vim 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)

5.生成名字为sc_friendlyhello_1的镜像

[root@docker mydocker]# docker build -t sc_friendlyhello_1 .

6.查看生成的镜像

[root@docker mydocker]# docker images 
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
sc_friendlyhello_1      latest              e2dc0bc22059        2 seconds ago      151 MB

7.创建并运行容器

[root@docker mydocker]# docker run -d -p 4000:80 --name sc-hello-1 sc_friendlyhello_1

8.测试

在另一个终端去执行,下面表示在linux里去访问网站

[root@docker ~]# curl  192.168.10.10:4000
<h3>Hello World!</h3><b>Hostname:</b> 102212ba7691<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>

此时可以说明自己制作的镜像已经成功,但是发现不能连接到redis数据库,因为当前还没有启动redis数据库容器,所以web服务不能连接到redis数据库,接下来我们再拉取redis镜像,并且启动一个redis容器,再次启动一个自己制作镜像的容器,链接到redis容器.,然后再去测试。

[root@docker ~]# docker pull redis
[root@docker ~]# docker run -d -p 6379:6379 --name sc-redis-1 redis
[root@docker ~]# docker run -d --name sc-hello-2 -p 4001:80 --link sc-redis-1:redis sc_friendlyhello_1
[root@docker ~]# curl 192.168.10.10:4001
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 12:01:31  更:2021-08-19 12:02:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 12:00:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计