Docker導出鏡像與Dockerfile的簡單應用及網絡參數設置

前邊將在Docker容器中完成了JDK的安裝,可是在將該容器導出爲鏡像並從新進入時發現該環境變量沒法生效,須要每次手工執行一下 source /etc/profile 來刷取一下環境才能夠。java

針對這種狀況經調查能夠在建立鏡像時經過編輯dockerfile文件來進行配置,這樣在每次加載容器的時候均可以自動設置環境變量docker

另由於想用建立的多個docker容器作一個分佈式的環境,因此須要考慮指定固定的IP。所以又須要設置相應的IP信息,在這裏也一併作以記錄centos

首先記錄爲docker啓動容器增長參數
在合適的目錄下建立Dockerfile描述文件,個人路徑是/home/docker/java18 這樣比較好區分,之後可能還得要增長別的容器的啓動描述文件網絡

個人文件中填入的內容以下
#base on image 本次建立容器所基於的鏡像版本
FROM mas-centos7-env-net:latest分佈式

#maintainer infomation 鏡像維護人信息
MAINTAINER zhousjmas@hotmail.comide

下邊是環境變量,這裏須要注意一下。由於看起來和profile下的寫法差很少,粗心的同窗容易直接拷過來後把等號去掉就完了。要注意把export替換成ENV
ENV JAVA_HOME /etc/jdk1.8.0_241
ENV CLASSPATH .:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
ENV PATH $PATH:${JAVA_HOME}/bin測試

默認開放22和80端口,這個不是必定要寫
EXPOSE 22 80
Docker導出鏡像與Dockerfile的簡單應用及網絡參數設置ui

寫好後針對要導出的鏡像進行導出命令編寫
docker build -t mas-centos7-env-demo:v1.0 .centos7

這裏-t是要導出的鏡像的名字,mas-centos7-env-demo:v1.0 會被拆分紅REPOSITORY和TAG 來進行
另外注意命令最後有一個 . ,這個點不顯眼,但表示的是當前build所用的dockerfile的路徑, . 表示dockfile就在當前執行命令的目錄下。我的也能夠修改成相應的目錄
Docker導出鏡像與Dockerfile的簡單應用及網絡參數設置blog

建立成功後運行其這個新導出的image
Docker導出鏡像與Dockerfile的簡單應用及網絡參數設置
此時就能夠看到環境變量已經默認加載成功了

另外也須要爲新起的container指定固定的ip,那麼先把當前已啓動的container先行關閉。

先用docker ps 肯定一下當前container的id

首先進行容器的中止 docker stop c5a964549d10

而後執行容器的刪除 docker rm c5a964549d10

而後自行建立一個網絡模式

docker network create --driver bridge --subnet=172.3.3.0/16 --gateway=172.3.3.1 masnet

這裏的masnet 是新建的網絡模式的名稱 --subnet=172.3.3.0/16 表示新建網絡的IP範圍 ,gateway=172.3.3.1 是網關定義

執行完成後 docker network ls,若是正常成功是能夠看到本身新建的網絡模式的
Docker導出鏡像與Dockerfile的簡單應用及網絡參數設置

而後在啓動容器時指定使用相關的IP
docker run -di --name mas-ip --net masnet --ip 172.3.3.10 mas-centos-env-demo:v1.0 啓動測試鏡像
Docker導出鏡像與Dockerfile的簡單應用及網絡參數設置

docker run -di --name mas-ip --net masnet --ip 172.3.3.10 mas-centos-env-demo:v1.0 中

--name mas-ip 表示啓動的容器的名稱--net masnet 應用的網絡模式,就是剛剛建立的那個網絡模式--ip 172.3.3.10 指定所用的IP

相關文章
相關標籤/搜索