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也是不同的。

相關文章
相關標籤/搜索