接上文创建镜像仓库后,本文记录下如何创建自己的镜像,如何安装依赖包,如何将服务放入镜像,以及如何快速部署镜像。
创建镜像一般使用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
阅读(739) | 评论(0) | 转发(0) |