docker Dockerfile java8构建微服镜像并运行

docker安装

拉取jdk镜像

docker search java8
docker pull williamyeh/java8

上传jar到linux

[root@whotw eureka]# pwd
/project/eureka  
[root@whotw eureka]# ls
eureka.jar

下面的指令都在jar包所在目录下执行

创建Dockerfile

[root@whotw eureka]# touch Dockerfile 
[root@whotw eureka]# ls
Dockerfile eureka.jar

Dockerfile内容

# 环境
FROM  williamyeh/java8:latest
# 作者信息
MAINTAINER david "3120338098@qq.com"
# 将本地文件tmp挂载到容器
VOLUME /tmp
# 拷贝jar
ADD eureka.jar /eureka.jar
# 设置暴露的端口号
#EXPOSE 8761
# 执行命令
ENTRYPOINT ["java","-jar","/eureka.jar"]

构建微服务镜像【docker build -t 镜像名称:tag标签】

///后面的一个点要指定,表示从当前目录进行构建

docker build -t  eureka:1.0  .   

启动镜像,如果标签是latest而不是1.0后面的:latest可省略不写

docker run -d -p 8761:8761 eureka:1.0

查看容器是否存在且对应进程是否存在

[root@whotw eureka]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
db0b37d8c165        eureka:1.0          "java -jar /eureka.j…"   3 seconds ago       Up 2 seconds        0.0.0.0:8761->8761/tcp   flamboyant_payne
[root@whotw eureka]# ps aux|grep eureka
root       9650 67.6 21.3 2218520 212640 ?      Ssl  00:42   0:15 java -jar /eureka.jar
root       9723  0.0  0.0 112708   976 pts/0    R+   00:42   0:00 grep --color=auto eureka

浏览器访问宿主机IP:端口【关闭防火墙】

在这里插入图片描述

docker rmi -f imags_id  //删除某个镜像
docker rmi -f $(docker images)  //删除所有镜像
docker rm -f contain_id  //删除某个容器
docker rm -f $(docker ps -a -q)  //删除所有容器

Dockerfile 常用命令

 FROM  
 FROM 镜像指令指明了当前镜像继承的基镜像,编译当前镜像时会自动下载基镜像 ,如果不指定映像url 则从docker hub 上获取。 e.g : FROM ubuntu 
 
MAINTAINER 
MAINTAINER 指令 指定了当前镜像的作者及联系方式。e.g : MAINTAINER: caiqiufang

RUN 
RUN 指令可以在当前镜像上执行Linux  命令并形成一个新的层,RUN 是编译时(build) 的动作,在docker 命令中运行的shell 命令,等价于docker run <image> <command> 示例可以是如下两种,CMD 和 ENTRYPOINT也是如此 e.g : RUN /bin/bash -c "echo helloworld"    or   RUN {"/bin/bash", "-c" ,"echo helloworld"}

CMD
 CMD 指令指明了启动镜像容器时的默认行为(docker 容器运行时的默认命令),一个Dockerfile 里只有一个CMD 指令,CMD 指令里设定的命令可以在运行镜像时使用参数覆盖,CMD 是 运行时(run)的动作。 e.g :  CMD echo "this is a test"  正如上所说可以被运行时的参数覆盖,如下: docker  run -d imag_name echo "this is not a test"。

EXPOSE
 指明了镜像运行时的容器必须监听的端口  e.g : EXPOSE 8080

ENV 
用来设置环境变量  e.g :  ENV myname = caiqiufang   or ENV myname  caiqiufang。

ADD
ADD 指令是指从当前工作目录复制文件到镜像目录中去。 e.g : ADD test.txt   /mydir/

ENTRYPOINT
ENTRYPOINT 指令可以让容器像一个可执行程序一样运行,这样镜像运行时可以像软件一样 接收参数执行。ENTRYPOINT 是运行(run)时的动作  e.g : ENTRYPOINT {"/bin/echo"}  ,那么我们可以向镜像传递参数运行 docker run  -d image_name  "this is a test"

WORKDIR 
指定RUN, CMD, ENTRYPOINT  等命令运行的工作路径 

更多指令

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幽·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值