_讓咱們的開發環境鏡像化搭建的記錄(整理內容)html
若是鏡像須要定製化:建議直接拉取一個系統鏡像而後自定義:java
docker pull centos:7
能夠參照: 基於docker官網鏡像centos7配置Java運行環境mysql
注意自定義的腳本中export的用法:git
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08" exprot JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.141-2.6.10.1.el7_3.x86_64/ export PATH=$JAVA_HOME/bin:$PATH sh /usr/tomcat/bin/catalina.sh run
(說明下,github
![輸入圖片說明](https://static.oschina.net/uploads/img/201612/12234646_GDXC.png "在這裏輸入圖片標題")
docker pull tomcat:8.0.36-jre8web
編寫dockerfile的時候推薦使用idea的插件:**Docker integration** ![輸入圖片說明](https://static.oschina.net/uploads/img/201612/12235412_eO3O.png "在這裏輸入圖片標題") ### 1.1靜態導入 (這個是一種方式,可是實際用起來這個會被代替掉,在這裏只是說明有這種方式): ![輸入圖片說明](https://static.oschina.net/uploads/img/201612/12235040_2TRN.png "在這裏輸入圖片標題") 而插件的效果爲: ![輸入圖片說明](https://static.oschina.net/uploads/img/201612/12235054_RJ1Q.png "在這裏輸入圖片標題") 其代碼爲:
#這是一個測試的DockerFile #auther lijunhao FROM tomcat:8.0.36-jre8sql
MAINTAINER lijunhao junhao.li@newtouch.cn COPY ./dockerDemo.war /usr/local/tomcat/webapps/docker
- 開始製做鏡像
#########到所在目錄下 cd dir ######製做鏡像(注意後面有個.) docker build -t myweb:v1 .數據庫
校驗: ![輸入圖片說明](https://static.oschina.net/uploads/img/201612/12235956_IwWc.png "在這裏輸入圖片標題") ### 1.2動態掛載(推薦使用) 動態掛載的好處是能夠經過命令去掛載到容器外的某個文件地址,不須要每次從新去製做鏡像 Dockerfile的內容爲:
#這是一個測試的DockerFile #auther lijunhao (VOLUME 表示容器內部的一個地址爲掛載點) FROM tomcat:8.0.36-jre8centos
MAINTAINER lijunhao junhao.li@newtouch.cn VOLUME /usr/local/tomcat/webapps
- 開始製做鏡像
#########到所在目錄下 cd dir ######製做鏡像(注意後面有個.) docker build -t myweb:v2 .
- 啓動容器
docker run -itd -p 8086:8080 -v /opt/dockerDemo:/usr/local/tomcat/webapps myweb:v2
而進入容器的效果爲: ![輸入圖片說明](https://static.oschina.net/uploads/img/201612/13002223_AAsK.png "在這裏輸入圖片標題") 以上2者的驗證爲(因爲使用的war包是同樣的,在這裏只用一張效果圖圖來表示): **若是須要去掉包名的操做,請把源碼放到ROOT文件掛載進去** ![輸入圖片說明](https://static.oschina.net/uploads/img/201612/13001618_nhhT.png "在這裏輸入圖片標題") ### 2.關於mysql鏡像(項目須要基本上都會有初始表以及初始數據) ![輸入圖片說明](https://static.oschina.net/uploads/img/201612/13225844_seCa.png "在這裏輸入圖片標題") 分析MySQL 5.6的Dockerfile下方是連接: [MYSQL-Dockerfile1](http://www.runoob.com/docker/docker-install-mysql.html) [MYSQL-Dockerfile2](http://www.runoob.com/docker/docker-install-mysql.html) 其有一行爲:
RUN mkdir /docker-entrypoint-initdb.d
並會在下面**循環**執行mysql腳本: ![輸入圖片說明](https://static.oschina.net/uploads/img/201612/13234719_9EtE.png "在這裏輸入圖片標題") 總和以上,使用動態掛載功能,初始化腳本放在 /opt/mysqlsql,數據庫date放在 /opt/mysqldata: 腳本數據爲: ![輸入圖片說明](https://static.oschina.net/uploads/img/201612/13235221_aWo8.png "在這裏輸入圖片標題")
docker run --name mysql-test -v /opt/mysqlsql:/docker-entrypoint-initdb.d -v /opt/mysqldata:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -itd eda6a4884645
測試的結果爲: ![輸入圖片說明](https://static.oschina.net/uploads/img/201612/13235001_v1gt.png "在這裏輸入圖片標題") ### 3,openfire鏡像
docker pull sameersbn/openfire:3.10.3-16
啓動鏡像(這裏的端口映射到外面的端口最好是同樣的,不然在使用的時候不管是跳轉仍是功能比較容易出錯):
docker run --name openfire -d --restart=always
--publish 9090:9090 --publish 5222:5222 --publish 7777:7777
--volume /opt/docker/openfire:/var/lib/openfire
sameersbn/openfire:3.10.3-16
### 4,gitlab鏡像 最全資料請在下方連接 [docker-gitlab最全攻略](https://github.com/sameersbn/docker-gitlab)
https://github.com/sameersbn/docker-gitlab
### 5.書寫compose **5.1,簡介 Compose能夠把各個容器關聯起來,是用來定義一個或者多個容器應用的工具。適合在單機環境中部署一個或者多個容器,並自動把多個容器關聯起來 用YML文件來定義多容器應用,使用docker-compose up 使應用運行起來,本質上來講:Compose把YML文件轉成docker命令參數,經過解析容器之間的依賴關係來順序地啓動容器。 每一個定義的服務都至少包含build和image兩個命令中的一個,build是要在執行的是docker build命令,image是直接啓服務