隨着Docker管理的任務增多,我們需要用Dockerfile進行docker容器管理,這樣可以減輕人工的操作,讓docker管理更加的方便,快捷:
Dockerfile是一個鏡像的完整描述,可以通過Dockerfile來描述構建鏡像的步驟,並自動構建一個容器。
所有的 Dockerfile 命令格式都是:
INSTRUCTION arguments
雖然指令忽略大小寫,但是建議使用大寫。
FROM 命令
FROM <p_w_picpath>
或
FROM <p_w_picpath>:<tag>
這個設置基本的鏡像,爲後續的命令使用,所以應該作爲Dockerfile的第一條指令。
比如:
FROM centos:v1
如果沒有指定 tag ,則默認tag是latest,如果都沒有則會報錯。
RUN 命令
RUN命令會在上面FROM指定的鏡像裏執行任何命令,然後提交(commit)結果,提交的鏡像會在後面繼續用到。
兩種格式:
RUN <command> (the command is run in ashell - `/bin/sh -c`)
或:
RUN ["executable","param1", "param2" ... ] (exec form)
RUN命令等價於:
docker run p_w_picpath command
docker commit container_id
編寫Dockerfile實戰
根據上面的操作步驟,在docker服務器端創建Dockerfile文件,內容如下:
# 設置基本的鏡像,後續命令都以這個鏡像爲基礎
FROM centos:v1
# 作者信息
MAINTAINER JFEDU.NET
# RUN命令會在上面指定的鏡像裏執行任何命令
RUN yum install passwd openssl openssh-server-y
RUN echo '123456' | passwd --stdin root
RUN ssh-keygen -q -t rsa -b 2048 -f/etc/ssh/ssh_host_rsa_key -N ''
RUN ssh-keygen -q -t ecdsa -f/etc/ssh/ssh_host_ecdsa_key -N ''
RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/'/etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chownroot.root /root && chmod 700 /root/.ssh
#對外暴露SSH 22端口
EXPOSE 22
# 設定運行鏡像時的默認命令:輸出ip,並以daemon方式啓動sshd
CMD ip addr ls eth0 | awk '{print $2}' | egrep-o '([0-9]+\.){3}[0-9]+';/usr/sbin/sshd -D