在本文中,我们将带你了解Dockerfile:RUN导致无操作在这篇文章中,我们将为您详细介绍Dockerfile:RUN导致无操作的方方面面,并解答dockerfilerun常见的疑惑,同时我们还将
在本文中,我们将带你了解Dockerfile:RUN导致无操作在这篇文章中,我们将为您详细介绍Dockerfile:RUN导致无操作的方方面面,并解答dockerfile run常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的docker rmi 导致后面的命令不执行问题 Dockerfile 设置时区问题、docker run -v vs Dockerfile的VOLUME、docker run jboss Dockerfile、docker run中-v指令与Dockerfile中volume命令的区别。
本文目录一览:- Dockerfile:RUN导致无操作(dockerfile run)
- docker rmi 导致后面的命令不执行问题 Dockerfile 设置时区问题
- docker run -v vs Dockerfile的VOLUME
- docker run jboss Dockerfile
- docker run中-v指令与Dockerfile中volume命令的区别
Dockerfile:RUN导致无操作(dockerfile run)
我有一个Dockerfile,其中我试图运行一个启动Java进程的守护进程。
如果我将脚本嵌入到Dockerfile中,就像这样。
RUN myscript.sh
在生成的容器上运行/ bin / bash时, 没有 看到jps中的条目。
但是,在这种情况下,我可以轻松将脚本嵌入为 CMD
docker run asdfg
我看到该过程正常启动。
所以,我的问题是,当我们在 Dockerfile中 启动后台异步进程时,是否总是会从容器中排除其副作用?
答案1
小编典典后台进程需要在容器启动时启动,而不是在映像生成时启动。因此,您的脚本需要通过CMD
或运行ENTRYPOINT
。
CMD
或者ENTRYPOINT
仍然可以是包含多个命令的脚本。但是我想在您的情况下,如果您需要多个后台进程,那么使用示例supervisord
将是您的最佳选择。
另外,请查看一些已经存在的内容,Dockerfiles
以了解它们如何组合在一起。
docker rmi 导致后面的命令不执行问题 Dockerfile 设置时区问题
docker rmi 导致后面的命令不执行问题
把 ca=`docker rmi sendemail-service`
echo $ca
改成
docker rmi sendemail-service -f &
echo ''docker rmi success''
注意:原理的 echo 方式单纯在后面加上 -f & 也是不行的,必须直接执行命令才行
Dockerfile设置时区 ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
Dockerfile
FROM java:8
VOLUME /tmp
ADD config/ /config/
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD sendsms-0.0.1-SNAPSHOT.jar sendsms.jar
RUN bash -c ''touch /sendsms.jar''
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /sendsms.jar
run.sh
#!/bin/bash
aa=`docker stop sendsms`
echo $aa
bb=`docker rm sendsms`
echo $bb
docker rmi sendsms-service -f &
echo ''docker rmi success''
b=`docker build -t atomintl/sendsms-service .`
echo $b
docker run -d --name sendsms --restart=always sendsms-service;docker logs -f sendsms
docker run -v vs Dockerfile的VOLUME
安装卷与docker run -v命令和Dockerfile的VOLUME指令之间是否有任何关系?
这两个指令都在容器中创建了一个挂载点,但只有-v才能在那里挂载任何东西.
看到:
http://docs.docker.com/engine/reference/builder/#volume和
http://docs.docker.com/engine/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume
有关两者的更深入描述.
docker run jboss Dockerfile
build (){
docker build -t "tin/jboss" .
}
download () {
JAVA_VERSION_MAJOR=8
JAVA_VERSION_MINOR=101
JAVA_VERSION_BUILD=13
JAVA_PACKAGE="jdk"
curl -jksSLH "Cookie: oraclelicense=accept-securebackup-cookie"\
http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-b${JAVA_VERSION_BUILD}/${JAVA_PACKAGE}-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz
}
# 运行docker
run() {
docker run -p 0.0.0.0:8080:8080 -t tin/jboss /bin/bash /jboss/jboss-eap-6.4/bin/standalone.sh -b 0.0.0.0
}
save() {
docker save tin/jboss > tin_jboss.tar
}
import () {
cat tin_jboss.tar | docker import - tin:jboss
}
docker run中-v指令与Dockerfile中volume命令的区别
volume
Dockerfile中 VOLUME 方式挂载到宿主机上的是匿名卷,在宿主机上是自动匿名挂载到 /var/lib/docker/volumes/ 目录下的,代码如下:
FROM frolvlad/alpine-java:jre8-slim
MAINTAINER oas.cloud
COPY nickdir .
VOLUME /usr/local/oas/file/
WORKDIR /usr/local/oas/
上述 VOLUME /usr/local/oas/file/ 定义的是容器内目录所在路径,在容器创建过程中会在容器中创建该目录,而宿主机上的挂载目录名是随机生成的,
例如:
/var/lib/docker/volumes/593fda6d7b8296bfca22894b326727c734133eebb11c9bc2c25a73b892157a37
上面的目录位于宿主机,对应容器中的 /usr/local/oas/file/ 目录。
docker run -v
docker -v 可以指定挂载到宿主机的具体目录,相对于Dockerfile的 VOLUME 挂载方式更具有可控性,代码如下:
$ docker run —name tengine-web -d -p 9527:80 -p 9000:9000 \
-v /usr/local/tengine/logs:/var/log/nginx \
-v /usr/local/tengine/conf.d:/etc/nginx/conf.d \
-v /usr/local/tengine/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/tengine/html:/usr/share/nginx/html \
-v /usr/local/oas/file:/usr/local/oas/file nginx
上述命令就可以将宿主机的 /usr/local/tengine/logs 等目录挂载到容器的 /var/log/nginx 等对应目录,冒号前为宿主机目录(绝对路径),冒号后为镜像内挂载的路径(绝对路径)。
本文内容均引用自:Dockerfile 中 VOLUME 与 docker -v 的区别说明
今天的关于Dockerfile:RUN导致无操作和dockerfile run的分享已经结束,谢谢您的关注,如果想了解更多关于docker rmi 导致后面的命令不执行问题 Dockerfile 设置时区问题、docker run -v vs Dockerfile的VOLUME、docker run jboss Dockerfile、docker run中-v指令与Dockerfile中volume命令的区别的相关知识,请在本站进行查询。
本文标签: