docker最初是dotCloud公司創始人Solomom Hykes在法國期間發起的一個公司內部項目,它是基於dotCloud公司多年雲服務技術的一次革新,並在2013年3月以Apache2.0受權協議開源,主要項目代碼在GitHub上進行維護...python
docker是linux容器的一種封裝,提供簡單易用的容器使用接口,它是最流行的linux容器解決方案.docker的接口很是簡單,用戶能夠方便的建立和銷燬容器,docker將應用程序的依賴,打包在一個文件裏面,運行這個文件就會生成虛擬容器,程序運行在虛擬容器裏,如同真實物理機上運行同樣,反正就是有了docker,就不用擔憂討厭的環境配置問題了!linux
它做爲一種新興的虛擬化方式,Docker跟傳統的虛擬化方式相比具備衆多的優點.nginx
Docker鏡像就是一個只讀的模板,鏡像能夠用來建立容器.docker提供了一個很簡單的機制來建立鏡像或更新現有鏡像,用戶甚至能夠從其餘人那裏下載已經作好的鏡像直接使用
鏡像(image)和容器(container)的關係,就像面向對象中類和實例的關係同樣,鏡像是靜態定義的class ;容器是鏡像運行時的實體object #容器隨時均可以被建立,暫停,銷燬,中止,每一個容器都是相互隔離的,保證安全的平臺,docker利用容器運行應用. #咱們也能夠把容器看做簡易的linux環境.
倉庫是存放鏡像文件的場所,分爲公開倉庫(public)和私有倉庫(Private) #最大的公開倉庫就是Docker Hub,存放了數量龐大的鏡像供用戶下載. #用戶建立本身鏡像以後就可使用push命令將它上傳到公開或私有庫,這樣另一臺機器使用的時候,只須要從倉庫上pull下來便可 #Docker倉庫和Git的概念相似,倉庫註冊服務器和GitHub這樣的代碼託管服務相似.
1.卸載舊版本 # yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 2. 設置儲存庫 - 安裝依賴環境包 #yum install -y yum-utils \device-mapper-persistent-data \lvm2 - 穩定存儲庫 #yum-config-manager \ --addrepo\https://download.docker.com/linux/centos/docker-ce.repo 3.安裝docker ce # yum install docker-ce docker-ce-cli containerd.io 4.添加鏡像加速器 # curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io 5. 啓動docker #systemctl start docker 6.驗證docker可否正常使用 # docker run hello-world #舒適提示,若是想安裝特定版本,請在步驟3上稍做修改便可,以下:$ yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io #注意這條命令是否是跟步驟3很像...嘿,本身感覺...
docker pull hello-world #下載docker鏡像,產生容器示例 docker run ubuntu #運行docker鏡像,ubuntu系統 docker run -it ubuntu /bin/bush #交互式運行ubuntu容器,進入容器空間內 參數解釋 -i 交互式的命令操做,-t開啓一個終端提供訪問, /bin/bush 指定shell解釋器
打包構建一個攜帶vim的contos鏡像文件web
1.docker run -it centos /bin/bush #先運行一個centos的基礎鏡像文件 2.yum install vim -y #安裝vim 3.docker commit 1d5698b91178 (當前鏡像id) lxf163/centos-vim #退出容器空間,提交這個容器,爲新的鏡像
導出/導入鏡像文件redis
docker save 94e814e2efa8 > /opt/ubuntu.tar.gz #導出 docker load 94e814e2efa8 < /opt/ubuntu.tar.gz #導入鏡像,自動解壓縮
#---注意運行過docker鏡像後,會產生容器記錄;docker容器必須有後臺程序在運行,不然容器就退出--- docker image ls /docker images #二者都是查看鏡像 docker container ls /docker ps #二者都是查看正在運行的容器進程 docker ps -a 查看全部的容器記錄 docker search centos #查詢docker鏡像記錄
docker rm 容器id # 刪除容器記錄 docker rm `docker ps -aq` # 批量刪除容器記錄,不推薦操做此命令 docker rm -f `docker ps -aq` #強制刪除全部容器記錄,包括正在運行的容器,慎用!!! docker rmi 鏡像id #刪除鏡像記錄 docker rmi `docker images -aq` #批量刪除鏡像文件
docker tag 鏡像id 新的鏡像名 #修改docker鏡像名,tag標記名
docker images #查看全部本級鏡像 docker pull redis # 獲取新的redis鏡像 docker search nginx #搜索nginx 的鏡像
容器相關docker
docker start/stop 容器id #啓/停docker容器 docker run -it --rm 94e /bin/bash # --rm運行容器,退出後,刪除容器記錄 docker run --name mynginx 881 /bin/bash #運行容器後給其命名 docker run -d centos /bin/sh -c "while true;do echo hello centos; sleep 1;done" #後臺不斷運行一個shell語句 -d後臺運行, -C指定一個shell語句 docker logs 容器id #查看容器空間內的日誌 !!! docker logs -f 容器id #不間斷打印容器內日誌信息 docker exec -it 容器id /bin/bash # 進入正在運行的容器空間
啓動容器的方式有兩種: #1.基於鏡像新建一個容器並啓動,也就是新建一個容器 docker run nginx #2.在處於(stopped)中止狀態下的容器從新啓動,利用原來啓動過的容器id啓動. docker start as5 #由於Docker的容器太過於輕量級,大部分用戶都是隨時刪除,隨時建立.
在容器中能夠運行網絡應用,可是要讓外部也能夠訪問這些應用,能夠經過-P 和-p參數進行端口映射!!!shell
-P #大寫P參數會隨機映射端口到容器開放的網絡端口 docker run -d -P training/webapp python app.py
檢查映射的端口ubuntu
docker ps -l #0.0.0.0:32771->5000/tcp 其中32771是宿主機ip的端口,5000是容器端口
最好經過-p參數指定映射端口,由於-P參數隨機映射端口,給訪問帶來極大不便vim
docker run -d -p 9999:5000 training/webapp python app.py
52ceb29239466617e2ebff333fbb9e59514910d1309961c6a94a191fbf68a646
查看指定容器的端口映射centos
#[root@localhost opt]# docker port 52c 5000/tcp -> 0.0.0.0:32771
而後經過宿主機ip:9999訪問服務器
...待續