docker打包

docker 打包基本步骤

1. 程序准备,使用程序所在文件夹的父目录为基准目录,在此目录下新建文件(vi Dockerfile,名字一定不能错)2. 示例内容如下(以下内容以c程序为案例,Dockerfile内容大同小异,常用命令只有这几个)

2.1 FROM 192.168.1.212/baseimage/centos:7(FROM+空格+基础镜像:版本,基础镜像就是程序的运行环境,java依赖jre环境,c依赖gcc或者其他,基础环境镜像有多种,可以选择最适合的,有的c程序可能会缺库,但是最好选择最小并且功能齐全的基础镜像,避免打成的镜像过大),目前测试环境中存在的基础镜像有如下几个,其他不存在的可以自己下载、标记,然后上传至公司的harbor镜像仓库,方便大家共同使用:

2.2 ADD 1.0.0.3/ /app/(ADD+空格+程序所在的目录+/+空格+/+打包成镜像后的程序目录+/),这句命令的意思是将整个程序的目录添加到基础镜像里面去,并命名为app,命名可以随便取,不一定是app
2.3 ENV ZOOKEEPER 192.168.1.249:2181(ENV+空格+ZOOKEEPER+空格+zk的ip及端口号),这句命令的意思是给镜像设置环境变量,变量名为ZOOKEEPER,值为192.168.1.249:2181,用于imagedb或者c的库读取,然后从zk中获取参数,根据实际环境,填写zookeeper地址
2.4 RUN echo ‘Asia/Shanghai’ >/etc/timezone(RUN+空格+echo+空格+‘Asia/Shanghai’+空格+>/etc/timezone),非必须,只是为了在k8s调度时,设置时区为上海,校准容器内的时间与宿主机的时间同步
2.5 WORKDIR /app/ (WORKDIR+空格+/+打包成镜像后的程序目录+/)设置工作目录,就是启动程序的命令在这个目录下,后面的/app/是第二步中的自己定义的,一定要一样,建议是ADD的时候不自己取名,打包进基础镜像里面就是原始目录名
2.6 RUN cmd(RUN+空格+cmd),就是执行难一段shell命令,根据需求添加,命令在打包的时候执行,但是不是程序启动命令
2.7 ENTRYPOINT /bin/sh xxxx.sh(ENTRYPOINT+空格+/bin/sh+空格+xxx.sh) 启动命令,这里也可以不写,可以在启动容器的时候指定docker run -it --rm --name test --entrypoint java test:1.0 -jar xxx.jar命令的意思是执行test:1.0这个镜像,镜像取名为test,–rm的意思是镜像退出后自动删除,–entrypoint java指定启动命令,镜像名后面-jar xxx.jar都是java命令的参数,c也类似,更加深的用法可以百度

3. 开始打包docker build -t 192.168.1.212/gridknow/test:1.0.0 .(最后是空格加点不能丢了),命名类似这样,要是没报错就说明打包成功了。

4. 打包.tar

docker save -o test_v1.0.0.tar 192.168.1.212/gridknow/test:1.0.0

5. 上传 .tar

docker load<test_v1.0.0.tar

6. 停止docker镜像

6.1 docker pa

6.2 docker stop CONTAINER ID
6.3 docker ps -a
6.4 docker rm CONTAINER ID
6.5 docker run -d -it -p 8001:8001 -v/etc/zookeeper.properties:/etc/zookeeper.properties -m 1g --rm --name test entrypoint java 192.168.1.212/gridknow/test:1.0.0 -jar test-1.0-ANAPSHOT.jar

本文链接:https://my.lmcjl.com/post/9263.html

展开阅读全文

4 评论

留下您的评论.