使用 Dockerfile 定製鏡像web
從剛纔的 docker commit 的學習中,咱們能夠了解到,鏡像的定製實際上就是 定製每一層所添加的配置、文件。若是咱們能夠把每一層修改、安裝、構建、操做 的命令都寫入一個腳本,用這個腳原本構建、定製鏡像,那麼以前說起的沒法重複 的問題、鏡像構建透明性的問題、體積的問題就都會解決。這個腳本就是 Dockerfile。docker
示範一:tomcat基礎鏡像apache
cat Dockerfile centos
FROM centostomcat
#制定基礎鏡像bash
MAINTAINER xxxxapp
RUN mkdir -p /opt/app/tomcat && \webapp
mkdir -p /opt/applog/MskyLog && \學習
mkdir -p /data/appdatas/cat && \ui
useradd jboss5 && \
chown -R jboss5:jboss5 /opt/app/tomcat && \
chown -R jboss5:jboss5 /opt/applog/MskyLog && \
chown -R jboss5:jboss5 /data/appdatas/cat
ADD apachetomcatserver.tar.gz /opt/app/tomcat
ADD jdk1.8.0_102.tar.gz /opt/app/tomcat
ENV LANG=en_US.utf8
ENV JAVA_HOME=/opt/app/tomcat/jdk1.8.0_102
ENV PATH=$JAVA_HOME/bin:$PATH
EXPOSE 8180
每個指令都會在鏡像上建立一個新的層,每個指令的前綴都必須是大寫的。
而後,咱們使用 Dockerfile 文件,經過 docker build 命令來構建一個鏡像。
docker build -t tomcat_test .
示範二:tomcat具體應用(以xxx爲例)
cat Dockerfile
FROM tomcat_test
MAINTAINER xxxx
COPY UmeCar.war /opt/app/tomcat/apachetomcatserver/webapps
USER jboss5
ENTRYPOINT ["/opt/app/tomcat/apachetomcatserver/bin/startup.sh","run"]
docker build -t xxx .
給鏡像打標籤:docker tag
製做完鏡像後根據本身的須要給鏡像打標籤(重起鏡像名稱),將上述製做好的鏡像打一個標籤,一般是以私有倉庫地址爲鏡像名稱的。
docker tag tomcat_test 10.237.79.203/test/ tomcat_test
查看鏡像:
[root@docker-bulid test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xxxx latest 5dad1eed56ff 6 minutes ago 780MB
10.237.79.203/test/tomcat_test latest 7304d31c44fe 24 minutes ago 595MB
tomcat_test latest 7304d31c44fe 24 minutes ago 595MB
centos latest 67fa590cfc1c 8 days ago 202MB
將鏡像推送到私有鏡像倉庫中:docker push
使用命令docker push + 鏡像名字:
[root@docker-bulid test]# docker push 10.237.79.203/test/tomcat_test
The push refers to repository [10.237.79.203/test/tomcat_test]
c943684290b7: Pushed
6fdfb7ca8f55: Pushed
7b470a43942f: Pushed
877b494a9f30: Pushed
latest: digest: sha256:2bf7491d7ac220e8d6bdae7d70bc1b90f0f2c500ebb584e0b3cf24b20b8a2932 size: 1162
方法二:執行docker commit
docker commit 是基於已有的容器建立新的鏡像。
docker pull xxx/xxx
docker run -itd xxx/xxx
docker ps -a
進入容器
docekr exec -it id號 /bin/bash
而後更改容器
exit退出
提交新鏡像
docker commit xxxx xxx/xxxx:new