内容简介:搭建一个基于springcloud的分布式博客系统,已经实现了基于eureka的配置中心和注册中心,为了减少本地的内存压力,使用docker将配置中心注册中心放到服务器上docker build -t imageName path, 这里path指的是上下文路径,如ADD COPY等命令都需要一个源路径和目标路径,那么源路径和目标路径的定位是相对于那个路径呢? 源路径就是相对于path,它只能访问path下的目录,在path外的目标是不能被访问到,目标路径相对的就是这个WORKDIR,表示当前容器在运行是
项目背景
搭建一个基于springcloud的分布式博客系统,已经实现了基于eureka的配置中心和注册中心,为了减少本地的内存压力,使用 docker 将配置中心注册中心放到服务器上
初学者初探
- dockerfile中的WORKDIR的用处
docker build -t imageName path, 这里path指的是上下文路径,如ADD COPY等命令都需要一个源路径和目标路径,那么源路径和目标路径的定位是相对于那个路径呢? 源路径就是相对于path,它只能访问path下的目录,在path外的目标是不能被访问到,目标路径相对的就是这个WORKDIR,表示当前容器在运行是访问的根路径,比如RUN java -jar target.jar的时候,这个target在容器中的某个目录下,通过WORKDIR定位到这个目录,就能能通过RUN 来执行到这个target.jar,而不需要在RUN中指定额外的相对或者绝对路径定位这个jar文件
- 制作一个含有jdk环境的Dockefile
制作这么一个Dockerfile也不难,指定FROM centos, 通过add将jar解压到容器目录里面,最后通过ENTRYPOINT 指定java -jar && tail -f > /etc/null执行springboot的jar包并保证进程不退出。但jdk的环境变量配置需要注意,有三种写法,一种通过RUN SED -i "$a" /etc/profile 将jdk的环境变量写进profile,第二种通过RUN echo "JAVA_HOME" >> /etc/profile,第三种直接通过dockerfile提供的ENV JAVA_HOME 来设置jdk的环境变量。前面两种都是通过在/etc/profile中写环境变量来完成,但是指定RUN source /etc/profile是行不通的,你需要进入容器中source /etc/profile才能让/etc/profile的环境变量生效。第三种是最简单的设置方法,设置了在容器容器时直接生效。
- RUN命令中的&&命令连接
RUN command 一个RUN会产生一个中间的容器,那么一套相关的命令可以通过RUM command && command来进行连接,换行可以指定 ,如果不指定直接换行连接command会出现一些语法错误,这样有什么好处呢?更加直观?命令功能分块集中?你觉得好就对了何必教科书般的说出个之所以然来,RUM cd /usr/local && npm install这条命令如果分开写成两个RUN会如何? 导致install访问不到/usr/local的文件,它因为是重新开始一个容器,访问的路径时WORKDIR指定的根目录
- CMD的ENTRYPOINT的区别
dockerfile中的一些指令都是可以通过docker run来覆盖的,比如 -v 挂载可以覆盖VOLUME -p 可以覆盖EXPOSE指定的端口, -w可以覆盖WORKDIR,-v 可以覆盖ENV环境变量,这里的docker run imageId command 中的command可以覆盖CMD,所以容器的启动后执行的命令还是写在ENTRYPOINT比较好,避免被覆盖掉。
- docker run中的-it是什么意思,-d是什么意思, 后面跟个command为/bin/bash又是什么意思
i表示交互,t表示伪终端,-d是后台运行,/bin/bash是容器启动时执行/bin/bash命令在容器中打开一个进程进入/bin/bash。解释了但是没有实践又怎么知道是怎么个回事。那么如果不指定-d,会使容器在前台执行进程,将控制台打印这些执行信息,如果指定了-d那么容器进程在后台执行,不会打印执行信息,也不用想办法退出当前容器执行的进程。一般运行docker run以后直接在控制台打印这个容器的id信息,但是我又想进入容器怎么办?docker exec吗,我执行进去看看不想写这个命令,这时候可以通过docker run -it /bin/bash 执行完就能进入到这个容器里面查看一些信息,这应该就是所谓的交互
- dockerfile通过docker build通过docker images可以找到这个镜像,删除dockerfile上下文会生效吗
之前试了一下,也不知道是不是服务器内存不够,执行docker run 没生效,还需要待实践
- 挂载目录的理解
挂载目录可以在dockerfile中通过volume指定,这只能指定容器的挂载目录,宿主机的挂载目录自动生成,可以通过docker inspect imageId查看,也可以通过docker run -v path:path 指定,那么我在宿主机的挂载目录中更改一些信息,它会立马响应到容器对应挂载的目录里面
- dockerfile制作启动springboot项目的镜像,如何更新jar包
最初认为只要挂载好宿主机的存放jar的目录到指定的容器目录中,通过docker restart重新执行dockerfile中的ENTRYPOINT java -jar target.jar命令来执行这个容器的挂载目录更新的target.jar,这样就能完成jar的更新,发现行不通每次发布新的jar都需要通过docker build重新构建镜像,具体还需要实际操作总结
以上所述就是小编给大家介绍的《初学者关于Docker的一些问题记录》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Google API开发详解
江宽,龚小鹏等编 / 电子工业 / 2008-1 / 59.80元
《Google API开发详解:Google Maps与Google Earth双剑合璧》从易到难、由浅入深、循序渐进地介绍了Google Maps API和Google Earth API的开发技术。《Google API开发详解:Google Maps与Google Earth双剑合璧》知识讲解通俗易懂,并有大量的实例供读者更加深刻地巩固所学习的知识,帮助读者更好地进行开发实践。 《Go......一起来看看 《Google API开发详解》 这本书的介绍吧!
HTML 压缩/解压工具
在线压缩/解压 HTML 代码
HTML 编码/解码
HTML 编码/解码