docker區塊鏈鏡像
❶ Docker如何創建鏡像
如何通過dockerhistory命令來對docker鏡像進行反向工程推測它們的Dockerfile,從而在對不同的Docker鏡像反向工程獲取Dockerfile之後合並成一個。常言道,「不要重復發明輪子!」在使用docker時,最好在構建你自己的鏡像前上DockerHub尋找一些直接可以用的。把你的軟體架構分布到一系列容器中,每一個容器只做一件事情是非常有用的。構建分布式應用的最好的基石是使用來自DockerHub的官方鏡像,因為你可以信任它們的質量。在某些情況下,你可能想讓一個容器做兩件不同的事情。在另一些情況下,你可能想讓一個Docker鏡像包含來自兩個不同鏡像的依賴。如果你有每個鏡像的Dockerfile,這是非常簡單的。將它們組織到一個Dockerfile里然後build即可。但是,如果大多數時間你都在使用DockerHub上准備好的鏡像,你將沒有它們的源Dockerfile。我花了一些時間來找這樣一個工具,它可以合並(或flatten)兩個不同的我沒有它們的Dockerfile的Docker鏡像。即我在找一個能做下面這件事的東西:image1--\--->merged_image_12/image2--盡管這個問題在之前的兩個進程中被關閉了(1,2),當你想這么做時,這個問題仍然會產生。
❷ 如何將應用打包成為 Docker 鏡像
初次安裝部署好docker後,大多數鏡像可以從DockerHub提取,但是大多數人都希望自己可以完全自定義一個鏡像,那麼這里需要一個第三方工具febootstrapepel6的源提供febootstrap的RPM包yuminstalldocker-iofebootstrap---level35on復制代碼製作CentOS6.6鏡像目錄febootstrap-iyum-iiputils-iiproute-ibash-ivim-minimal-icoreutils-itar-inet-toolscentos6base/centos/6.6/updates/x86_64/復制代碼-i表示鏡像裡面安裝的RPM包(包括一些人為有必要的軟體包)centos6表示鏡像的版本說明base表示生成的鏡像目錄後面之後了系統安裝源和更新源為USTC安裝執行後,會開始一系列的RPM包下載安裝,過程與yum類似,安裝完成後當前目錄會多了base目錄,裡面就是一個鏡像的系統文件進入base目錄等於進入鏡像的根目錄[root@image~]#cdbase/[root@imagebase]#ar復制代碼可以像一般的系統文件一樣先做一些修改配置,例如配置第三方yum源等等把base目錄把所有文件打包成二進制文件後導入docker創建為鏡像
❸ 在製作Docker鏡像過程中,能直接使用已有的docker鏡像嗎
AppCenter2.0的鏡像同時支持kvm和docker,但由於需要實現
配置變更,不能直接使用已有的dockers鏡像,需要進行一些改造哦,
鏡像默認啟動的進程不能應用本身的進程,
❹ DockerHub里的鏡像太多了,怎麼選擇
目前系統或基礎語言的鏡像選官方的就可以了,多數情況下以他們為 base image 做自己的鏡像。問題就是這些鏡像大多是國外的源下載依賴會很費勁,最好from 之後換一下源。
應用相關的鏡像,很多其實都不能很好滿足需求,都需要自己改,這方面也沒啥太好的辦法,看自己需求了,一般是看他們的 dockerfile 然後把啟動腳本改一下。
official 的鏡像很多並不好用,可以參考一下 tutum 或者 Sameer 感覺他們做的要實用一些
❺ docker基礎鏡像是什麼意思
當想讓一個容器做兩件事情,或者使一個Docker鏡像包含來自兩個不同鏡像的依賴庫時,就需要知道每個鏡像的Dockerfile。本文介紹了如何通過docker history命令來對Docker鏡像進行反向工程,得到它們的Dockerfile,並組織到一個Dockerfile里然後build,從而實現想做的事情。
常言道,「不要重復發明輪子!」
在使用Docker時,構建自己的鏡像之前,最好在Docker Hub尋找一些可以直接使用的鏡像做練習。把軟體架構分布到一系列容器中,每一個容器只做一件事情,這樣的效果非常好。構建分布式應用的最好的基石是使用來自Docker Hub的官方鏡像,因為可以信任它們的質量。
在某些情況下,可能想讓一個容器做兩件不同的事情。而在另外一些情況下,可能想讓一個Docker鏡像包含來自兩個不同鏡像的依賴庫。如果有每個鏡像的Dockerfile,這是非常簡單的。將它們組織到一個Dockerfile里然後build就行。
然而,大多數時間都在使用Docker Hub上准備好的鏡像,不會有它們的源Dockerfile。我花時間找一個可以合並(或flatten)兩個不同Docker鏡像的工具,當然沒有它們的Dockerfile。也就是說在找一個能做下面這件事的東西:
image 1 --
\
---> merged_image_12
/
image 2 --
此前在GitHub上有兩個相關的討論(1、2),盡管它們都被關閉了。
這可能嗎?
那麼,是否存在工具能夠像這樣做嗎:docker merge image2 image2 merged_image?
沒有!
你甚至不可以用下面的方式來構建Dockerfile:
FROM image1
FROM image2
簡而言之,在一個Dockerfile里不能有多個基礎鏡像。
但是我需要這個功能!
唯一的解決辦法是取得這些鏡像的Dockerfile,然後把它們組織到一個文件中,再進行構建。那麼,我能在Docker Hub上獲得一個鏡像的Dockerfile嗎? 幸運的是可以。它不能離線獲取(譯註:原文是online,但顯然online時對於來自GitHub的自動構建鏡像是可以直接獲取的),但是你可以使用docker history命令,通過反向工程獲取。
怎麼來使用?
在你的機器上使用docker pull從Docker Hub下載鏡像。
docker pull image1
docker pull image2
然後使用docker history來取得構建這兩個容器時運行的命令。
docker history --no-trunc=true image > image1-dockerfile
docker history --no-trunc=true image2 > image2-dockerfile
接下來打開這兩個文件,你可以看到每個鏡像的命令堆棧。這是因為Docker鏡像通過層(閱讀更多)的方式來構建。即你在Dockerfile中鍵入的每一個命令所構建的新鏡像,都是在之前的命令產生的鏡像之上。所以你可以對鏡像進行逆向工程。
限制
不能對鏡像進行反向工程的唯一場景,是鏡像的維護者在他的Dockerfile中使用了ADD或COPY命令。你會看到這樣一行:
ADD file:1ac56373f7983caf22
或 ADD dir:cf6fe659e9d21535844
這是因為不知道維護者在他自己的機器上,包括鏡像里使用了什麼本地文件。
❻ 如何將docker images中的鏡像添加到docker的容器中
初次安裝部署好docker後,大多數鏡像可以從DockerHub 提取,但是大多數人都希望自己可以完全自定義一個鏡像,那麼這里需要一個第三方工具 febootstrap epel6的源提供febootstrap的RPM包 yum install docker-io febootstrap -y service docker start chkconfig docker --level35 on 復制代碼製作CentOS6.6鏡像目錄 febootstrap -i yum -i iputils -i iproute -i bash -i vim-minimal -i coreutils -i tar -i net-tools centos6 base -u 復制代碼-i 表示鏡像裡面安裝的RPM包(包括一些人為有必要的軟體包) centos6 表示鏡像的版本說明 base 表示生成的鏡像目錄 後面之後了系統安裝源和更新源為USTC 安裝執行後,會開始一系列的RPM包下載安裝,過程與yum類似,安裝完成後當前目錄會多了base目錄,裡面就是一個鏡像的系統文件 進入base目錄等於進入鏡像的根目錄 [root@image ~]# cd base/ [root@image base]# ls bin boot dev etc home lib lib64 media mnt opt proc root sbin selinux ...
❼ docker 怎麼從鏡像倉庫獲取鏡像
配置docker的啟動參數。
執行:
# systemctl status docker 1
可以看出,這里在執行docker pull的時候不需要帶上本地鏡像倉庫的地址,直接會自動從本地鏡像倉庫拉取。