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

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

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

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

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

我的文件中填入的內容如下
#base on image 本次創建容器所基於的鏡像版本
FROM mas-centos7-env-net:latest

#maintainer infomation 鏡像維護人信息
MAINTAINER [email protected]

下邊是環境變量,這裏需要注意一下。因爲看起來和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的簡單應用及網絡參數設置

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

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

創建成功後運行其這個新導出的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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章