1
|
docker image build -t 仓库/标签:版本号 .
|
1
|
docker image
history
ID
|
参数 | 说明 |
--build-art=[] | 设置镜像创建时的变量 |
--compress | 是否在构建过程使用gzip进行压缩,默认为否 |
--cpu-shares | 设置CPU使用权重,默认为0 |
--cpu-period | 设置CPU的CFS(完全公平调度算法)周期,默认为0,这个可以调整是否可以给该容器分配更多或更少的CPU时间。 |
--cpu-quota | 设置CPU的CFS配额,默认为0 |
--cpuset-cpus | 指定使用哪个CPU运行该容器,从0开始表示第一个CPU或者核心 |
--cpuset-mems | 设置指定使用的内存ID,一根物理内存在系统上是有编号的,就跟CPU一样,这个参数设置该容器使用哪根物理内存条。使用下面的命令查看: dmidecode -t 17 | less 其中Handle后面的表示内存ID,插上内存的插槽在Size中有值,没插的显示“No Module Installed”。 |
--disable-content-truse | 忽略校验,默认开启 |
-f | 设置使用哪个dockerfile,如果使用这个参数指定文件位置那么该Dockerfile的名称可以是任意的,但是必须在构建上下文之中。之前演示构建的命令中最后是一个“.”,这个表示到本地当前目录(也叫做构建上下文路径)去找dockerfile,这时候你的Dockerfile文件名称就必须是“dockerfile”,而且它会读取该目录以及其子目录的Dockerfile,并将所有的内容发送给docker守护进程来创建镜像,所以一般建议构建上下文或者也叫做内容路径为空目录。如果你不使用构建上下文路径下的Dockerfile,那么就要使用-f参数来指定文件。 |
--force-rm | 是否允许强制删除容器,默认为false |
--isolation | 容器隔离技术 |
--lable=[] | 为镜像设置一个标签 |
-m,--memory | |
--memory-swap | 设置容器的SWAP限制 |
--network | 设置网络方式 |
--no-cache | 构建镜像时不适用缓存,默认为false。因为构件时,每一步都会提交为一个镜像,所以Docker会把之前的看做缓存,假设构建分成5步,前三步都不需要修改,那么Docker就会将前3步作为缓存适用,尤其是在构建镜像调试的时候会用到,这样可以节省时间。 |
--pull | 总会尝试拉取一个最新版本的镜像进行使用,默认为false |
--tag,-t | 镜像名称 名称:标签 |
-q | 不输出构建镜像过程,结束后输出结果。默认是false,也就是输出构建过程。 |
--rm | 镜像构建成功后,删除构建过程中的容器。 |
--shm-size | 默认的/dev/shm大小,默认64M |
--ulimit | 设置容器的ulimit设置,就是我们使用ulimit -a看到的那些内容。 |
1
|
docker run -d -p 80 --name httpSrv rex
/1stimage
:0.1
|
1
2
|
docker port ID [PORT]
#不加后面的端口表示查看该容器的所有端口映射情况
|
-p | |
-P | 大写P,表示使用Dockerfile中定义的EXPOSE端口映射到宿主机的随机端口上。 |
1
|
FROM 镜像:[标签]
#如果不指定标签,则默认为leatest,最新镜像
|
1
2
3
4
|
RUN <COMMAND>
#或者
RUN [
"COMMAND"
,
"ARG1"
...]
#后面这张形式会被解析为JSON数组,所以必须加引号
|
1
2
3
|
CMD <COMMAND>
#或者
CMD [
"COMMAND"
,
"ARG1"
,
"ARG2"
...]
|
1
|
LABEL <KEY>=<VALUE> <KEY>=<VALUE> ....
|
1
|
EXPOSE <PORT> ....
|
1
2
3
|
ENV <NAME> <VALUE>
#或者
ENV <NAME>=<VALUE>
|
1
2
|
ENV JAVA_HOME
/opt/java1
.8.0_111
ENV PATH $JAVA_HOME:$PATH
|
1
|
ADD <SRC> <DES>
|
1
2
|
ADD /构建上下文
/apache/httpd
.conf
/etc/httpd/conf/
ADD /构建上下文
/apache/httpd
.d/*.conf
/etc/httpd/conf
.d/
|
1
|
COPY <SRC> <DES>
|
1
2
3
|
ENTRYPOINT <COMMAND ARG1 ARG2...>
#或者
ENTRYPOINT [
"COMMAND"
,
"ARG1"
,
"ARG2"
...]
|
1
|
ENTRYPOINT [
"/usr/sbin/nginx"
]
|
1
|
docker run -d 镜像 -g
"daemon off;"
|
1
|
/usr/sbin/nginx
-g
"daemon off;"
|
1
|
VOLUME [
"/目录1"
,
"/目录2"
....]
|
-
该卷可以在容器间共享或者重用
-
对该卷的修改立即生效
-
对卷的修改不会对镜像产生影响
1
2
3
4
|
USER <USERNAME>
USER <UID>
USER <USERNAME>:<GROUPNAMD>
USER <UID>:<GID>
|
1
|
WORKDIR <PATH>
|
1
2
|
ARG A1
ARG A2=HELLO
|
1
|
docker build --build-arg A1=world -tNAME .
|
1
|
ONBUILD RUN [
"echo"
,
"hello world"
]
|
1
2
3
|
FROM 1
.....
|
1
|
STOPSIGNAL <SIGNAL>
|
1
2
3
4
|
#根据执行命令是否返回0来判断
HEALTHCHECK [OPTION] CMD <COMMAND>
#禁止继承镜像中的健康检查
HEALTHCHECK NONE
|
-
--interval=DURATION ,多久检查一次,默认30秒
-
--timeout=DURATION ,每次检查等待结果的时间,默认30秒
-
--retries=N ,如果失败了,重试几次才最终确定失败
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# Version: 0.0.1
# 指定使用哪个基础镜像
FROM centos:6.6
# 说明该镜像的制作者和联系方式
MAINTAINER Rex.chen rex.chen@aaa.com
#设置标签,不是必须的只是为了说明里面的版本查看起来方便
LABEL Tomcat=
"8.5.13"
JDK=
"1.8.0_111"
# 清理一下YUM源,这个不是必须的只是为了临时通过YUM安装软件方便
RUN yum clean all
# 复制安装程序到指定目录,我这里使用COPY命令只是因为我要自行解压缩
ENV SOFT_DEST
/usr/local/src
ENV TOMCAT_APP_NAME apache-tomcat-8.5.13.
tar
.gz
ENV JDK_APP_NAME jdk-8u111-linux-x64.
tar
.gz
ADD tomcat/$TOMCAT_APP_NAME $SOFT_DEST
ADD jdk/$JDK_APP_NAME $SOFT_DEST
# 拷贝程序到指定目录并设置环境变量
WORKDIR $SOFT_DEST
RUN [
"mv"
,
"./jdk1.8.0_111"
,
"/usr"
]
RUN [
"mkdir"
,
"/work/apps"
,
"-p"
]
RUN [
"mv"
,
"./apache-tomcat-8.5.13"
,
"/work/apps"
]
ENV JAVA_HOME
"/usr/jdk1.8.0_111"
ENV PATH $JAVA_HOME
/bin
:$PATH
ENV CATALINA_HOME
"/work/apps/apache-tomcat-8.5.13"
ENV PATH $CATALINA_HOME
/bin
:$PATH
# ENTRYPOINT命令是指定在容器启动时执行的命令,CMD中指定使用run,因为catalina.sh start是后台运行,run是前台运行
ENTRYPOINT [
"catalina.sh"
]
CMD [
"run"
]
# 设置容器内的应用程序使用容器的哪个端口
EXPOSE 8080
|
1
|
docker build -t tomcat8:0.1 .
|
1
2
|
docker inspect tomcat8:0.1 --
format
=
'{{.ContainerConfig.Labels.Tomcat}}'
docker inspect tomcat8:0.1 --
format
=
'{{.ContainerConfig.Labels.JDK}}'
|
1
|
docker run -d -p 8080 --name jspSrv01 tomcat8:0.1
|