Docker的思想來自於集裝箱,集裝箱解決了什麼問題?在一艘大船上,能夠把貨物規整的擺放起來。而且各類各樣的貨物被集裝箱標準化了,集裝箱和集裝箱之間不會互相影響。那麼我就不須要專門運送水果的船和專門運送化學品的船了。只要這些貨物在集裝箱裏封裝的好好的,那我就能夠用一艘大船把他們都運走。 docker就是相似的理念。如今都流行雲計算了,雲計算就比如大貨輪。docker就是集裝箱。 1.不一樣的應用程序可能會有不一樣的應用環境,好比.net開發的網站和php開發的網站依賴的軟件就不同,若是把他們依賴的軟件都安裝在一個服務器上就要調試好久,並且很麻煩,還會形成一些衝突。好比IIS和Apache訪問端口衝突。這個時候你就要隔離.net開發的網站和php開發的網站。常規來說,咱們能夠在服務器上建立不一樣的虛擬機在不一樣的虛擬機上放置不一樣的應用,可是虛擬機開銷比較高。docker能夠實現虛擬機隔離應用環境的功能,而且開銷比虛擬機小,小就意味着省錢了。 2.你開發軟件的時候用的是Ubuntu,可是運維管理的都是centos,運維在把你的軟件從開發環境轉移到生產環境的時候就會遇到一些Ubuntu轉centos的問題,好比:有個特殊版本的數據庫,只有Ubuntu支持,centos不支持,在轉移的過程中運維就得想辦法解決這樣的問題。這時候要是有docker你就能夠把開發環境直接封裝轉移給運維,運維直接部署你給他的docker就能夠了。並且部署速度快。 3.在服務器負載方面,若是你單獨開一個虛擬機,那麼虛擬機會佔用空閒內存的,docker部署的話,這些內存就會利用起來。 總之docker就是集裝箱原理。php
Docker在開發與運維的世界中具備極大的吸引力,由於它能保持跨環境的一致性。在開發與發佈的生命週期中,不一樣的環境具備細微的不一樣,這些差別多是因爲不一樣安裝包的版本和依賴關係引發的。然而,Docker能夠經過確保從開發到產品發佈整個過程環境的一致性來解決這個問題。 Docker容器經過相關配置,保持容器內部全部的配置和依賴關係始終不變。最終,你能夠在開發到產品發佈的整個過程當中使用相同的容器來確保沒有任何差別或者人工干預。 使用Docker,你還能夠確保開發者不須要配置徹底相同的產品環境,他們能夠在他們本身的系統上經過VirtualBox創建虛擬機來運行Docker容器。Docker的魅力在於它一樣可讓你在亞馬遜EC2實例上運行相同的容器。若是你須要在一個產品發佈週期中完成一次升級,你能夠很容易地將須要變動的東西放到Docker容器中,測試它們,而且使你已經存在的容器執行相同的變動。這種靈活性就是使用Docker的一個主要好處。和標準部署與集成過程同樣,Docker可讓你構建、測試和發佈鏡像,這個鏡像能夠跨多個服務器進行部署。哪怕安裝一個新的安全補丁,整個過程也是同樣的。你能夠安裝補丁,而後測試它,而且將這個補丁發佈到產品中。html
Docker容器能夠在不一樣的開發與產品發佈生命週期中確保一致性,進而標準化你的環境。除此以外,Docker容器還能夠像git倉庫同樣,可讓你提交變動到Docker鏡像中並經過不一樣的版原本管理它們。設想若是你由於完成了一個組件的升級而致使你整個環境都損壞了,Docker可讓你輕鬆地回滾到這個鏡像的前一個版本。這整個過程能夠在幾分鐘內完成,若是和虛擬機的備份或者鏡像建立流程對比,那Docker算至關快的,它可讓你快速地進行復制和實現冗餘。此外,啓動Docker就和運行一個進程同樣快。java
Docker能夠確保你的應用程序與資源是分隔開的。幾個月前,Gartner發表了一篇報告,這份報告說明了運行Docker 容器進行資源隔離的效果和虛擬機(VM)管理程序同樣的好,可是管理與控制方面還須要進行完善。咱們考慮這樣一個場景,你在你的虛擬機中運行了不少應用程序,這些應用程序包括團隊協做軟件(例如Confluence)、問題追蹤軟件(例如JIRA)、集中身份管理系統(例如Crowd)等等。因爲這些軟件運行在不一樣的端口上,因此你必須使用Apache或者Nginx來作反向代理。到目前爲止,一切都很正常,可是隨着你的環境向前推動,你須要在你現有的環境中配置一個內容管理系統(例如Alfresco)。這時候有個問題發生了,這個軟件須要一個不一樣版本的Apache Tomcat,爲了知足這個需求,你只能將你現有的軟件遷移到另外一個版本的Tomcat上,或者找到適合你現有Tomcat的內容管理系統(Alfresco)版本。對於上述場景,使用Docker就不用作這些事情了。Docker可以確保每一個容器都擁有本身的資源,而且和其餘容器是隔離的。你能夠用不一樣的容器來運行使用不一樣堆棧的應用程序。除此以外,若是你想在服務器上直接刪除一些應用程序是比較困難的,由於這樣可能引起依賴關係衝突。而Docker能夠幫你確保應用程序被徹底清除,由於不一樣的應用程序運行在不一樣的容器上,若是你不在須要一款應用程序,那你能夠簡單地經過刪除容器來刪除這個應用程序,而且在你的宿主機操做系統上不會留下任何的臨時文件或者配置文件。除了上述好處,Docker還能確保每一個應用程序只使用分配給它的資源(包括CPU、內存和磁盤空間)。一個特殊的軟件將不會使用你所有的可用資源,要否則這將致使性能下降,甚至讓其餘應用程序徹底中止工做。node
如上所述,Gartner也認可Docker正在快速地發展。從安全角度來看,Docker確保運行在容器中的應用程序和其餘容器中的應用程序是徹底分隔與隔離的,在通訊流量和管理上賦予你徹底的控制權。Docker容器不能窺視運行在其餘容器中的進程。從體系結構角度來看,每一個容器只使用着本身的資源(從進程到網絡堆棧)。做爲緊固安全的一種手段,Docker將宿主機操做系統上的敏感掛載點(例如/proc和/sys)做爲只讀掛載點,而且使用一種寫時複製系統來確保容器不能讀取其餘容器的數據。Docker也限制了宿主機操做系統上的一些系統調用,而且和SELinux與AppArmor一塊兒運行的很好。此外,在Docker Hub上可使用的Docker鏡像都經過數字簽名來確保其可靠性。因爲Docker容器是隔離的,而且資源是受限制的,因此即便你其中一個應用程序被黑,也不會影響運行在其它Docker容器上的應用程序。linux
Docker最大的好處之一就是可移植性。在過去的幾年裏,全部主流的雲計算提供商,包括亞馬遜AWS和谷歌的GCP,都將Docker融入到他們的平臺並增長了各自的支持。Docker容器能運行在亞馬遜的EC2實例、谷歌的GCP實例、Rackspace服務器或者VirtualBox這些提供主機操做系統的平臺上。舉例來講,若是運行在亞馬遜EC2實例上的Docker容器可以很容易地移植到其餘幾個平臺上,好比說VirtualBox,而且達到相似的一致性和功能性,那這將容許你從基礎設施層中抽象出來。除了AWS和GCP,Docker在其餘不一樣的IaaS提供商也運行的很是好,例如微軟的Azure、OpenStack和能夠被具備不一樣配置的管理者所使用的Chef、Puppet、Ansible等。git
Docker Enterprise Edition (Docker EE) is designed for enterprise development and IT teams who build, ship, and run business critical applications in production at scale. Docker EE is integrated, certified, and supported to provide enterprises with the most secure container platform in the industry to modernize all applications. For more information about Docker EE, including purchasing options, see Docker Enterprise Edition. Docker Community Edition (Docker CE) is ideal for developers and small teams looking to get started with Docker and experimenting with container-based apps. Docker CE is available on many platforms, from desktop to cloud to server. Docker CE is available for macOS and Windows and provides a native experience to help you focus on learning Docker. You can build and share containers and automate the development pipeline all from a single environment. Docker CE has both stable and edge channels. Stable builds are released once per quarter and are supported for 4 months. Edge builds are released once per month, and are supported for that month only. If you subscribe to the Edge channel on Linux distributions, you should also subscribe to the Stable channel.github
官網總的安裝手冊:https://docs.docker.com/install/web
官網 CentOS 安裝手冊:https://docs.docker.com/install/linux/docker-ce/centos/正則表達式
目前也支持 Windows,特別是 Windows 10,直接官網一個安裝包便可搞定。redis
Windows 10 的 Docker 安裝說明:https://store.docker.com/editions/community/docker-ce-desktop-windows
我這裏選擇 Docker CE 版本:
CentOS 安裝過程:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install -y docker-ce
,大小:19M,速度很慢。查看配置文件位置:systemctl show --property=FragmentPath docker
啓動 Docker:systemctl start docker.service
中止 Docker:systemctl stop docker.service
查看狀態:systemctl status docker.service
運行 hello world 鏡像:sudo docker run hello-world
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 78445dd45222: Pull complete Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://cloud.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide/
https://ldhc17y9.mirror.aliyuncs.com
,因此下面文章你看到該地址都表示是這個專屬地址,請記得本身更換本身的。vim /etc/docker/daemon.json
,增長以下內容:{
"registry-mirrors": ["https://ldhc17y9.mirror.aliyuncs.com"] }
sudo systemctl daemon-reload
sudo systemctl restart docker
namespace管理
中建立屬於你本身的 namespace:https://cr.console.aliyun.com/#/namespace/index管理
進入查看倉庫的更多詳細信息,這裏面有不少有用的信息,包括一個詳細的操做指南,這份指南等下會用到。registry.cn-shenzhen.aliyuncs.com/youmeek/redis-to-cluster
docker login registry.cn-shenzhen.aliyuncs.com 會讓我輸入 Username:阿里雲郵箱 password:上文提到的--Registry登陸密碼
docker pull registry.cn-shenzhen.aliyuncs.com/youmeek/redis-to-cluster:[鏡像版本號]
docker login docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/youmeek/redis-to-cluster:[鏡像版本號] docker push registry.cn-shenzhen.aliyuncs.com/youmeek/redis-to-cluster:[鏡像版本號]
http://192.168.137.128
systemctl stop firewalld.service ; systemctl stop iptables.service
systemctl restart docker.service
/opt/setups
http://127.0.0.1:8080/youmeek
docker pull centos:6.8
,個人 IMAGE_ID 爲:0cd976dc0a98
docker run -i -t -v /opt/setups:/opt 0cd976dc0a98 /bin/bash
-v:表示須要將本地宿主機的目錄掛載到容器中對應的一個目錄上,格式:-v <宿主機目錄>:<容器目錄>,因此此時對容器此目錄的操做,也是等同於對宿主機的目錄的操做
cp /opt/spring-boot-my-demo.jar /root
vi /root/spring-boot-run.sh
,腳本內容以下:#!/bin/bash source /etc/profile java -jar /root/spring-boot-my-demo.jar
chmod u+x /root/spring-boot-run.sh
docker ps -a
a5d544d9b6f9
,這個下面要用到docker commit a5d544d9b6f9 youmeek/springboot:0.1
docker images
,會發現多了一個 youmeek/springboot 新鏡像,鏡像 ID 爲:7024f230fef9
docker run -d -p 38080:8080 --name=springBootJar --hostname=springBootJar 7024f230fef9 /root/spring-boot-run.sh
-d
:表示以「守護模式」執行 spring-boot-run.sh 腳本,此時 jar 中的 log 日誌不會出如今輸出終端上。-p
:表示宿主機與容器的端口映射,此時將容器內部的 8080 端口映射爲宿主機的 38080 端口,這樣就向外界暴露了 38080 端口,可經過 Docker 網橋來訪問容器內部的 8080 端口了。--name
:表示給新實例容器取的名稱,用一個有意義的名稱命名便可docker ps -a
,能夠知道咱們的新容器 ID:fd21ac056343
,名稱爲:springBootJar
docker logs -f fd21ac056343
,能夠看到 jar 啓動後的 log 輸出內容http://192.168.137.128:38080/youmeek/
,能夠看到 jar 應用的首頁能夠訪問docker version
,查看docker版本docker info
,顯示docker系統的信息docker pull
:從倉庫下載鏡像到本地
docker pull centos:latest
:獲取 CentOS 默認版本鏡像docker pull centos:7.3.1611
:獲取 CentOS 7 鏡像,下載大小 70M 左右,下面的操做基於此鏡像docker pull centos:6.8
:獲取 CentOS 6 鏡像docker pull registry.cn-hangzhou.aliyuncs.com/chainone/centos7-jdk8
:獲取別人作好的阿里雲鏡像docker push
:將一個鏡像 push 到 registry 倉庫中
docker push myapache:v1
docker search
:從 registry 倉庫搜索鏡像
docker search -s 3 centos
,參數 -s 數字
:表示篩選出收藏數(stars值)大於等於 3 的鏡像docker login
:登陸到一個鏡像倉庫。默認登陸的是官網的倉庫:https://hub.docker.com
sudo docker login --username=阿里雲郵箱
docker login --username=23333212@qq.com registry.cn-shenzhen.aliyuncs.com
,你完整的登陸地址你須要訪問:https://cr.console.aliyun.com/#/imageList,在你本身建立的倉庫中去查看那份詳細操做指南上的地址docker stats
:查看當前啓動的容器各自佔用的系統資源
bin docker stats --no-stream kafkadocker_kafka_1 kafkadocker_zookeeper_1
:查看指定容器的佔用資源狀況CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 4532a9ee27b8 cloud-cadvisor 1.49% 53.28MiB / 3.702GiB 1.41% 13.5MB / 646MB 265MB / 0B 19 3895d5d50a5e kafkadocker_kafka_1 1.45% 1.24GiB / 3.702GiB 33.51% 145MB / 186MB 499MB / 724MB 128 1d1a6a7c48d8 kafkadocker_zookeeper_1 0.11% 70.85MiB / 3.702GiB 1.87% 55.8MB / 33.7MB 209MB / 1.22MB 23
docker images
:顯示本地全部的鏡像列表
docker images centos
:查看具體鏡像狀況docker rmi
:刪除鏡像,通常刪除鏡像前要先刪除容器,否則若是鏡像有被容器調用會報錯
docker rmi 容器ID
:刪除具體某一個鏡像docker rmi 倉庫:Tag
:刪除具體某一個鏡像docker rmi $(docker images -q)
,刪除全部鏡像docker rmi -f $(docker images -q)
,強制刪除全部鏡像docker rmi $(docker images | grep "vmware" | awk '{print $3}')
,批量刪除帶有 vmware 名稱的鏡像docker tag
:爲鏡像打上標籤
docker tag -f ubuntu:14.04 ubuntu:latest
,-f 意思是強制覆蓋docker rmi 倉庫:Tag
,取消標籤(若是是鏡像的最後一個標籤,則會刪除這個鏡像)docker build
:使用 Dockerfile 建立鏡像(推薦)
docker build . --rm -t runoob/ubuntu:v1
,參數 -t
,表示:-tag,打標籤docker build --no-cache . --rm -t runoob/ubuntu:v1
docker history
:顯示生成一個鏡像的歷史命令,能夠看出這個鏡像的構建過程,包括:每一層鏡像的 ID、指令docker save
:將一個鏡像保存爲一個 tar 包,帶 layers 和 tag 信息(導出一個鏡像)
docker save 鏡像ID -o /opt/test.tar
docker load
:從一個 tar 包建立一個鏡像(導入一個鏡像)
docker load -i /opt/test.tar
docker run
,運行鏡像
docker run -v /java_logs/:/opt/ -d -p 8080:80 --name=myDockerNameIsGitNavi --hostname=myDockerNameIsGitNavi -i -t 鏡像ID /bin/bash
-i -t
分別表示保證容器中的 STDIN 開啓,並分配一個僞 tty 終端進行交互,這兩個是合着用。--name
是給容器起了一個名字(若是沒有主動給名字,docker 會自動給你生成一個)容器的名稱規則:大小寫字母、數字、下劃線、圓點、中橫線,用正則表達式來表達就是:[a-zA-Z0-9_*-]-d
容器運行在後臺。-p 8080:80
表示端口映射,將宿主機的8080端口轉發到容器內的80端口。(若是是 -P 參數,則表示隨機映射應該端口,通常用在測試的時候)-v /java_logs/:/opt/
表示目錄掛載,/java_logs/ 是宿主機的目錄,/opt/ 是容器目錄docker run --rm --name=myDockerNameIsGitNavi --hostname=myDockerNameIsGitNavi -i -t centos /bin/bash
,--rm,表示退出即刪除容器,通常用在作實驗測試的時候docker run --restart=always -i -t centos /bin/bash
,--restart=always 表示中止後會自動重啓docker run --restart=on-failure:5 -i -t centos /bin/bash
,--restart=on-failure:5 表示中止後會自動重啓,最多重啓 5 次docker exec
:對守護式的容器裏面執行命令,方便對正在運行的容器進行維護、監控、管理
docker exec -i -t 容器ID /bin/bash
,進入正在運行的 docker 容器,並啓動終端交互docker exec -d 容器ID touch /opt/test.txt
,已守護式的方式進入 docker 容器,並建立一個文件docker stop 容器ID
,中止容器
docker stop $(docker ps -a -q)
,中止全部容器docker stop $(docker ps -a -q) ; docker rm $(docker ps -a -q)
,中止全部容器,並刪除全部容器docker kill $(docker ps -q) ; docker rm $(docker ps -a -q)
,中止全部容器,並刪除全部容器docker start 容器ID
,從新啓動已經中止的容器(從新啓動,docker run 參數仍是保留以前的)docker restart 容器ID
,重啓容器docker rm
,刪除容器
docker rm 容器ID
,刪除指定容器(該容器必須是中止的)docker rm -f 容器ID
,刪除指定容器(該容器若是正在運行能夠這樣刪除)docker rm $(docker ps -a -q)
,刪除全部容器docker rm -f $(docker ps -a -q)
,強制刪除全部容器docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm
刪除老的(一週前建立)容器docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a)
中止全部容器,刪除全部容器,刪除全部鏡像docker commit
,把容器打成鏡像
docker commit 容器ID gitnavi/docker-nodejs-test:0.1
docker commit -m="這是一個描述信息" --author="GitNavi" 容器ID gitnavi/docker-nodejs-test:0.1
docker diff 容器ID
:顯示容器文件系統的先後變化--link
同一個宿主機下的不一樣容器的鏈接:
docker run -it 鏡像ID --link redis-name:myredis /bin/bash
redis-name
是容器名稱myredis
是容器別名,其餘容器鏈接它能夠用這個別名來寫入到本身的配置文件中docker cp /www/runoob 96f7f14e99ab:/www/
將主機 /www/runoob 目錄拷貝到容器 96f7f14e99ab 的 /www 目錄下docker cp /www/runoob 96f7f14e99ab:/www
將主機 /www/runoob 目錄拷貝到容器 96f7f14e99ab 中,目錄重命名爲 www。docker cp 96f7f14e99ab:/www /tmp/
將容器96f7f14e99ab的/www目錄拷貝到主機的/tmp目錄中。docker network ls
docker network create --subnet=172.19.0.0/16 net-redis-to-cluster
docker network connect net-redis-to-cluster my-redis-container
--network XXXXXX
常見幾種模式
docker run -it 鏡像ID --network=bridge /bin/bash
docker run -it 鏡像ID --network=none /bin/bash
docker run -it 鏡像ID --network=host /bin/bash
docker run -it 鏡像ID --network=自定義名稱 /bin/bash
docker ps
:列出當前全部 正在運行 的容器
docker ps -a
:列出全部的容器(包含歷史,即運行過的容器)docker ps -l
:列出最近一次啓動的containerdocker ps -q
:列出最近一次運行的container IDdocker ps -a -l
:列出最後一次運行的容器docker ps -n x
:顯示最後 x 個容器,無論是正在運行或是已經中止的docker top 容器ID
:顯示容器的進程信息docker events
:獲得 docker 服務器的實時的事件docker logs -f 容器ID
:查看容器日誌(若是一些容器不斷重啓,或是自動中止,能夠這樣看下)
docker logs 容器ID
,獲取守護式容器的日誌docker logs -f 容器ID
,不斷監控容器日誌,相似 tail -fdocker logs -ft 容器ID
,在 -f 的基礎上又增長 -t 表示爲每條日誌加上時間戳,方便調試docker logs --tail 10 容器ID
,獲取日誌最後 10 行docker logs --tail 0 -f 容器ID
,跟蹤某個容器的最新日誌而沒必要讀取日誌文件docker logs -f -t --since="2018-05-26" --tail=200 容器ID
根據某個時間讀取日誌docker logs -f -t --since="2018-05-26T11:13:40" --tail=200 容器ID
根據某個時間讀取日誌docker logs -f -t --since="2018-05-25T11:13:40" --until "2018-05-26T11:13:40" --tail=200 容器ID
根據某個時間讀取日誌docker logs --since 10m 容器ID
查看最近 10 分鐘的日誌
-f
: 表示查看實時日誌-t
: 顯示時間戳-since
: 顯示某個開始時間的全部日誌-tail=200
: 查看最後的 200 條日誌docker wait
,阻塞到一個容器,直到容器中止運行docker export
,將容器整個文件系統導出爲一個tar包,不帶layers、tag等信息docker port
,顯示容器的端口映射docker inspect 容器ID
:查看容器的全面信息,用 JSON 格式輸出docker inspect network名稱
:查看 network 信息,用 JSON 格式輸出,包含使用該網絡的容器有哪些docker system df
:相似於 Linux 上的 df 命令,用於查看 Docker 的磁盤使用狀況
TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 6 6 1.049GB 0B (0%) Containers 7 4 10.25kB 0B (0%) Local Volumes 13 5 38.49GB 1.365MB (0%) Build Cache 0B 0B
獲取容器中的 IP:docker inspect -f {{.NetworkSettings.IPAddress}} 容器ID 獲取容器中的 IP:docker inspect -f {{.Volumes}} 容器ID 查看容器的掛載狀況:docker inspect 容器ID | grep Mounts -A 10
[
{
"Id": "e1dff77b99d9c8489e0a0ce68a19ec5ffe18cc5d8b8ec17086f7f7bea29aa09b", "Created": "2018-01-18T03:47:16.138180181Z", "Path": "docker-entrypoint.sh", "Args": [ "--auth" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 19952, "ExitCode": 0, "Error": "", "StartedAt": "2018-01-18T03:47:16.348568927Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:42aa46cfbd7a0d1101311defac39872b447b32295b40f9c99104ede5d02e9677", "ResolvConfPath": "/var/lib/docker/containers/e1dff77b99d9c8489e0a0ce68a19ec5ffe18cc5d8b8ec17086f7f7bea29aa09b/resolv.conf", "HostnamePath": "/var/lib/docker/containers/e1dff77b99d9c8489e0a0ce68a19ec5ffe18cc5d8b8ec17086f7f7bea29aa09b/hostname", "HostsPath": "/var/lib/docker/containers/e1dff77b99d9c8489e0a0ce68a19ec5ffe18cc5d8b8ec17086f7f7bea29aa09b/hosts", "LogPath": "/var/lib/docker/containers/e1dff77b99d9c8489e0a0ce68a19ec5ffe18cc5d8b8ec17086f7f7bea29aa09b/e1dff77b99d9c8489e0a0ce68a19ec5ffe18cc5d8b8ec17086f7f7bea29aa09b-json.log", "Name": "/cas-mongo", "RestartCount": 0, "Driver": "overlay", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": [ "/data/mongo/db:/data/db" ], "ContainerIDFile": "", "LogConfig": { "Type": "json-file", "Config": {} }, "NetworkMode": "default", "PortBindings": { "27017/tcp": [ { "HostIp": "", "HostPort": "27017" } ] }, "RestartPolicy": { "Name": "always", "MaximumRetryCount": 0 }, "AutoRemove": false, "VolumeDriver": "", "VolumesFrom": null, "CapAdd": null, "CapDrop": null, "Dns": [], "DnsOptions": [], "DnsSearch": [],