FROM 鏡像 : 指定新的鏡像所基於的鏡像
MAINTAINER 名字 :說明新鏡像的維護人
RUN 命令 : 在所基於的鏡像上執行命令,並提交到新的鏡像中
CMD ["要運行的程序","參數1","參數2"] : 指定啓動容器時要運行的命令或腳本
EXPOSE端口號 : 指定新鏡像加載到Docker時要開啓的端口
ENV環境變量 變量值 : 設置一個環境變量的值,會背後面的RUN用到
ADD源文件/目錄 目標文件/目錄 :將源文件複製到目標文件 ,源文件和Dockerfile位於同一目錄
COPY源文件/目錄 目標文件/目錄 :將本地主機的源文件複製到目標目錄,源文件和Dockerfile位於同一目錄
VOLUME["目錄"] : 在容器中建立一個掛載點
USER 用戶名 /UID :指定運行容器時的用戶
WORKDIR路徑 : 爲後續的RUN 、CMD、ENTRYPOINT 指定工做目錄
ONBUILD命令 : 指定所生成的鏡像做爲一個基礎鏡像時所要運行的命令。java
創建工做目錄mysql
# docker pull centos //下載基礎鏡像 # mkdir nginx # cd nginx/
建立Dockerfile文件linux
# vim Dockerfile //編寫Dockerfile # 設置基礎鏡像 FROM centos # 維護該鏡像的用戶 MAINTAINER this is nginx image <zkc> # 安裝環境 下載軟件包 並解壓 RUN yum install -y wget proc-devel net-tools gcc zlib zlib-devel make openssl-devel RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz RUN tar zxvf nginx-1.9.7.tar.gz # 工做目錄 編譯安裝 WORKDIR nginx-1.9.7 RUN ./configure --prefix=/usr/local/nginx && make && make install # 開啓 80 和443端口 EXPOSE 80 EXPOSE 443 # 修改配置文件,以非 deamon方式啓動 RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf # 複製服務腳本並設置權限 WORKDIR /root/nginx ADD run.sh /run.sh RUN chmod 755 /run.sh # 啓動容器時執行腳本 CMD ["/run.sh"]
編寫執行腳本nginx
# vim run.sh #!/bin/bash /usr/local/nginx/sbin/nginx
生成鏡像sql
# docker build -t nginx:new . # docker run -d -P nginx:new # docker ps -a
創建工做目錄docker
# mkdir /root/tomcat # cp jdk-8u91-linux-x64.tar.gz /root/tomcat/ //將安裝包複製到該目錄並解壓 # cp apache-tomcat-8.5.16.tar.gz /root/tomcat/ # cd /root/tomcat/ # tar zxvf jdk-8u91-linux-x64.tar.gz # tar zxvf apache-tomcat-8.5.16.tar.gz
建立Dockerfile文件apache
# vim Dockerfile //編寫Dockerfile FROM centos MAINTAINER this is tomcat image <zkc> # 安裝JDK環境,設置其環境變量 ADD jdk1.8.0_91 /usr/local/java ENV JAVA_HOME /usr/local/java ENV JAVA_BIN /usr/local/java/bin ENV JRE_HOME /usr/local/java/jre ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar ADD apache-tomcat-8.5.16 /usr/local/tomcat8 EXPOSE 8080
生成鏡像vim
# docker build -t tomcat:centos .
加載到容器並開啓服務centos
[root@centos7-5 tomcat]# docker run --name tomcat01 -p 80:8080 -it tomcat:centos /bin/bash //加載到容器 並 映射本地的80端口到 容器的8080端口 [root@e238163a97e1 /]# cd /usr/local/tomcat8/bin [root@e238163a97e1 bin]# ./startup.sh
- 在瀏覽器輸入:192.168.200.132 (宿主機IP)
創建工做目錄瀏覽器
# mkdir /mysql # cd /mysql
建立Dockerfile文件
# vim Dockerfile //編寫Dockerfile # 設置基礎鏡像爲centos6 FROM guyton/centos6 MAINTAINER this is msyql images <zkc> RUN yum -y install mysql mysql-server # 開啓mysql服務並受權 RUN /etc/init.d/mysqld start &&\ mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'abc123';" &&\ mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'abc123';" EXPOSE 3306 # 運行初始化腳本mysql_safe CMD ["mysqld_safe"]
生成鏡像
# docker build -t centos6:mysql . //後面有個點 . # docker run --name=mysqlserver -d -P centos6:mysql //加載到容器並映射本地隨機端口到容器的3306端口 # docker ps -a
使用其餘mysql服務器遠程登陸容器mysql
# mysql -h 192.168.200.132 -u root -P 32770 -pabc123
# vim none.sh docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm docker images|grep none|awk '{print $3 }'|xargs docker rmi # chmon +x none.sh # ./none.sh