最近在学docker,一开始自以为自己能分清镜像和容器的区别,以为镜像就是 配置好的且安装好各种依赖的操作系统,就是个环境。而容器是运行在那个配置好的操作系统之上的某个进程。但后来我发现,镜像不只只是操作系统,还可以是某个应用,比如nginx,redis等等。那从nginx或redis镜像run起来的容器是什么?从操作系统建立起来的容器我能理解,但是从一个应用建立起来的容器,有点理解不了。那么问题来了:1,是不是说,我写了一个程序,打包编译成一个可执行文件,这个可执行文件是个镜像,那从这个可执行文件run起来的容器是啥?这个可执行文件的进程?2,如果镜像是nginx或者redis或者我自己写的一个可执行文件,那么这个镜像是不是同时也得包含操作系统等等底层的东西?3,现在已经容器化的公司,是不是把代码编译成一个(可执行文件)镜像,然后直接从这个镜像来建立容器?而不是用操作系统镜像
1 回答
UYOU
TA贡献1878条经验 获得超4个赞
我的理解是分为两种情况,我举例来说明:
1、以php为例,php项目启动依赖php环境,nginx环境,如果是光光打包成一个镜像显然是不合理的,我的做法是:起一个php的容器,暴露其端口,供nginx容器使用,nginx容器映射其端口到宿主机,并且宿主机将其工作目录挂载到容器之中,这样宿主机就可以访问启动的项目内容;
1、以node项目为例,node项目仅仅依赖于node环境,我的做法是:将工作目录挂载到镜像中打包起来,拉起来这个镜像即可,但是这样需要每次在修改文件之后重新build
镜像.
以上
- 1 回答
- 0 关注
- 736 浏览
添加回答
举报
0/150
提交
取消