Docker的实例小教程--Dockerfile制作镜像(2)
2016-10-24 15:41
666 查看
有了制作简单镜像的基础之后,今天准备在上一个Docker image基础上,加入mongodb服务。
首先看一下,现在本地有哪些镜像:
开始今天的工作:
创建工作目录:mongodb
生成Dockerfile文件
准备mongodb的发行包,与Dockerfile放在同级目录下下载地址。该版本是14.04的,通过curl还是讯雷,主要看速度。
打开Dockerfile编写头两句:
– 第一个新命令:WORKDIR
比如,将这一次的工作目录设定为:/root/workdir
作用一:若不存在,生成该目录
作用二:进入这个目录,并执行接下来的指令,比如通过ADD命令,将mongodb的包,复制到工作目录中。
这里将介绍ADD命令的一个新的作用,就是:自动解压。也就是说,最终这个压缩包会被解压到/root/workdir目录下。所以,在镜像里看是下面这样的
– 第二个新命令:ENV
设置环境变量,在这里就是想将mongodb的命令加到path中:
和linux中设置有点不一样,中间没有”=”号。这样,在镜像中的任何地方,都可以执行mongod这个命令来启动服务了。
– 第三个新命令:EXPOSE
开放端口,容器是一个相对封闭的环境,正常运行的程序和服务,在宿主机中是无法访问的,所以我要开放mongodb服务的端口:
– 第三个新命令:ENTRYPOINT
ENTRYPOINT这个命令是启动容易的时候,会运行哪个命令,或程序。
我们指定mongod,这是我们想启动的服务,而指定dbpath为数据存储目录。
完整的Dockerfile:
使用docker build生成镜像:
下面的指令:
-d 参数,表示命令这个容器是一个后台服务。
-p 参数,表示面后要在宿主机和docker容器之间建立一个端口映射,当映射端口时指定了ip地址,如上面第二个docker run指令,便只能在本机访问了。
那么,如果查看这个后台的服务呢?
高高宇在学习计算机技术的同时,还在学习中医养生,和股票投资,我已经把全部的学习笔记都放到了我的微信公众号上。
高高宇读书的微信公众号
首先看一下,现在本地有哪些镜像:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE kyugao/ali.ubuntu latest 4f1dec752b62 2 days ago 211.2 MB ubuntu 14.04 1e0c3dd64ccd 10 days ago 187.9 MB
开始今天的工作:
创建工作目录:mongodb
生成Dockerfile文件
$ mkdir mongodb $ touch Dockerfile
准备mongodb的发行包,与Dockerfile放在同级目录下下载地址。该版本是14.04的,通过curl还是讯雷,主要看速度。
打开Dockerfile编写头两句:
FROM kyugao/ali.ubuntu MAINTAINER Adam Gao "solonot@163.com"
– 第一个新命令:WORKDIR
比如,将这一次的工作目录设定为:/root/workdir
WORKDIR /root/workdir
作用一:若不存在,生成该目录
作用二:进入这个目录,并执行接下来的指令,比如通过ADD命令,将mongodb的包,复制到工作目录中。
ADD mongodb-linux-x86_64-ubuntu1404-3.2.10.tar ./
这里将介绍ADD命令的一个新的作用,就是:自动解压。也就是说,最终这个压缩包会被解压到/root/workdir目录下。所以,在镜像里看是下面这样的
$ pwd /root/workdir/mongodb-linux-x86_64-ubuntu1404-3.2.10
– 第二个新命令:ENV
设置环境变量,在这里就是想将mongodb的命令加到path中:
ENV PATH $PATH:/root/workdir/mongodb-linux-x86_64-ubuntu1404-3.2.10/bin
和linux中设置有点不一样,中间没有”=”号。这样,在镜像中的任何地方,都可以执行mongod这个命令来启动服务了。
– 第三个新命令:EXPOSE
开放端口,容器是一个相对封闭的环境,正常运行的程序和服务,在宿主机中是无法访问的,所以我要开放mongodb服务的端口:
EXPOSE 27017
– 第三个新命令:ENTRYPOINT
ENTRYPOINT这个命令是启动容易的时候,会运行哪个命令,或程序。
我们指定mongod,这是我们想启动的服务,而指定dbpath为数据存储目录。
RUN mkdir dbpath ENTRYPOINT ["mongod", "--dbpath=./dbpath"]
完整的Dockerfile:
FROM kyugao/ali.ubuntu MAINTAINER Adam Gao "solonot@163.com"
WORKDIR /root/workdir
ADD mongodb-linux-x86_64-ubuntu1404-3.2.10.tar ./
ENV PATH $PATH:/root/workdir/mongodb-linux-x86_64-ubuntu1404-3.2.10/bin
EXPOSE 27017
RUN mkdir dbpath ENTRYPOINT ["mongod", "--dbpath=./dbpath"]
使用docker build生成镜像:
$ docker build -t kyugao/mongodb ./
下面的指令:
$ docker run -d -p 27017:27017 kyugao/mongodb dfe43f4c7de3af1ccf8445d4c535ed212c2935abd0212a098b5f674483723c36 $ docker run -d -p 127.0.0.1:27016:27017 kyugao/mongodb 2465c7597164c507bdf3feb372ec15554ff25015d534ae15100a1425a69f5b4b
-d 参数,表示命令这个容器是一个后台服务。
-p 参数,表示面后要在宿主机和docker容器之间建立一个端口映射,当映射端口时指定了ip地址,如上面第二个docker run指令,便只能在本机访问了。
那么,如果查看这个后台的服务呢?
$ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2465c7597164 kyugao/mongodb "mongod --dbpath=./db" 3 minutes ago Up 3 minutes 127.0.0.1:27016->27017/tcp berserk_golick dfe43f4c7de3 kyugao/mongodb "mongod --dbpath=./db" 7 minutes ago Up 7 minutes 0.0.0.0:27017->27017/tcp dreamy_franklin
高高宇在学习计算机技术的同时,还在学习中医养生,和股票投资,我已经把全部的学习笔记都放到了我的微信公众号上。
高高宇读书的微信公众号
相关文章推荐
- Docker的实例小教程--Dockerfile制作镜像(1)
- Docker教程:镜像构建和自动镜像构建dockerfile
- 3.3、Dcoker-1.12 Dockerfile,镜像制作详解以及使用说明
- 基于Dockerfile编译镜像并上传到Docker Hub公共仓库教程
- caffe2镜像制作的Dockerfile
- docker镜像的制作(一) dockerfile
- Docker教程:镜像构建和自动镜像构建dockerfile
- Dockerfile编写制作含有node环境的项目镜像
- Docker入门学习(4)----Dockerfile制作第一个镜像和容器中的第一个javaweb应用
- Docker教程:镜像构建和自动镜像构建dockerfile
- apache服务的docker镜像 以及用Dockerfile制作apache服务的镜像
- 使用Dockerfile制作Docker镜像
- docker dockerFile 参数解释,及生成jdk+tomcat镜像实例
- Docker实践(三)应用场景(创建私有库、用dockerfile制作自己应用镜像、利用私有库发布)
- dockerfile制作docker镜像
- docker镜像制作之Dockerfile文件---hadooop伪分布式
- Docker镜像中Dockerfile的制作或编写
- docker 镜像制作及dockerfile
- dockerfile制作tomcat镜像
- 使用Dockerfile制作基于Centos7支持ssh的java环境镜像