1、docker file编写指令简介
FROM
FROM <image>
FROM <image>:<tag>
FROM <image> <digest>
FROM指令必须指定且需要在Dockerfile其他指令的前面,指定的基础image可以是官方远程仓库中的,也可以位于本地仓库。后续的指令都依赖于该指令指定的image。当在同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令。
VOLUME
格式为:
VOLUME ["/data"]
使容器中的一个目录具有持久化存储数据的功能,该目录可以被容器本身使用,也可以共享给其他容器。当容器中的应用有持久化数据的需求时可以在Dockerfile中使用该指令。
ADD
从src目录复制文件到容器的dest。其中src可以是Dockerfile所在目录的相对路径,也可以是一个URL,还可以是一个压缩包
ENTRYPOINT
指定Docker容器启动时执行的命令,可以多次设置,但是只有最后一个有效。
EXPOSE
为Docker容器设置对外的端口号。在启动时,可以使用-p选项或者-P选项。
2、编写dockerfile
# 基于哪个镜像
FROM 125.65.82.213/java8/java-docker
# 将本地文件夹挂载到当前容器
VOLUME /home/container
# 拷贝文件到容器
ADD eureka-server-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
# 开放8761端口
EXPOSE 8761
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
3、构建镜像
docker build -t eureka-server .
4、运行容器
docker service create --name eurekaserver --replicas 1 -p 8761:8761 --no-resolve-image eurekaserver
5、访问localhost:8761
curl localhost:8761
返回
<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<base href="/">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Eureka</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="eureka/css/wro.css">
</head>
<body id="one">
<nav class="navbar navbar-default" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href=""><span></span></a>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="">Home</a>
</li>
<li>
<a href="/lastn">Last 1000 since startup</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid xd-container">
<h1>System Status</h1>
<div class="row">
<div class="col-md-6">
<table id='instances' class="table table-condensed table-striped table-hover">
<tr>
<td>Environment</td>
<td>test</td>
</tr>
<tr>
<td>Data center</td>
<td>default</td>
</tr>
</table>
</div>
<div class="col-md-6">
<table id='instances' class="table table-condensed table-striped table-hover">
<tr>
<td>Current time</td>
<td>2018-05-09T10:35:45 +0000</td>
</tr>
<tr>
<td>Uptime</td>
<td>01:22</td>
</tr>
<tr>
<td>Lease expiration enabled</td>
<td>false</td>
</tr>
<tr>
<td>Renews threshold</td>
<td>1</td>
</tr>
<tr>
<td>Renews (last min)</td>
<td>0</td>
</tr>
</table>
</div>
</div>
<h4 id="uptime"><font size="+1" color="red"><b>EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.</b></font></h4>
<h1>DS Replicas</h1>
<ul class="list-group">
</ul>
<h1>Instances currently registered with Eureka</h1>
<table id='instances' class="table table-striped table-hover">
<thead>
<tr><th>Application</th><th>AMIs</th><th>Availability Zones</th><th>Status</th></tr>
</thead>
<tbody>
<tr><td colspan="4">No instances available</td></tr>
</tbody>
</table>
<h1>General Info</h1>
<table id='generalInfo' class="table table-striped table-hover">
<thead>
<tr><th>Name</th><th>Value</th></tr>
</thead>
<tbody>
<tr>
<td>total-avail-memory</td><td>668mb</td>
</tr>
<tr>
<td>environment</td><td>test</td>
</tr>
<tr>
<td>num-of-cpus</td><td>2</td>
</tr>
<tr>
<td>current-memory-usage</td><td>390mb (58%)</td>
</tr>
<tr>
<td>server-uptime</td><td>01:22</td>
</tr>
<tr>
<td>registered-replicas</td><td></td>
</tr>
<tr>
<td>unavailable-replicas</td><td></td>
</tr>
<tr>
<td>available-replicas</td><td></td>
</tr>
</tbody>
</table>
<h1>Instance Info</h1>
<table id='instanceInfo' class="table table-striped table-hover">
<thead>
<tr><th>Name</th><th>Value</th></tr>
<thead>
<tbody>
<tr>
<td>ipAddr</td><td>10.255.0.6</td>
</tr>
<tr>
<td>status</td><td>UP</td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript" src="eureka/js/wro.js" ></script>
<script type="text/javascript">
$(document).ready(function() {
$('table.stripeable tr:odd').addClass('odd');
$('table.stripeable tr:even').addClass('even');
});
</script>
</body>
</html>