1、docker的介紹python
1. Docker是什麼?web
Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的Linux機器上,也能夠實現虛擬化,容器是徹底使用沙箱機制,相互之間不會有任何接口。docker
詳情參考:https://baike.baidu.com/item/Docker/13344470?fr=aladdin數據庫
2. Docker與vm(虛擬機)的區別ubuntu
在比較虛擬機和容器時,請考慮此圖:安全
虛擬機運行來賓操做系統 - 請注意每一個框中的操做系統層。此項爲資源密集型,而且生成的磁盤鏡像和應用狀態與操做系統設置、系統安裝的依賴項、操做系統安全補丁以及其餘容易丟失且難以複製的臨時配置相關聯。bash
容器能夠共享單個內核,而且須要存在於容器鏡像中的惟一信息是可執行文件及其軟件包依賴項,這些都不須要在主機系統上安裝。這些進程的運行方式相似於原生進程,而且您能夠經過運行 docker ps
等命令來逐一管理它們 - 如同您在 Linux 上運行 ps
以查看活動進程同樣。最後,因爲它們包含全部依賴項,所以不存在配置關聯;容器化應用「能夠隨處運行」。網絡
詳情參考:https://docs.docker.com/get-started/#containers-and-virtual-machinesapp
3. Docker與VM比較有什麼優點webapp
2、鏡像操做
1. 下載和刪除鏡像
# 下載 docker pull <鏡像名稱>
# 刪除 docker rmi <鏡像ID>
2. 查看鏡像信息
# 查看有兩種方式:
--->查看所有鏡像信息。包括倉庫名、標籤信息、鏡像ID、建立時間、鏡像大小 docker images --->查看特定鏡像詳細信息 docker inspect <鏡像ID>
3. 搜索鏡像
# 搜索鏡像 docker search <鏡像名稱>
4. 建立鏡像
# 建立鏡像有三中方式 --->利用已有的鏡像容器建立新的鏡像 docker commit -a <做者信息> -m <備註信息> --pause=true --->基於本地已有的鏡像模塊導入來建立新的鏡像 sudo cat <tar.gz> | docker import - <name>:<tag> https://openvz.org/Download/template/precreated --->使用Dockerfile的配置來建立新的鏡像 暫無
5. 保存和載入鏡像
# 保存現有的鏡像成tar包 docker save -o **.tar <name>:<tag> # 載入本地的tar包到本地的docker系統中.可使用--input或者< docker load --input / < **.tar
6. 上傳鏡像
# 上傳鏡像.這個須要登錄在docker系統中已有註冊帳號.
# 官網地址:https://hub.docker.com docker tag <ID> <accountName>/<imageName>:<tag> docker push <accountName>/<imageName>:<tag>
3、容器和倉庫
1. 建立容器
# 建立容器。只是建立了容器,並無啓動容器 docker create -it <name>:<tag> # 啓動容器。啓動已經建立的容器 docker start <ID>
# 新建並啓動容器。功能就是建立和啓動兩條命令。
docker run -it <ID> /bin/sh
# 後臺進程方式運行。
docker run -d <ID> /bin/sh -c '命令'
# 查看已啓動容器
docker ps
# 查看logs信息
docker logs <ID>
2. 終止容器
# 終止容器 docker stop <ID>
3. 進入容器
# 進入容器 docker exec -it <ID> /bin/sh
4. 刪除容器
# 刪除容器; -f 強制刪除 docker rm -f <ID>
5. 搭建私有倉庫
# 先從docker的公有庫拉取這個私有倉庫鏡像 docker pull registry # -v 的做用是將本地系統的掛載點和容器系統中的掛在點關聯起來。 # -p的做用是本地端口與容器端口關聯。 docker run -d -v <本地文件系統的掛載點>:<容器文件系統的掛載點> -p <容器系統端口>:<本機系統端口> --restart=always --name registry registry:latest # 訪問 http://<本地ip地址>:<容器系統端口>/v2/_catalog
4、數據卷
管理數據、維護數據的做用. 數據管理容器,相似數據庫.
1. 數據卷
# 在容器內建立一個數據卷 docker run -v <host DIR>:<container DIR> <name> <command> eg: docker run -d -P --name web -v /webapp:training/webapp python app.py
# 這裏有個技巧:當有多個數據卷時,可使用多個-v參數.
2. 數據卷容器
# 數據卷容器. 跟數據卷功能相似,只不過是給數據卷啓動了一個容器。
eg: docker run -it -v /dbdata --name dbdata ubuntu
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu
dbdata:
---- db1
---- db2
3. 利用數據卷容器遷移數據
# 備份
docker run --volumes-from dbdata -v $(pwd):/backup --name worker tar cvf /backup/backup.tar /dbdata
#恢復
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
docker run --volumes-from dbdata2 -v $(pwd):/bankup busybox tar xvf /backup/backup.tar
5、網絡配置
1. 訪問容器
# -P 隨機端口
eg: docker run -d -P training/webapp python app.py
# -p 制定端口
1> 映射全部IP
eg: docker run -d -p 5000:5000 --name web training/webapp python app.py
2> 映射到指定地址和端口
eg: docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
3> 映射到指定地址的任意端口
eg: docker run -d -p 127.0.01::5000 training/webapp python app.py
4> 查看映射端口配置
eg: docker port