最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章弄懂Docker鏡像的制作、上傳、拉取和部署

 更新時(shí)間:2021年08月30日 09:36:32   作者:未末0902  
Docker包含三個(gè)基本概念,分別是鏡像(Image)、容器(Container)和倉(cāng)庫(kù)(Repository),鏡像是 Docker 運(yùn)行容器的前提,這篇文章主要給大家介紹了如何通過(guò)一篇文章弄懂Docker鏡像的制作、上傳、拉取和部署的相關(guān)資料,需要的朋友可以參考下

一、鏡像(images)

1. 什么是鏡像?

(1)按照百度百科的解釋?zhuān)虹R像(Mirroring)是一種文件存儲(chǔ)形式,是冗余的一種類(lèi)型,一個(gè)磁盤(pán)上的數(shù)據(jù)在另一個(gè)磁盤(pán)上存在一個(gè)完全相同的副本即為鏡像。

(2)可以把許多文件做成一個(gè)鏡像文件,與GHOST等程序放在一個(gè)盤(pán)里用GHOST等軟件打開(kāi)后,又恢復(fù)成許多文件,RAID 1和RAID 10使用的就是鏡像。

(3)常見(jiàn)的鏡像文件格式有ISO、BIN、IMG、TAO、DAO、CIF、FCD。

看完之后是不是更暈了?

其實(shí)簡(jiǎn)單來(lái)說(shuō),鏡像就是是一個(gè)app的封裝,里面有程序代碼,基礎(chǔ)系統(tǒng),依賴(lài)庫(kù),工具。
再通俗地講,有點(diǎn)類(lèi)似APP 的安裝包。

2. 鏡像的組成和用途

(1)Dockerfile

: 是制作鏡像的文件的配方

就像一種祖?zhèn)髅胤剑?云南白藥: 林芝,人參,鹿茸,三七等

(2)scratch

: 是最基礎(chǔ)的docker鏡像,相當(dāng)于一個(gè)地基—》空白的鏡像,什么都沒(méi)有 --》白手起家

用別的鏡像做基礎(chǔ)鏡像: 其他鏡像可以之為基礎(chǔ)進(jìn)行擴(kuò)展–就像站在巨人的肩膀上。

但是我們需要,萬(wàn)丈高樓平地起,一步一個(gè)腳印👣去制作鏡像

(3)一個(gè)完整的操作系統(tǒng)需要:

1.kernel
2.系統(tǒng)調(diào)用
3.應(yīng)用程序、庫(kù)
4.shell等

bootfs --》容器啟動(dòng)的時(shí)候需要的內(nèi)容

rootfs --》容器內(nèi)部的操作系統(tǒng)

docker save

docker export

原理:

容器啟動(dòng)的時(shí)候,內(nèi)核啟動(dòng)bootfs后直接將基礎(chǔ)鏡像加載,然后一層一層的加載–》自下而上

容器運(yùn)行后訪問(wèn)文件的時(shí)候,從上而下,從可寫(xiě)層,一層一層往下訪問(wèn)。

3. 為什么要自己制作鏡像?

以前在Linux 中下載mysql,Centos 系統(tǒng)中需要使用yum 命令,在學(xué)習(xí)完doker技術(shù)以后,需要什么軟件,只需要在docker 上面pull 就可以得到,docker 就像是一個(gè)巨大的資源庫(kù),只有你想不到的東西,沒(méi)有它沒(méi)有的東西。

有些同學(xué)說(shuō):是技術(shù)限制了我對(duì) docker 的想象,流下了悔恨的淚水。

哪有些同學(xué)就說(shuō)了,那既然docker 這么方便,上面有那么多的鏡像文件,為什么還需要我們自己去制作呢?需要啥 pull 啥不就可以了嘛?

但是,在公司中往往需要自己制作鏡像文件,因?yàn)閯e人制作的東西往往會(huì)不放心,或者某些特定的需求不能滿足。就像你去買(mǎi)茅臺(tái)酒,商家說(shuō)這是十年的茅臺(tái),你就信他?這就是十年的茅臺(tái)?不去鑒定一下?如果是土豪,就當(dāng)我沒(méi)說(shuō),哈哈啊哈

二、鏡像制作的步驟(10步法)

第1步:編輯Dockerfile

[root@sc-docker-server ~]# mkdir /mydocker/
[root@sc-docker-server ~]# cd /mydocker/
[root@sc-docker-server mydocker]#

[root@sc-docker-server mydocker]# vim Dockerfile
FROM python:2.7-slim
WORKDIR /app
ADD . /app
RUN pip install --trusted-host  pypi.python.org -r requirements.txt
EXPOSE 80
ENV NAME World
ENV AUTHOR cali
CMD ["python","app.py"]

第2步:編輯requirements.txt文件

[root@sc-docker-server mydocker]# vim requirements.txt
Flask
Redis

第3步:編輯app.py文件,我們的程序文件

[root@sc-docker-server 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)

第4步:生成鏡像文件

[root@sc-docker-server mydocker]#docker build -t sc_friendlyhello_1 .
docker build -t sc_friendlyhello_1 .
Sending build context to Docker daemon  4.608kB
Step 1/9 : FROM python:2.7-slim
 ---> eeb27ee6b893
Step 2/9 : WORKDIR /app
 ---> Using cache
 ---> 81aa71984f63
Step 3/9 : ADD . /app
 ---> Using cache
 ---> a5c7c6ed471c
Step 4/9 : VOLUME ["/data_flask"]
 ---> Using cache
 ---> d4db66a741db
Step 5/9 : RUN pip install --trusted-host  pypi.python.org -r requirements.txt
 ---> Using cache
 ---> bcdee009e5f7
Step 6/9 : EXPOSE 80
 ---> Using cache
 ---> 475474ce55ff
Step 7/9 : ENV NAME World
 ---> Using cache
 ---> 0f03ead6c99b
Step 8/9 : ENV AUTHOR cali
 ---> Using cache
 ---> f844eb0f1a78
Step 9/9 : CMD ["python","app.py"]
 ---> Using cache
 ---> ab30484b56b8
Successfully built ab30484b56b8
Successfully tagged sc_friendlyhello_1:latest
[root@sc-docker-server mydocker]#

第5步:檢查鏡像是否成功

[root@sc-docker-server mydocker]# docker images
REPOSITORY                 TAG        IMAGE ID       CREATED          SIZE
sc_friendlyhello_1         latest     ab30484b56b8   32 minutes ago   159MB

第6步:使用鏡像,啟動(dòng)容器

docker run -d -p 5080:80  --name sc-hello-1 sc_friendlyhello_1

第7步:訪問(wèn)容器的web服務(wù)

curl或者chrome瀏覽器訪問(wèn)
宿主機(jī)ip:5080
Hello World!
Hostname: f4aeb5d5305a
Visits: cannot connect to Redis, counter disabled

因?yàn)閞edis數(shù)據(jù)庫(kù)容器沒(méi)有啟動(dòng),flask web服務(wù)不能連接到redis數(shù)據(jù)庫(kù)

第8步:?jiǎn)?dòng)redis容器

docker run -d -p 6379:6379 --name sc-redis-1 redis

第9步:再次啟動(dòng)一個(gè)自己制作鏡像的容器,鏈接到redis容器

docker run -d --name sc-hello-2 -p 5081:80 --link sc-redis-1:redis sc_friendlyhello_1

第10步:訪問(wèn)容器的web服務(wù)

curl或者chrome瀏覽器訪問(wèn)
宿主機(jī)ip:5081
Hello World!
Hostname: aad7da1892b5
Visits: 15

三. 鏡像制作的作業(yè)

作業(yè)

1.升級(jí) sc_friendlyhello_1的鏡像里的基礎(chǔ)鏡像為python:3.9
自己的鏡像更名為sc_friendlyhello_2
2.啟動(dòng)容器和redis容器,測(cè)試訪問(wèn)**

作業(yè)步驟:

安裝上傳的文件

root@sc-docker-server ~]# yum install lrzsz -y  安裝上傳的軟件
上次元數(shù)據(jù)過(guò)期檢查:0:25:32 前,執(zhí)行于 2021年08月18日 星期三 09時(shí)52分02秒。
軟件包 lrzsz-0.12.20-43.el8.x86_64 已安裝。
依賴(lài)關(guān)系解決。
無(wú)需任何處理。
完畢!
[root@sc-docker-server ~]#

第1步:下載app源代碼

https://github.com/docker/getting-started 在windows里下載,然后上傳到linux里 yum install git -y 

linux里: git clone https://github.com/califeng/getting-started.git

第2步:解壓app源代碼壓縮包

[root@sc-docker-server ~]# yum install zip unzip -y

    [root@sc-docker-1 ~]# unzip getting-started-master.zip 

第3步:進(jìn)入app目錄,去新建一個(gè)Dockerfile

    [root@sc-docker-1 getting-started-master]# cd app/
    [root@sc-docker-1 app]# vim Dockerfile
FROM node:12-alpine
WORKDIR /app
COPY  . .
RUN yarn install --production
CMD ["node", "src/index.js"]

第4步:制作鏡像

[root@sc-docker-1 app]# docker build -t getting-started .
-t getting-started 是指定制作的鏡像的名字,名字可以自己定義



[root@sc-docker-1 app]# docker images  查看制作的鏡像
REPOSITORY                TAG         IMAGE ID       CREATED          SIZE
getting-started           latest      5b903e857b8c   25 seconds ago   179MB
redis                     latest      cc69ae189a1a   2 days ago       105MB
nginx                     1.19.7      35c43ace9216   7 days ago       133MB
nginx                     latest      35c43ace9216   7 days ago       133MB
mysql                     5.7.33      5f47254ca581   2 weeks ago      449MB
nginx                     1.19.6      f6d0b4767a6c   6 weeks ago      133MB
node                      12-alpine   0206ff8a5f9e   7 weeks ago      88.9MB
richarvey/nginx-php-fpm   latest      5c3ad1891297   5 months ago     506MB
hello-world               latest      bf756fb1ae65   13 months ago    13.3kB
jcdemo/flaskapp           latest      4f7a2cc79052   2 years ago      88.7MB
[root@sc-docker-1 app]#

第5步:?jiǎn)?dòng)自己制作的鏡像的容器

[root@sc-docker-1 app]# docker run -dp 3000:3000 getting-started
8f150a72e7d2d1650685b00a18d237469fa07c8cd56977773dd266b281a3b4ad
[root@sc-docker-1 app]# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS         PORTS                    NAMES
8f150a72e7d2   getting-started   "docker-entrypoint.s…"   5 seconds ago   Up 3 seconds   0.0.0.0:3000->3000/tcp   strange_benz
deabb58e01b0   nginx             "/docker-entrypoint.…"   26 hours ago    Up 2 hours     0.0.0.0:6655->80/tcp     chenpeng
[root@sc-docker-1 app]# 

第6步:打開(kāi)瀏覽器去訪問(wèn)容器里的網(wǎng)站

容器里的網(wǎng)站:http://192.168.0.161:3000/

總結(jié)

1.鏡像的制作是作為docker 技術(shù)中必備的技能,你說(shuō)你會(huì)docker ,別人一定會(huì)問(wèn)你鏡像的制作嗎?你說(shuō)制作那玩意干啥,別人就會(huì)會(huì)心一笑,心里一想這個(gè)人的技術(shù)一定很low,連這個(gè)都不會(huì),還說(shuō)自己會(huì)docker,呵呵。

2.后面有關(guān)鏡像制作有詳細(xì)的步驟,鏡像制作十步法會(huì)教你怎么去做的,慢慢來(lái),一步一步來(lái)做。

到此這篇關(guān)于Docker鏡像制作、上傳、拉取和部署的文章就介紹到這了,更多相關(guān)Docker鏡像制作、上傳、拉取和部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用 Docker 部署 Apache Spark 集群的過(guò)程

    使用 Docker 部署 Apache Spark 集群的過(guò)程

    本文介紹了如何使用Docker和DockerCompose快速部署一個(gè)包含一個(gè)Master節(jié)點(diǎn)和兩個(gè)Worker節(jié)點(diǎn)的Spark集群,通過(guò)創(chuàng)建docker-compose.yml文件并執(zhí)行相關(guān)命令,可以實(shí)現(xiàn)集群的構(gòu)建和啟動(dòng),感興趣的朋友一起看看吧
    2025-02-02
  • docker網(wǎng)段沖突如何解決

    docker網(wǎng)段沖突如何解決

    這篇文章主要為大家介紹了docker網(wǎng)段沖突的解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2023-05-05
  • Docker無(wú)法stop或者rm指定容器問(wèn)題解決方案

    Docker無(wú)法stop或者rm指定容器問(wèn)題解決方案

    這篇文章主要介紹了Docker無(wú)法stop或者rm指定容器問(wèn)題解決方案,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • docker啟動(dòng)mysql5.7服務(wù)詳細(xì)說(shuō)明

    docker啟動(dòng)mysql5.7服務(wù)詳細(xì)說(shuō)明

    這篇文章主要給大家介紹了關(guān)于docker啟動(dòng)mysql5.7服務(wù)的相關(guān)資料,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-09-09
  • python 編寫(xiě)輸出到csv的操作

    python 編寫(xiě)輸出到csv的操作

    這篇文章主要介紹了python 編寫(xiě)輸出到csv的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 詳解docker搭建redis集群的環(huán)境搭建

    詳解docker搭建redis集群的環(huán)境搭建

    本篇文章主要介紹了詳解docker搭建redis集群的環(huán)境搭建,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • docker配置普通用戶訪問(wèn)的三種方法

    docker配置普通用戶訪問(wèn)的三種方法

    本文主要介紹了docker配置普通用戶訪問(wèn)的三種方法,讓普通用戶在Ubuntu系統(tǒng)上無(wú)需使用sudo權(quán)限即可使用Docker,每種方法都詳細(xì)說(shuō)明了具體步驟,并附帶了相關(guān)命令,感興趣的可以了解一下
    2024-11-11
  • Docker load之后鏡像名字為none問(wèn)題解決方法

    Docker load之后鏡像名字為none問(wèn)題解決方法

    這篇文章主要介紹了Docker load之后鏡像名字為none問(wèn)題解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • spring-boot構(gòu)建docker鏡像上傳倉(cāng)庫(kù)的示例教程

    spring-boot構(gòu)建docker鏡像上傳倉(cāng)庫(kù)的示例教程

    這篇文章主要介紹了spring-boot構(gòu)建docker鏡像上傳倉(cāng)庫(kù),受限創(chuàng)建一個(gè)簡(jiǎn)單spring-boot-web項(xiàng)目,查看鏡像上傳倉(cāng)庫(kù)這時(shí)候有兩種解決方案,對(duì)docker鏡像上傳倉(cāng)庫(kù)相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • Docker文件映射實(shí)現(xiàn)主機(jī)與容器間目錄的雙向映射

    Docker文件映射實(shí)現(xiàn)主機(jī)與容器間目錄的雙向映射

    本地文件系統(tǒng)和容器中的文件系統(tǒng)之間的交互是一項(xiàng)必不可少的功能,本文主要介紹了Docker文件映射實(shí)現(xiàn)主機(jī)與容器間目錄的雙向映射,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03

最新評(píng)論

枣阳市| 房山区| 手机| 依安县| 偃师市| 会理县| 丹凤县| 锦屏县| 中西区| 介休市| 安宁市| 山东省| 西乌珠穆沁旗| 绥宁县| 宁国市| 都安| 大厂| 孝昌县| 黑山县| 普安县| 罗源县| 信丰县| 石屏县| 清徐县| 竹山县| 新沂市| 会泽县| 连南| 宜宾市| 平乡县| 西峡县| 于田县| 仁化县| 阿克苏市| 子长县| 宁乡县| 独山县| 都安| 昌图县| 望江县| 阳新县|