Docker創(chuàng)建鏡像兩種方法詳解
Docker創(chuàng)建鏡像
最近學(xué)習(xí)Docker 的知識(shí),偶然在網(wǎng)上看到關(guān)于Docker 創(chuàng)建對(duì)象的兩種方法很好,這里記錄下,也許可以幫助到你。
我們都知道Docker中我們是基于鏡像來(lái)運(yùn)行的容器,那如何創(chuàng)建鏡像呢?創(chuàng)建鏡像有兩種方法,一是使用docker commit命令,二是使用docker build命令和Dockerfile文件。這里我們說(shuō)的創(chuàng)建鏡像是指基于一個(gè)已有的基礎(chǔ)鏡像比如ubuntu等,而不是從零創(chuàng)建一個(gè)全新的鏡像。
下面分別簡(jiǎn)單介紹一下兩種方法。
第一種,使用docker commit創(chuàng)建。
首先我們可以先運(yùn)行一個(gè)容器:
sudo docker run -i-t ubuntu /bin/bash
然后我們可以在這個(gè)容器中進(jìn)行修改,比如安裝一些軟件或者搭建一些環(huán)境等:
apt-get install gcc
最后我們提交這些修改并創(chuàng)建鏡像:
sudo dockercommit 4aa578389 buffoon/gcc
這里4aa578389是修改過(guò)的容器的ID,buffoon/gcc是目標(biāo)鏡像倉(cāng)庫(kù)和鏡像名。我們也可以在commit時(shí)候使用一些參數(shù)來(lái)擴(kuò)充更多信息。比如:
sudo dockercommit -m”A new image with gcc” -a”buffoon” 4aa578389 buf/gcc:mm
上面-m選項(xiàng)指定了鏡像的提交信息,-a選項(xiàng)標(biāo)注了作者信息,最后的:mm是標(biāo)簽。
我們可以sudo dockerimages buffoon/gcc 來(lái)查看新創(chuàng)建的鏡像有沒有成功。要查看鏡像的詳細(xì)信息,可以sudo docker inspect buf/gcc:mm 。
第二種,使用docker build命令和Dockerfile文件創(chuàng)建。
首先我們先創(chuàng)建一個(gè)空目錄,作為構(gòu)建環(huán)境,即Docker中的構(gòu)建上下文:
mkdir gcc cd gcc
然后我們?cè)谠撃夸浿袆?chuàng)建一個(gè)Dockerfile文件:
vim Dockerfile
在文件中編輯:
#Version: 0.0.1 FROM ubuntu:latest MAINTAINERbuffoon xxx@gmail.com RUN apt-getinstall gcc
這個(gè)文件中,F(xiàn)ROM 必須作為第一條指令,是指定基礎(chǔ)鏡像;MAINTAINER指令指明作者的一些信息;RUN 指明了鏡像運(yùn)行時(shí)要執(zhí)行的命令。
然后我們就可以進(jìn)入到構(gòu)建上下文中并執(zhí)行創(chuàng)建:
cd gcc sudo dockerbuild -t=”buffoon/gcc:v1” . //注意最后一個(gè)點(diǎn)號(hào)
-t指定倉(cāng)庫(kù)鏡像標(biāo)簽,最后的點(diǎn)號(hào)是表明從當(dāng)前路徑中尋找Dockerfile文件。
Dockerfile中的指令有很多,這里就不一一介紹了,具體的指令請(qǐng)見:https://docs.docker.com/engine/reference/builder/
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Docker部署Go項(xiàng)目發(fā)布鏡像到倉(cāng)庫(kù)
這篇文章主要為大家介紹了Docker部署Go項(xiàng)目發(fā)布鏡像到倉(cāng)庫(kù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03使用Docker容器部署rocketmq單機(jī)的全過(guò)程
這篇文章主要介紹了使用Docker容器部署rocketmq單機(jī),詳細(xì)介紹了查詢鏡像拉取鏡像的命令,對(duì)Docker部署rocketmq相關(guān)知識(shí)感興趣的朋友一起看看吧2022-04-04Dockerfile中multi-stage(多階段構(gòu)建)詳解
在2017年5月3日即將發(fā)行的 Docker 17.05.0-ce 中,Docker 官方提供了簡(jiǎn)便的多階段構(gòu)建 (multi-stage build) 方案,下面這篇文章主要給大家介紹了關(guān)于Dockerfile中multi-stage(多階段構(gòu)建)的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03Mac下部署springBoot項(xiàng)目到Docker中(demo)
本文通過(guò)一個(gè)簡(jiǎn)單的demo給大家分享Mac下部署springBoot項(xiàng)目到Docker的方法,感興趣的朋友一起看看吧2018-01-01基于docker部署skywalking實(shí)現(xiàn)全鏈路監(jiān)控功能
這篇文章主要介紹了基于docker部署skywalking實(shí)現(xiàn)全鏈路監(jiān)控,skywalking提供了在很多不同的場(chǎng)景下用于觀察和監(jiān)控分布式系統(tǒng)的方式,文中給大家介紹如何快速部署skywalking全鏈路監(jiān)控,感興趣的朋友一起看看吧2022-03-03docker運(yùn)行PostgreSQL數(shù)據(jù)庫(kù)維護(hù)執(zhí)行腳本備份數(shù)據(jù)庫(kù)與更新表結(jié)構(gòu)的方法
這篇文章主要介紹了docker運(yùn)行PostgreSQL數(shù)據(jù)庫(kù)維護(hù),執(zhí)行腳本備份數(shù)據(jù)庫(kù)與更新表結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05docker實(shí)現(xiàn)MySQL數(shù)據(jù)同步的方法
docker的一大好處是在本地可以很方便快速的搭建負(fù)載均衡,主從同步等需要多主機(jī)的環(huán)境,本文主要介紹了docker實(shí)現(xiàn)MySQL數(shù)據(jù)同步的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03