1.在https://hub.docker.com 註冊一個帳號html
2.建立一個倉庫nginx
3.取到containerIDredis
#docker ps
4.commit容器docker
#docker commit {containerID} rorshach/nginx:v1
5.登陸hub dockershell
#docker login
ps:
輸入帳密centos
6.push鏡像:ui
#docker push rorshach/nginx:v1
7.push完成後就能夠在hub.docker.com中看到你的鏡像了htm
1.經常使用指令:
(1).FROM
指定基礎鏡像,必須放在Dockerfile第一行,表示從哪一個鏡像構建blog
如:FROM centos
FROM scratch // 表示從空白鏡像開始構建get
(2).RUN
執行命令
a.shell 格式: RUN <命令>
如:
RUN echo 'hello world' > /usr/share/nginx/html/index.html
b.exec 格式: RUN ["可執行文件", "參數1", "參數2"]
如:
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz"
每個 RUN 的行爲,就和剛纔咱們手工創建鏡像的過程同樣:新創建一層,在其上執行這些命令,執行結束後, commit 這一層的修改,構成新的鏡像。
對於多個命令,咱們能夠使用&&將命令串聯起來
RUN 命令1 && 命令2 && 命令3
(3).CMD
功能爲容器啓動時要運行的命令,不會建立新的鏡像層
格式爲如下三種:
CMD ["executable","param1","param2"] CMD ["param1","param2"] CMD command param1 param2
如:
CMD nginx -g 'daemon off;'
(4).ADD 和 COPY
能夠將本地的文件複製到容器中
格式:
COPY <src>... <dest> COPY ["<src>",... "<dest>"]
ADD能夠是遠程文件,但COPY只能是本地文件;至關於scp;只是免帳密
(5).EXPOSE
指定鏡像程序將會在哪一個端口提供服務,能夠經過docker inspect <container-id>指令檢索出來,EXPOSE指令實際上只是一個約定,須要在docker run 發佈時以-p標誌的方式暴露,上述的是小寫的p須要指定主機到到虛擬到主機端口之間的映射,而大寫的P是將鏡像中的端口暴露到主機的隨機端口,具體暴露到哪一個端口能夠經過docker ps查看.
如:
EXPOSE 80
(6).MAINTAINER(可選)
指定做者
如:
MAINTAINER 做者
(7).ENV
用於配置環境變量
如:
ENV JAVA_HOME=/opt/jdk-9
示例Dockerfile文件:
# base image FROM centos:7 # MAINTAINER MAINTAINER rorshach rorshach@mail.com RUN yum update && rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm && yum install -y nginx CMD nginx -g 'daemon off;' #鏡像啓動後運行nginx EXPOSE 80
2.構建
#docker build -t <鏡像名稱> <目錄> -f <Dockerfile文件名>
若是Dockerfile的文件名爲Dockerfile,則-f能夠省略