docker-compose的一些理解

开始不是很理解docker

docker-compose up

这个命令在干吗,觉得每次运行这条命令的额时候,都会生成新的container,若是启动屡次,岂不是有不少镜像的全新实例跑在宿主机中?
其实不是这样的
docker-compose官方文档中有这么一段话code

Preserve volume data when containers are created

Compose preserves all volumes used by your services. When
docker-compose up runs, if it finds any containers from previous runs,
it copies the volumes from the old container to the new container.
This process ensures that any data you’ve created in volumes isn’t lostip

这段文字的大概意思是,compose会保留全部服务的volume data,这个volume data,我理解的是对容器作的全部修改。当再次运行docker-compose run这条命令的时候,compose会找到以前运行过的全部容器,而后把它们的volumes,也就是修改后的容器状态,从老的容器中,拷贝到新的容器中,在这个过程当中新老容器的CONTAINER ID不会变化。文档

也就是说,compose对每一个镜像维护的容器,永远只有一个
除非用docker rm删除这些容器,不然对容器所作的修改都会被保留。
其实,当用get

docker-compose stop

暂停服务的时候,能够用it

docker ps -a

查看全部容器的CONTAINER ID, -a 就是 --all
而后,用io

docker-compose run

从新启动服务,用docker-compose

docker ps

查看运行的容器的CONTAINER ID,(docker ps默认列出运行的容器),你会发现它们的id并无发生改变。容器

sed

docker run [image name]

命令不同,每次对镜像运行这条命令的时候,实际上都从新生成了一个容器,即新生成了一个镜像的实例,它们对应的CONTAINER ID也是不同的。

相关文章
相关标签/搜索