Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1462946
  • 博文数量: 63
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 646
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-26 18:02
个人简介

祸兮福之所倚,福兮祸之所伏

文章分类

全部博文(63)

文章存档

2020年(11)

2019年(10)

2017年(10)

2016年(25)

2015年(7)

我的朋友

分类: 云计算

2020-06-24 14:08:22

      接上文创建镜像仓库后,本文记录下如何创建自己的镜像,如何安装依赖包,如何将服务放入镜像,以及如何快速部署镜像。
      创建镜像一般使用dockerfile文件,将需要执行的命令写入其中,这些命令会在镜像中执行,执行成功后就会生成所需要的镜像。
      这里先附上一个编译安装 Python3.5的镜像 dockerfile
      

点击(此处)折叠或打开

  1. FROM 172.17.3.212:5000/centos:7.6.1810   #基础镜像,一般基础镜像可在DOCKERHUB中获得,必须
  2. MAINTAINER xxx                           # 作者 可不写
  3. #编译安装python3.5.4,修改models文件       # 注释
  4. #下面为在镜像中执行的命令
  1. RUN yum install -y epel-release           
  2. RUN yum makecache
  3. RUN yum install -y zlib-devel bzip2-devel mysql-devel patch gcc-devel python-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make supervisor
  4. ADD Python-3.5.4.tgz /opt/              #复制文件到镜像
  5. RUN mkdir -p /usr/local/python3 
  6. WORKDIR /opt/Python-3.5.4               # 定义工作目录,
  7. RUN ./configure --prefix=/usr/local/python3 && make -j 8 && make install
         然后执行  docker build -t  ${imagename}:$VERSION -f dockerfile . 就可以生成镜像
        具体介绍下dockerfile常用命令
        FROM   后接基础镜像,如果没有会自动下载,一般基础镜像包含通用的环境,这样应用镜像就只需要把应用放入镜像就可以,精简了很多。
        RUN   在容器中运行命令,命令就是基础镜像中所提供的。 
        ADD   将本机文件复制到镜像中,注意如果想复制目录必须先在镜像中创建目录,ADD只会移动目录下的文件
        COPY   src dst      跟ADD差不多功能,推荐用此命令。
        WORKDIR  设置工作目录,镜像中的默认路径
        EXPOSR  PORT  将镜像中的端口暴露出来,让外部网络能够访问
        ENV  key value 设置镜像中环境变量
        CMD ["命令或可执行文件","params1","params2"] 容器运行时执行的命令
        ENTRYPOINT ["命令或可执行文件","params1","params2"容器运行时执行的命令
        两者区别,ENTRYPOINT 不会被docker run 的命令所覆盖,加的命令会追加给作为参数
       
        最后解释下构建命令
        docker build -t image:version -f dockerfile .
        -t 为构建的镜像名字
        -f 指定dockerfile,如果默认文件名为dockerfile
        .  上下文,执行的ADD/COPY等复制的文件路径都相对此路径 
                


        以上就是创建镜像的基本介绍,有兴趣可以多看dockerhub的镜像,上面有各种dockerfile



阅读(139) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~