Dockerfile使用介紹
一、Dockerfile介紹
Dockerfile用於自定義創建docker鏡像,是由一行行命令組成的文件。
Docker file中的命令根據作用分為四類:
1.1、指定基礎鏡像信息指令:
FROM
1.2、指定維護者信息指令:
MAINTAINER
1.3、對鏡像操作的指令:
RUN:后面運行shell命令
COPY:拷貝本地文件到容器某目錄
ADD:拷貝本地壓縮包到容器,拷貝完成后在容器內部自動解壓。也支持從url下載文件后拷貝到容器
VOLUME:指定容器中的某個目錄影射到主機上,可以使用docker inspect contained 查看主機上的對應目錄
EXPOSE:指定容器內應用運行的端口號
1.4、容器啟動后執行的命令:
CMD:在容器中執行的命令,若docker run命令后面指定了shell命令,docker file中的CMD指令會被覆蓋
ENTRYPOINT:在容器中執行的命令,該命令執行一次,不會被覆蓋
二、Dockerfile應用
本例使用Dockerfile構建redis集群鏡像
Dockerfile內容如下:
FROM centos #依賴centos鏡像 MAINTAINER ahaii #作者信息 RUN groupadd -r redis && useradd -r -g redis redis RUN mkdir /data && chown redis:redis /data VOLUME ["/data"] #將容器中的/data目錄掛在到主機中 ADD redis-3.2.8.tar.gz /data/ #拷貝源碼包,並解壓 RUN yum install -y gcc gcc-c++ net-tools make WORKDIR /data/redis-3.2.8/src/ #切換目錄 RUN make && make install Copy redis-master.conf . #拷貝配置文件 EXPOSE 6801 #指定監聽端口 CMD ["redis-server","redis-master.conf"] #容器啟動后,啟動redis服務
將Dockerfile、redis源碼包以及redis配置文件放在同一目錄下,然后構建redis-master鏡像,在Dockerfile目錄下執行如下命令:
docker build -t redis-master .
構建完成后,可以使用docker images命令查看。
運行新構建的redis-master鏡像:
docker run --name redis-master -dit -v /etc/localtime:/etc/localtime -p 6379:6379 redis-master
其中,-v /etc/localtime:/etc/localtime表示使用主機時區設置,第一個redis-master表示運行容器的名字,后面的redis-master表示剛才通過build構建的鏡像的名字。
查看docker容器內部信息(如ip、物理機掛在位置等):
docker inspect container_name