接上文创建镜像仓库后,本文记录下如何创建自己的镜像,如何安装依赖包,如何将服务放入镜像,以及如何快速部署镜像。
创建镜像一般使用dockerfile文件,将需要执行的命令写入其中,这些命令会在镜像中执行,执行成功后就会生成所需要的镜像。
这里先附上一个编译安装 Python3.5的镜像 dockerfile
-
FROM 172.17.3.212:5000/centos:7.6.1810 #基础镜像,一般基础镜像可在DOCKERHUB中获得,必须
-
MAINTAINER xxx # 作者 可不写
-
#编译安装python3.5.4,修改models文件 # 注释
-
#下面为在镜像中执行的命令
-
RUN yum install -y epel-release
-
RUN yum makecache
-
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
-
ADD Python-3.5.4.tgz /opt/ #复制文件到镜像
-
RUN mkdir -p /usr/local/python3
-
WORKDIR /opt/Python-3.5.4 # 定义工作目录,
-
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
阅读(816) | 评论(0) | 转发(0) |