今天整理了些之前使用docker時經常使用的命令與配置,在這裏分享出來,也便於本身往後查閱。文中不包括docker的基本概念、安裝,還請自行搜尋。
各位感興趣的話,能夠自存一份,若要轉載,記得標明出處哦。node
#鏡像來源 FROM centos:latest #做者 MAINTAINER "chengxp" #在新建立的鏡像中建立目錄 RUN mkdir /usr/local/jdk RUN mkdir /usr/local/runentry #添加當前鏡像中須要依賴的工具 ADD jdk1.8.0_65.tar /usr/local/jdk/ ADD jboss.tar /usr/local/runentry/ #卷,會將鏡像中的目錄掛載到宿主機的docker安裝目錄下 VOLUME ["/usr/local/runentry/jboss/logs"] #環境變量添加 ENV JAVA_HOME /usr/local/jdk1.8.0_65 ENV PATH $PATH:$JAVA_HOME/bin #提示要輸出的端口(沒有實際意義) EXPOSE 8181 #鏡像啓動成容器須要執行的命令(軟件啓動指令) CMD ["./usr/local/runentry/jboss/bin/run.sh","-c","all"]
VOLUEME ["/data1","/data2"]
以上,會在運行後的容器中的根目錄中,分別建立 兩個目錄;mysql
△缺點:以這種方式建立的卷,不能指定主機目錄。而對應的目錄默認是docker安裝時指定的目錄:/var/lib/docker/volumes/;
可經過docker inspect containerId 查看對應的自動生成的主機目錄; sql
使用命令:docker export/import 相關進行操做;
缺點:
不能保留運行時相關信息,如把war包存放到tomcat,導出時,war包會被遺棄;docker
1)提交當前容器狀態,並根據當前容器 生成一個新的鏡像:centos
docker commit 容器id 新建立的鏡像名稱tomcat
2)將新建立的鏡像導出成tar:
docker save 新建立的鏡像名稱 > 鏡像名稱.tarbash
version: "3" services: back-app: #1.鏡像來源:根據指定鏡像啓動(二選一) image: 25.30.9.228:5000/back-app:v1.1.0 #2.鏡像來源:根據指定的Dockerfile所在目錄來啓動(二選一) build: /home/start-entry/back-app(絕對路徑) build: ./back-app (相對當前目錄路徑) #若同時配置了image和build,那麼將經過build建立一個 名爲image配置的鏡像 #自定義啓動後的鏡像名稱 container-name: back-app-container #宿主機目錄與容器目錄映射 volumes: #1.宿主機絕對路徑目錄:容器中絕對路徑目錄 - /home/back-app/logs:/home/logs #2.默認在容器內部建立一個數據卷,指向宿主機匿名位置[不推薦] - /home/logs #執行時,重啓當前服務 restart: always #啓動映射端口:外部:內部 ports: - "8181:8181" #將主機名寫入到容器中的hosts文件 extra_hosts: - "master:192.168.1.1" - "node1:192.168.1.2" - "node2:192.168.1.3" #當前鏡像啓動以前,必須等待如下服務啓動完畢以後才能啓動 #depends_on: - mysql - kafka mysql: build: ./mysql ports: - "3306:3306" kafka: build: /home/start-entry/kafka ports: - "8787:8787"
本文中記錄的只是我的常常用到的操做,需獲取更多配置,請移步官網:https://docs.docker.com/engine/reference/builder/。app