Docker容器(二)—— Dockerfile详解、如何分享自己的Dockerfile

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/The_Reader/article/details/83626945

Dockerfile详解

1.FROM:引入和开始      

       #从头制作baseImage

       FROM scratch

       #使用已有的baseImage

       FROM centos

       #指定使用的版本

       FROM ubuntu:14.04

2.LABEL:定义一些说明信息      

        LABEL [email protected]

        LABEL version=”1.0”

        LABEL description=”xxx”

3.RUN:执行命令,每执行一条RUN,多一个分层,一般用&&合并语句,反斜杠换行

RUN yum -y update && yum -y install lrzsz \

       net-tools

RUN apt-get -y update && apt-get -y install lrzsz\

       net-tools

RUN /bin/bash -c ‘source $HOME/.bashrc;echo $HOME’

4.WORKDIR:进入或创建目录,尽量不要使用相对路径     

    #进入/root目录

    WORKDIR /root

    #如果没有会自动创建

    WORKDIR /test

    WORKDIR demo

    #输出:/test/demo

    RUN pwd

5.ADD和COPY:将本地的文件,添加到image里      

       #将hello添加到根目录下

       ADD hello /

       #将tar包直接解压到根目录

       ADD test.tar.gz /



       #最终hello应该在 /root/test/hello

       WORKDIR /root

       COPY hello test/

6.ENV:增加Dockerfile的可读性      

       #设置常量

       ENV MYSQL_MAJOR 5.5

       #使用常量

       $MYSQL_MAJOR

       RUN apt-get -y install mysql-server=”${MYSQL_VERSION}”

CMD和ENTRYPOINT

#shell格式

RUN apt-get -y install lrzsz

CMD echo “hello docker”

ENTRYPOINT echo “hello docker”

             

       #exec格式

       RUN [“apt-get”,”-y”,”install”,”lrzsz”]

       CMD [“/bin/echo”,”hello docker”]

       ENTRYPOINT [“/bin/echo”,”hello docker”]

 

   ENTRYPOINT使用的比CMD多一些

   ENTRYPOINT:设置容器启动时运行的命令,一定会执行,不会被忽略

 

1.编写Dockerfile

2.构建image

3.分别运行两个image看效果

4.修改Dockerfile如下

5.重新构建和运行

CMD:设置容器启动后默认执行的参数和命令,若docker指定了其他命令,CMD可以被忽略,CMD若指定多个,只运行最后一个

1.编写file

2.构建和运行

 

 CMD和ENTRYPOINT对比

 

1.再构建一个ENTRYPOINT

2.构建

3.运行CMD的image

4.运行ENTRYPOINT的image

CMD命令可能被覆盖,ENTRYPOINT命令一定会执行

分享docker image

分享的image一定要以自己docker用户名开头,例如:zhangsan/centos

1.登录

 2.上传自己得image

3.下载自己的image

 分享自己得Dockerfile

分享image不太安全,一般分享Dockerfile

1.点击

2.与gitHub关联,链接一个账户

3.link到github

4.点击

 

搭建私有的docker registry

1.docker hub里搜

2.开启另一台虚拟机,执行安装运行registry

3.在之前机器安装telnet,测试连通信

4.构建image,IP是仓库机器的IP

5.直接push会报错

6.编写json文件,目录和文件名如下,IP是仓库机器的IP

7.修改文件,添加一行即可

8.重启docker

9.查看docker私有仓库的内容,此时没有东西,路径如下

10.上传自己的image到docker私有仓库

11.再次查看私有仓库

12.删掉本地的image

13.从私有仓库下东西

Dockerfile案例

用py写一个web应用

1.编写py文件

2.安装wget

3.安装pip,直接复制运行.txt中的命令

4.安装

5.用pip安装flask

6.搭建web服务成功

7.编写Dockerfile

8.构建image

9.运行

猜你喜欢

转载自blog.csdn.net/The_Reader/article/details/83626945
今日推荐