系统环境: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]#