DockerFile

1 Dockerfile的简易用法

创建一个文件,编辑内容

touch hello
nano hello
#在文件中输入以下内容
FROM redis #FROM指令初始化一个新的构建阶段,并为后续指令设置**基础镜像**。因此,有效的 Dockerfile 必须以 FROM 指令开头。该镜像可以是任何有效的镜像–很容易通过从Public Repositories(镜像仓库) 拉取一个镜像。
MAINTAINER ohb

运行Dockerfile

2 idea连接虚拟机docker

2.1 配置linux
vim /lib/systemd/system/docker.service #编辑文件

在文件中第13行 :set number显示行 插入

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

保存退出

systemctl daemon-reload #重载配置

重启docker服务

systemctl restart docker.service

curl 测试服务是否启动

curl http://192.168.188.128:2375/info

开启防火墙

firewall-cmd --add-port=2375/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
2.2 idea下设置

在idea中进行如图配置
在这里插入图片描述

3 linux安装JDK

3.1 上传JDK

在这里插入图片描述

3.2 解压
tar -zxvf
3.3 配置环境
cd /etc
nano profile
#在文件最末尾输入以下内容,这里是临时设置,注销该会话后需要重新应用
JAVA_HOME=/usr/local/softwares/jdk/jdk1.8.0_341
CLASSPATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
#根据windows的path可知,所有的路径以;保存在同一条记录下,这个命令将把 "$JAVA_HOME/bin" 添加到 $PATH 的开头。现在,系统将首先搜索 "/new/path",然后才会搜索默认的 $PATH 路径。
export JAVA_HOME CLASSPATH PATH
#将之前定义的变量导出,使其在当前会话中生效。
source /etc/profile
3.4 运行项目jar包

在运行之前,首先要确保端口已经开启

java -jar docker-hello-1.0-SNAPSHOT.jar

在这里插入图片描述

4 用idea在虚拟机中建立docker,运行项目

在根目录新建Dockerfile文件

FROM anapsix/alpine-java  #下载anapsix/alpine-java,以它为镜像建立docker 
MAINTAINER ohb  #设置维护者为ohb
EXPOSE 8080  #指定容器中运行的应用程序将会监听的端口,这里是 `8080` 端口。
ADD target/docker-hello-1.0-SNAPSHOT.jar /app.jar #将应用程序打包成的可执行 jar 包添加到镜像中,并将其重命名为 `/app.jar` 
ENTRYPOINT ["java","-jar","/app.jar"] #指定容器启动时的默认进程。这里是使用 Java 命令来启动 `/app.jar`

点击左上按钮
在这里插入图片描述

在这里插入图片描述

注:镜像标记是docker image的名称
容器名称是docker容器的名称
绑定端口中主机端口可以自行更改,而容器端口必须和项目端口一致

5 补充

5.1 windows和linux环境变量的区别
序列符号WindowsLinux
1分隔符;:
2文件夹分割\/
3取值符号%变量%$变量
5.2 Dockerfile文件常用指令
FROM 指定基础镜像

FROM指令初始化一个新的构建阶段,并为后续指令设置基础镜像。因此,有效的 Dockerfile 必须以 FROM 指令开头。该镜像可以是任何有效的镜像–很容易通过从Public Repositories(镜像仓库) 拉取一个镜像。

FROM类似于Java中extends关键字继承于基础镜像,即FROM之后的内容都依赖于此基础镜像。

格式

格式:
  FROM 镜像名称
  FROM 镜像名称:
  FROM 镜像名称@
注:
  tag或digest是可选的,如果不使用这两个值时,会使用latest版本的基础镜像

案例
  1. FROM mysql:5.6

  2. FROM java:8

MAINTAINER指定维护者信息

MAINTAINER指令用于指定维护者的信息,用于为Dockerfile署名。

格式

MAINTAINER 名字

案例
  1. MAINTAINER ohb
ADD 复制文件

将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget。

格式

ADD src … dest
ADD [“src”,… “dest”] 用于支持包含空格的路径

从src目录复制文件到容器的dest。

案例
  1. ADD target/springboot-dockerfile-1.0-SNAPSHOT.jar /app.jar

将本机target/springboot-dockerfile-1.0-SNAPSHOT.jar文件拷贝到容器内**/app.jar**

ENTRYPOINT 入口点

ENTRYPOINT 允许您配置将作为可执行文件运行的容器。用ENTRYPOINT的exec形式来设置相当稳定的默认命令和参数,然后使用CMD的任何一种形式来设置更可能更改的其他默认值。

注: 一般在制作一些执行就关闭的容器中会使用。

格式

ENTRYPOINT [“executable”, “param1”, “param2”] (可执行文件, 优先)
ENTRYPOINT command param1 param2 (shell内部命令)

ENTRYPOINT与CMD非常类似,不同的是通过docker run执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令。

案例
  1. ENTRYPOINT ["java","-jar","/app.jar"]
EXPOSE

指定于暴露的端口。

格式

EXPOSE […]

案例
  1. EXPOSE 9091
VOLUME 指定挂载点

使用指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可以共享给其它容器。

格式

VOLUME 文件路径

案例
  1. VOLUME /tmp
CMD

**CMD 在 Dockerfile 中的主要目的是为正在运行的容器提供默认值。这些默认值可以包括一个可执行文件,也可以省略可执行文件,此时必须指定一个 ENTRYPOINT 指令来告知容器所需的可执行程序或命令。

测试及日志

日志

debug>info>warn>error>fatal
从左到右日志包含信息逐渐减少
debug:开发人员
info:使用人员
warn:客户
error:错误信息
fatal:严重错误信息
注:重要方法必有日志,异常信息必须捕获日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值