Docker學習之建立映象

2021-10-01 13:12:25 字數 3607 閱讀 6047

基於已有的基礎映象執行的容器例項,對其進行修改,然後commit成新的映象

docker commit -a "[email protected] # author" -m "comment message" 容器名稱orid itany/nginx:v1.0

說明: -a -m 都是可選的

itany/nginx:v1.0 中的itany/ 可選,表示命名空間;:v1.0 可選,表示版本tag

整體itany/nginx:v1.0 都是可選的,那麼預設映象名字以及標籤都為

基於dockerfile,對已有映象進行修改,然後build成新的映象

dockerfile是乙個包含建立映象所需的所有指令的文字檔案

docker build -f dockerfile -t itany/nginx:v2.0 .

說明: -f 指定dockerfile路徑,預設就是當前路徑下的dockerfile

-t 指定新映象名稱和版本

. 表示上下文,一般就是.表示當前路徑

因為映象是包含了所有了執行該軟體的所有環境,

所以那麼大。

每一層映象只會在本地保留乙份。

再拉取乙個映象的時候,如果所需的映象層已經在本地有了,

就不需要再拉取一遍。

規則:

1. 全部指令以大寫字母書寫

2. 以from指令開頭

3. 從上往下執行

4. # 表示注釋

5. 每執行一條命令,就增加一層映象層

常用指令:

from 指定基礎映象

from itany/nginx:v2.0

env 定義環境變數

env mypath /usr/local

run 執行一條指令

run yum install -y vim

使用 && 來執行多條

run mkdir -p /usr/src/things \

&& curl -sl \

| tar -xjc /usr/src/things \

&& make -c /usr/src/things all

cmd 在映象生成容器時指定的命令(也就是run命令)

cmd ["/bin/bash"] # cmd指令雖然可以有多個,但是以最後乙個cmd指令為準

cmd ["/bin/ls", "/"] # 可以為主命令指定引數

# cmd指令會被run時指定的命令覆蓋掉

volume 指定掛載目錄,(實現資源共享,資料持久化)

只能指定映象中的目錄,

無法指定宿主機的目錄,宿主機的目錄是自動生成的,可通過容器元資訊獲得

volumn ["/data1", "/data2"]

workdir 指定當登入容器後,進入的工作目錄,

不指定,預設為/目錄

workdir $mypath

maintainer 維護者(作者)

maintainer [email protected]

entrypoint 與cmd類似,

# entrypoint指令也可以有多個,也是以最後乙個指令為準

# 可以為主命令指定引數

# entrypoint指令不會覆蓋run時指定的命令,而是會當作entrypoint指令的引數,組成新的指令

# 就理解為拼接在了一起

關於執行指令:

如果最後一條指令不是/bin/bash的話

指定你指定的命令後,容器退出,

之後再怎麼重啟容器都不會生效。

只能刪除,再次啟動並且指定/bin/bash(當然entrypoint會把它當做引數,所以要留意一點)

expose # 暴露埠

# expose命令只是宣告了容器應該開啟的埠並沒有實際上將它開啟!

# 如果你不用-p或者-p(隨機選主機的乙個埠進行對映)中指定要對映的埠,你的容器是不會對映埠出去的,

expose 8080 8090

copy # 拷貝主機檔案到映象中,(不能拷貝目錄,如果指定目錄則是把目錄中的所有內容拷貝過去)

copy copy file.txt /usr/local

copy和add所拷貝的檔案必須跟dockerfile保持在同一目錄下

(因為build時,預設指定的上下文就是當前目錄,也就是我們寫的那個.)

(當然你可以改變上下文,例如:/etc/local)

可以使用萬用字元* 和 ?

add # 拷貝主機檔案到映象中,(不能拷貝目錄,如果指定目錄則是把目錄中的所有內容拷貝過去)

# 如果是壓縮檔案直接解壓

add add nginx.tar.gz /usr/local/nginx

五、發布映象到阿里雲開發者平台

step1:

step2: 建立命名空間

step3: 建立映象倉庫

摘要:倉庫的摘要

描述:映象的描述

step4: 管理 --> 操作指南

將映象推送到registry

# 登入阿里雲docker registry

docker login --username=空靈飄渺之旅sap registry.cn-shenzhen.aliyuncs.com

--password=密碼(太複雜的密碼不適用)

-u-p

# 建立指定映象的tag,歸入某個倉庫

docker tag [imageid] registry.cn-shenzhen.aliyuncs.com/hardy9sap/studyrepos:[映象版本號]

# 推送

docker push registry.cn-shenzhen.aliyuncs.com/hardy9sap/studyrepos:[映象版本號]

選擇合適的映象倉庫位址

從ecs推送映象時,可以選擇使用映象倉庫內網位址。

推送速度將得到提公升並且將不會損耗您的公網流量。

如果您使用的機器位於vpc網路,請使用 registry-vpc.cn-shenzhen.aliyuncs.com 作為registry的網域名稱登入,並作為映象命名空間字首。

公網位址

專有網路

經典網路

#從registry拉取映象

docker pull registry.cn-shenzhen.aliyuncs.com/hardy9sap/studyrepos:[映象版本號]

# 退出登入

docker logout [registry.cn-shenzhen.aliyuncs.com/] # 不指定預設登出dockerhub

Docker映象建立

2 建立步驟 2 執行容器。3 修改容器。4 將容器儲存為新的映象。開啟乙個新的xshell視窗 docker pull options name tag digest docker images options repository tag docker run options image com...

docker 建立映象

主要有三種 基於已有映象的容器建立 基千本地模板匯入 基於 dockerfile建立。該方法主要是使用 docker container commit命令。命令格式為docker container commit options container repository tag 主要選項包括 a,a...

Docker學習之給Docker配置映象加速 5

ubuntu系統環境介紹介紹 ubuntu版本 18.04.1 系統配置 64位 linux核心 5.3.0 42 generic 一般情況下預設安裝的docker沒有daemon.json,我們可以通過以下命令進行新建daemon.json檔案 acestang acestang sudo vim...