docker - 使用Dockerfile文件构建微服务Docker镜像并启动运行微服务

系统环境:CentOS 7.6 


第一步:准备好开发好的一个微服务jar包
 
比如:cloud-v2-eureka-server-1.0-SNAPSHOT.jar
 
将该微服务jar包上传到docker服务的宿主机上一个叫"appfiles"文件夹下
 
第二步:创建Dockerfile文件,并添加如下内容
 
注意:将该Dockerfile文件也上传到docker服务的宿主机上一个叫"appfiles"文件夹下
 
# 指定基础image,基于哪个镜像,格式:FROM <image>:<tag>
FROM java:8
 
# 指定镜像创建者,格式:MAINTAINER <name>
MAINTAINER lj
 
# 将本地文件夹挂载到当前容器,使容器中的一个目录具有持久化存储数据的功能,该目录可以被容器本身使用,也可以共享给其他容器使用
VOLUME ["/tmp"]
 
# 复制文件到容器,格式:ADD <src> <dest>
# <src> 是相对被构建的源目录的相对路径,可以是文件或目录的路径,也可以是一个远程的文件url;
# <dest> 是container中的绝对路径
ADD cloud-v2-eureka-server-1.0-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
 
# 声明需要暴露的端口,指定容器需要映射到宿主机器的端口
EXPOSE 7000
 
# 配置容器启动后执行的操作命令
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
 
 
第三步:使用docker build命令构建镜像
 
# docker build -t 仓库名称/镜像名称(:标签) Dockerfile的相对位置
 
- 仓库如果没有,可以暂不指定
- 标签可以是"微服务版本号",比如当前部署为:docker build -t cloud-v2-eureka-server:1.0 .
 
# docker build -t cloud-v2-eureka-server:1.0 .      -- 注意后面那个"."不能够丢,缺失会报至少需要一个参数异常
 
第四步:启动镜像
 
# docker images     -- 先查看以下镜像是否存在
 
[root@dockermain appfiles]# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
cloud-v2-eureka-server   1.0                 94621481d771        10 seconds ago      748MB
hello-world              latest              bf756fb1ae65        14 months ago       13.3kB
java                     8                   d23bdf5b1b1b        4 years ago         643MB
[root@dockermain appfiles]#
 
启动镜像命令格式:docker run -d -p 7000:7000 仓库名称/镜像名称(:标签)
 
# docker run -d -p 7000:7000 cloud-v2-eureka-server:1.0
 
# docker ps
 
 
第五步:访问http://docker宿主机IP:7000
 
如果可以正常访问Eureka服务,说明构建成功
 
 
 
------------------------------------------------------------------------------------------------------------------
【主要构件镜像与启动容器过程如下】
 
[root@dockermain appfiles]# docker build -t cloud-v2-eureka-server:1.0
"docker build" requires exactly 1 argument.
See 'docker build --help'.
 
Usage:  docker build [OPTIONS] PATH | URL | -
 
Build an image from a Dockerfile
[root@dockermain appfiles]# docker build -t cloud-v2-eureka-server:1.0 .        -- 后面这个点"."别丢了,该命令后面至少需要一个参数
Sending build context to Docker daemon  52.35MB
Step 1/7 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
 ---> d23bdf5b1b1b
Step 2/7 : MAINTAINER lj
 ---> Running in a554884f40b3
Removing intermediate container a554884f40b3
 ---> e41ccddfa406
Step 3/7 : VOLUME ["/tmp"]
 ---> Running in 98a4aa5ad303
Removing intermediate container 98a4aa5ad303
 ---> d093a821a104
Step 4/7 : ADD cloud-v2-eureka-server-1.0-SNAPSHOT.jar app.jar
 ---> 8301a24dc7ef
Step 5/7 : RUN bash -c 'touch /app.jar'
 ---> Running in eff7f3f1795b
Removing intermediate container eff7f3f1795b
 ---> 68ac6232b7dd
Step 6/7 : EXPOSE 7000
 ---> Running in a1f55cb3c1cf
Removing intermediate container a1f55cb3c1cf
 ---> 433db604d95a
Step 7/7 : ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
 ---> Running in 0a46e56e2ac4
Removing intermediate container 0a46e56e2ac4
 ---> 94621481d771
Successfully built 94621481d771
Successfully tagged cloud-v2-eureka-server:1.0
[root@dockermain appfiles]# docker images       -- 查看构建好的docker镜像
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
cloud-v2-eureka-server   1.0                 94621481d771        10 seconds ago      748MB
hello-world              latest              bf756fb1ae65        14 months ago       13.3kB
java                     8                   d23bdf5b1b1b        4 years ago         643MB
[root@dockermain appfiles]# docker run -d -p 7000:7000 cloud-v2-eureka-server:1.0
ee6b71d5899e5233ccfae6a2ef88ec5a3c8a5d7cf6f4dfae709ce6316f125e90
[root@dockermain appfiles]# docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                    NAMES
ee6b71d5899e        cloud-v2-eureka-server:1.0   "java -Djava.securit…"   21 seconds ago      Up 20 seconds       0.0.0.0:7000->7000/tcp   cool_lehmann
[root@dockermain appfiles]# docker ps  -- 查看正在运行的容器实例
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                    NAMES
ee6b71d5899e        cloud-v2-eureka-server:1.0   "java -Djava.securit…"   2 minutes ago       Up 2 minutes        0.0.0.0:7000->7000/tcp   cool_lehmann
[root@dockermain appfiles]#
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值