Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口html
docker 官網:linux
docker是什麼:github
進入官網有一句很好的解釋:以下web
docker概述:docker
重要組件關係以下:ubuntu
Docker使用C/S架構,Client 經過接口與Server進程通訊實現容器的構建,運行和發佈。client和server能夠運行在同一臺集羣,也能夠經過跨主機實現遠程通訊。windows
鏡像:centos
Docker 鏡像(Image)就是一個只讀的模板。例如:一個鏡像能夠包含一個完整的操做系統環境,裏面僅安裝了 Apache 或用戶須要的其它應用程序。鏡像能夠用來建立 Docker 容器,一個鏡像能夠建立不少容器。bash
Docker 提供了一個很簡單的機制來建立鏡像或者更新現有的鏡像,用戶甚至能夠直接從其餘人那裏下載一個已經作好的鏡像來直接使用。
容器:
簡單說就是你運行的鏡像後的產物
倉庫:
存儲鏡像的地方
docker 是在linux內核開發的,在ubuntu上研發的,因此在ubuntu平臺最穩定,支持也最好。因爲我的緣由,我只介紹linux和window兩種狀況:
可是有幾個前提條件:(注意點)
1, Docker支持如下的CentOS版本:
假設咱們已經安裝好了centos7 進入root下:
安裝docker以前,
先覈查內核版本:uname -r
在3.10之上,說明咱們能夠安裝docker:
安裝docker很簡單,只須要yum安裝便可,(保證你能夠聯網由於yum是在線安裝)
#安裝docker
yum -y install docker
#啓動docker服務:
service docker start
就一個命令就ok了,簡單吧,驗證docker安裝是否成功
docker -v | version
centos版本的docker就安裝成功了,至於用法後期再介紹================================
下載DockerToolbox,並安裝
下載成功以下:
雙擊運行:一直傻瓜式安裝,在後幾步中,會提示安裝VritualBox的一些串口程序什麼的,全都安裝便可。最後安裝完後,桌面多出三個圖標。
而後運行docker就好了,第一次可能要初始化加載,會有點慢,第二次再啓動就很快了
運行如圖:
docker經常使用命令:
docker run # 運行一個容器 docker run -it -p 8088:8088 -p 8089:8089 -p 8090:9090 -v /root/soft/docker:/root/soft/docker -v /root/soft/dockertt:/root/soft/dockertt loen/rc /bin/bash 命令的格式: Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -a, --attach=[] 登陸容器(以docker run -d啓動的容器) -c, --cpu-shares=0 設置容器CPU權重,在CPU共享場景使用 --cap-add=[] 添加權限,權限清單詳見:http://linux.die.net/man/7/capabilities --cap-drop=[] 刪除權限,權限清單詳見:http://linux.die.net/man/7/capabilities --cidfile="" 運行容器後,在指定文件中寫入容器PID值,一種典型的監控系統用法 --cpuset="" 設置容器可使用哪些CPU,此參數能夠用來容器獨佔CPU -d, --detach=false 指定容器運行於前臺仍是後臺 --device=[] 添加主機設備給容器,至關於設備直通 --dns=[] 指定容器的dns服務器 --dns-search=[] 指定容器的dns搜索域名,寫入到容器的/etc/resolv.conf文件 -e, --env=[] 指定環境變量,容器中可使用該環境變量 --entrypoint="" 覆蓋image的入口點 --env-file=[] 指定環境變量文件,文件格式爲每行一個環境變量 --expose=[] 指定容器暴露的端口,即修改鏡像的暴露端口 -h, --hostname="" 指定容器的主機名 -i, --interactive=false 打開STDIN,用於控制檯交互 --link=[] 指定容器間的關聯,使用其餘容器的IP、env等信息 --lxc-conf=[] 指定容器的配置文件,只有在指定--exec-driver=lxc時使用 -m, --memory="" 指定容器的內存上限 --name="" 指定容器名字,後續能夠經過名字進行容器管理,links特性須要使用名字 --net="bridge" 容器網絡設置,待詳述 -P, --publish-all=false 指定容器暴露的端口,待詳述 -p, --publish=[] 指定容器暴露的端口,待詳述 --privileged=false 指定容器是否爲特權容器,特權容器擁有全部的capabilities --restart="" 指定容器中止後的重啓策略,待詳述 --rm=false 指定容器中止後自動刪除容器(不支持以docker run -d啓動的容器) --sig-proxy=true 設置由代理接受並處理信號,可是SIGCHLD、SIGSTOP和SIGKILL不能被代理 -t, --tty=false 分配tty設備,該能夠支持終端登陸 -u, --user="" 指定容器的用戶 -v, --volume=[] 給容器掛載存儲卷,掛載到容器的某個目錄 --volumes-from=[] 給容器掛載其餘容器上的卷,掛載到容器的某個目錄 -w, --workdir="" 指定容器的工做目錄 端口暴露 -P參數:docker自動映射暴露端口; docker run -d -P training/webapp <span style="color:#009900;">//docker自動在host上打開49000到49900的端口,映射到容器(由鏡像指定,或者--expose參數指定)的暴露端口;</span> -p參數:指定端口或IP進行映射; docker run -d -p 5000:80 training/webapp <span style="color:#009900;">//host上5000號端口,映射到容器暴露的80端口;</span> docker run -d -p 127.0.0.1:5000:80 training/webapp <span style="color:#009900;">//host上127.0.0.1:5000號端口,映射到容器暴露的80端口;</span> docker run -d -p 127.0.0.1::5000 training/webapp <span style="color:#009900;">//host上127.0.0.1:隨機端口,映射到容器暴露的80端口;</span> docker run -d -p 127.0.0.1:5000:5000/udp training/webapp <span style="color:#009900;">//綁定udp端口;</span> 網絡配置 --net=bridge: <span style="color:#009900;">//使用docker daemon指定的網橋</span> --net=host: <span style="color:#009900;">//容器使用主機的網絡</span> --net=container:NAME_or_ID:<span style="color:#009900;">//使用其餘容器的網路,共享IP和PORT等網絡資源</span> --net=none: <span style="color:#009900;">//容器使用本身的網絡(相似--net=bridge),可是不進行配置</span> docker stop # 關閉運行中的容器 docker stop 容器ID docker start # 啓動一個已經中止的容器 docker start 容器ID # 重啓一個容器 docker restart 容器ID docker attach # 進入一個運行中的容器 docker attach 容器ID docker ps # 顯示所有容器 docker ps -a # 顯示當前運行的容器 docker ps docker images # 查看本地鏡像 docker images docker rmi # 刪除全部鏡像 docker rmi $(docker images | grep -v RESPOSITORY | awk '{print $3}') docker build # 構建容器 docker build -t 鏡像名稱 . # 後面的. 指的是當前文件夾 (實際上是Dockerfile存放的文件夾) # 創建映像文件。–rm 選項是告訴Docker,在構建完成後刪除臨時的Container,Dockerfile的每一行指令都會建立一個臨時的Container,通常這些臨時生成的Container是不須要的 docker build --rm=true -t loen/lamp . docker rm # 刪除容器 docker rm 容器ID # 刪除全部容器 docker rm $(docker ps -a) docker history # 查看歷史 docker history 鏡像ID docker export # 導出容器 docker export 容器ID > xxx.tar docker save # 把 mynewimage 鏡像保存成 tar 文件 docker save myimage | bzip2 -9 -c> /home/save.tar.bz2 docker load # 加載 myimage 鏡像 bzip2 -d -c < /home/save.tar.bz2 | docker load