docker-DockerFile手动构建

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

  • 采用手动docker镜像构建方式,不依赖于maven等构建工具,这种方式可以针对任何程序创建镜像,本文以java应用为例。

一、构建步骤

1.安装docker工具

  • 准备好一台linux系统服务器

  • 安装docker步骤略过(上篇文章有写)

  • 输入命令docker info表示安装成果

  • 创建文件夹

    [root@dev1 build_image]# pwd
    /root/build_image
    [root@dev1 build_image]# 
    

2.上传编译后的可运行程序

[root@dev1 build_image]# ls
nat-server.jar
[root@dev1 build_image]# 

3.创建Dockerfile文件

[root@dev1 build_image]# touch Dockerfile
[root@dev1 build_image]# ls
Dockerfile  nat-server.jar
[root@dev1 build_image]# 
  • 编辑Dockerfile文件
#作为基础镜像
FROM openjdk:8-jdk-alpine
#设置镜像源,apk add是alpine系统安装命令,同时设置时区,防止时间问题
RUN echo "http://mirrors.aliyun.com/alpine/v3.12/main/" > /etc/apk/repositories && apk add --no-cache procps curl bash tzdata && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
#安装软件,根据用户自己选择
RUN set -xe && apk --no-cache add ttf-dejavu fontconfig
#创建可执行程序所在的路径
RUN mkdir -p /usr/local/nat/
#将Dockerfile所在目录下的可执行程序复制到容器镜像中的文件夹中
ADD nat-server.jar /usr/local/nat/
#启动容器内的java程序
ENTRYPOINT java -XX:+PrintFlagsFinal -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap $JAVA_OPTS -jar -Duser.timezone=Asia/Shanghai /usr/local/nat/nat-server.jar

用openjdk:8-jdk-alpine 代替 java:8 可以大量减少镜像的体积,同时解决容器限制内存大小的问题

4.执行手动构建命令

  • docker build -t nat-server:1.0.0 .
[root@dev1 build_image]# docker build -t nat-server:1.0.0 .
Sending build context to Docker daemon  5.766MB
Step 1/8 : FROM openjdk:8-jdk-alpine
 ---> a3562aa0b991
Step 2/8 : ENV TZ=Asia/Shanghai
 ---> Using cache
 ---> 373f003debbc
Step 3/8 : RUN echo "http://mirrors.aliyun.com/alpine/v3.12/main/" > /etc/apk/repositories && apk add --no-cache procps curl bash tzdata && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
 ---> Using cache
 ---> 878fc98f99a6
Step 4/8 : RUN set -xe && apk --no-cache add ttf-dejavu fontconfig
 ---> Using cache
 ---> 8b4f40013838
Step 5/8 : RUN mkdir -p /usr/local/nat/ && mkdir -p /usr/local/nat/config/
 ---> Using cache
 ---> 242e9799ef45
Step 6/8 : ADD nat-server.jar /usr/local/nat/
 ---> Using cache
 ---> 92eba017d115
Step 7/8 : ADD ./config/config.properties /usr/local/nat/config/
 ---> Using cache
 ---> 9b7c2e991e50
Step 8/8 : ENTRYPOINT java -XX:+PrintFlagsFinal -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap $JAVA_OPTS -jar -Duser.timezone=Asia/Shanghai /usr/local/nat/nat-server.jar /usr/local/nat/config/config.properties
 ---> Using cache
 ---> aa0954a76595
Successfully built aa0954a76595
Successfully tagged nat-server:1.0.0
[root@dev1 build_image]# 

docker build -t nat-server:1.0.0 . 后面有个.不要弄丢了噢
-t 表示tag,定义镜像的名字和版本

[root@dev1 build_image]# docker images
REPOSITORY       TAG        IMAGE ID            CREATED             SIZE
nat-server       1.0.0      aa0954a76595        About an hour ago   136MB

出现以上表示构建成功,然后可以开始启动docker

5.Push到阿里容器镜像中

#登录
$ sudo docker login --username=xxxx registry.cn-shanghai.aliyuncs.com
#修改镜像tag成阿里的镜像tag
$ sudo docker tag nat-server:1.0.0 registry.cn-shanghai.aliyuncs.com/xxx/nat-server:1.0.0
#通过docker push命令到阿里镜像中
$ sudo docker push registry.cn-shanghai.aliyuncs.com/xxx/nat-server:1.0.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值