美文网首页
Docker初体验(二)- 创建docker镜像

Docker初体验(二)- 创建docker镜像

作者: 大路无疆 | 来源:发表于2017-04-20 00:47 被阅读0次

    上一篇中解释了Docker与虚拟机的不同,以及使用它的好处--一次创建到处运行。那么这一篇就介绍怎么创建一个可以在各处运行的Docker镜像。创建Docker有不同的方式,一种是基于基础镜像创建容器,在容器中做相关配置,安装运行应用需要的包,然后提交新的镜像, 这种方式适合配置复杂的镜像;另外一种是使用Dockerfile,自动化的生成镜像,这种方式适用于需要自动化的场景。

    手工配置镜像

    在最近的小项目中,我们要创建一个Jenkins的Docker镜像,它负责编译打包工程,安装AWS CLI, 打包应用的Docker镜像,所以需要安装很多的组件。接下来我们来一步一步配置我们的Docker镜像。

    首先,我们从DockerHub上找到一个基础镜像,我们运行命令来创建进行配置的基础容器:

    docker run -d  -p 18080:8080  -v ${PWD}/jenkins_home:/var/jenkins_home jenkins

    登陆容器,并执行安装操作:

    docker exec -it --user jenkins containerId bash

    查看容器的相关配置信息:

    docker inspect containerId

    装好相关应用后将配置的容器提交到本地镜像:

    docker commit containerId lane0201/jenkins:latest

    也可以添加环境变量,开放新的接口和卷,例如

    docker commit --change "ENV DEBUG true"  --change  "VOLUME /tmp" -c "EXPOSE 8080" containerId  lane0201/jenkins:version1

    提交本地镜像到远程仓库,之后就可以根据新的镜像创建容器了:

    docker push lane0201/jenkins:latest

    相关命令的具体配置参考官方的docker文档

    使用Dockerfile生成镜像

    docker build命令根据指定的Dockerfile文件生成镜像, 例如:

    docker build -f /path/to/a/Dockerfile .

    一个简单的Dockerfile是这样的:

    FROM frolvlad/alpine-oraclejdk8:slim

    VOLUME /tmp

    ENV MYSQL_HOST 127.0.0.1

    ENV MYSQL_PORT 3306

    ENV MYSQL_USER myUser

    ENV MYSQL_DATABASE myDatabase

    ADD 17high_web-0.0.1-SNAPSHOT.jar app.jar

    RUN sh -c 'touch /app.jar'

    ENV JAVA_OPTS=""

    ENTRYPOINT [ "sh", "-c", "sleep 15 && java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

    关于Dockerfile的具体配置可以参考docker build文档

    相关文章

      网友评论

          本文标题:Docker初体验(二)- 创建docker镜像

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