美文网首页
Dockerfile使用(四)

Dockerfile使用(四)

作者: ggr | 来源:发表于2018-04-02 00:47 被阅读0次

    Dockerfile使用

    通过上面的学习,我们掌握了如何创建镜像、获取镜像、上传镜像、运行容器等等内容。有了上面的知识,我们来次实战。

    我们刚刚使用了commit命令创建了一个安装nginx的镜像,但其实Docker创建镜像的命令还有build,build命令可以通过指定一个Dockerfile文件来实现将镜像创建过程自动化。Dockerfile文件有着特定的编写规则,但语法都还比较容易理解。这次我们不仅使用Dockerfile文件来创建一个像上文一样安装nginx的ubuntu镜像,还要发挥nginx的老本行来运行一个网页吧!DockFile可以很轻松的完成这个问题。首先将新建一个名字为www的文件夹,文件夹下面可以放一些HTML网页,比如新建一个index.html文件,随便写点内容:

    <html>
    <head>
    ggr docker
    </head>
    <body>
    <h1>Enjoy Docker! GGR</h1>
    </body>
    </html>
    

    www的同级目录下新建一个名为Dockerfile的文件,将DockerFile文件改写如下:

    FROM ubuntu:14.04
    MAINTAINER ggr 3095764372@qq.com
    RUN apt-get update
    RUN apt-get install -y nginx
    COPY ./www /usr/share/nginx/html
    EXPOSE 80
    CMD ["nginx",  "-g",  "daemon off;"]
    

    我来整体的解释下这个Dockerfile文件,第一行是用来声明我们的镜像是基于什么构建的,这里我们指定为ubuntu14.04 ,第二行的作用在于告诉别人你的大名。第三行和第四行的RUN命令用来在容器内部的shell里执行命令。第五行将当前系统的www文件夹拷贝到容器的/usr/share/nginx/html目录下,第六行声明当前需要对外开放80端口,最后一行表示运行容器时开启nginx。不理解没关系,因为这都是固定的语法,感兴趣可以多看相关内容。此时我们通过build命令来构建镜像,运行:

    docker build -t="ggr/ubuntu:v2"  .
    

    注意,最后的.表示Dockerfile在当前目录,也可指定其它目录。此时,再次运行docker images就会看到刚刚生成的镜像:

    image.png

    现在我们就可以运行刚刚的镜像了,和前面运行稍有不同,此时我们需要对外指定80端口,该行为通过-p参数指定,运行:

    docker run -p 80:80 ggr/ubuntu:v2
    

    此时,终端会卡住,这是正常的,因为Docker的思想是每个容器最好只开一个线程做一件事,此时我们打开了nginx服务器,所以终端卡住也没关系(当然是有办法来解决这个问题,但这里不做介绍)。现在我们可以通过浏览器访问localhost查看效果,如果是虚拟主机则需输入主机ip地址,然后就能看到了如下的页面:

    image

    相关文章

      网友评论

          本文标题:Dockerfile使用(四)

          本文链接:https://www.haomeiwen.com/subject/qyizcftx.html