一、docker 簡介
docker是乙個開源的應用容器,使用者可以將web程式和服務打包到乙個輕量級、可以移植的容器中,然後發布到任務流行的linux伺服器上,實現虛擬化。同時完全是沙箱操作,即docker內部是乙個沙箱操作,專案之間不會有任何介面,並且開銷極低。
二、docker(centos)安裝
1. 移除舊的docker服務
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2. 安裝必要的引數
3. 設定軟體源的**資訊
sudo yum-config-manager --add-repo
4. 更新yum快取
sudo yum makecache fast
5. 安裝 docker-ce
sudo yum -y install docker-ce
6. 啟動
sudo systemctl start docker
7. 設定開機啟動
chkconfig docker on
8. 測試執行 hello-world
docker run hello-world
9. 映象加速,在 /etc/docker/daemon.json中新增下面的內容,沒有改檔案,則建立該檔案。
"registry-mirrors": [""]
# 國內加速映象
# 網易加速器:
# 官方中國加速器:
10. 刪除docker ce
sudo yum remove docker-ce
sudo rm -rf /var/lib/docker
三、docker 基礎
docker重要的基礎概念:倉庫,映象,容器
倉庫:註冊伺服器是存放倉庫的地方,其上往往存放著多個倉庫。每個倉庫集中存放某一類映象,往往包括多個映象檔案,通過不同的標籤(tag)來進行區分。例如存放ubuntu作業系統映象的倉庫,稱為ubuntu倉庫,其中可能包括14.04、12.04等不同版本的映象,很多人會把倉庫與registry混為一談,其實registry是存放repository的地方,倉庫分為公有倉庫與私有倉庫;
映象:docker映象(image)類似於虛擬機器映象,可以將它理解為乙個面向docker引擎的唯讀模板,包含了檔案系統。例如:乙個映象可以只包含乙個完整的ubuntu作業系統環境,可以把它稱為乙個ubuntu映象。
容器:似於乙個輕量的沙箱,docker利用容器來執行和隔離應用;容器是從映象建立的應用執行的例項;容器從映象啟動的時候,docker會在映象的最上層建立乙個可寫層,映象本身保持不變;容器是從映象建立的應用執行例項,可以將其啟動、開始、停止、刪除,而這些容器都是相互隔離、互不可見的。可以從乙個映象建立無數個容器。平時我們主要操作的就是容器。我們也可以把容器打包成映象以方便再次使用。映象自身是唯讀的。容器從映象啟動的時候,docker會在映象的最上層建立乙個可寫層,映象本身將保持不變。
hub**倉庫是乙個公共的庫,可以建立賬號之後,將自己的內容推送到上面,註冊自己賬號
四、docker命令
1. 基礎命令
docker ps -- 檢視當前執行在容器中的程式
docker pull image_names -- 攔截映象檔案 image_name映象檔案的名稱
docker images -- 檢視當前容器中的映象檔案
docker rmi imagename --刪除映象檔案
2. 案例:
執行程式
-d 讓容器在後台中執行
-p 將程式埠對映到主機上
新增自己的hub上賬號
sudo docker login
username: ***
password:
email: ***
使用dockerfile來構建自己的映象
1. mkdir workdir
2. cd workdir
3. touch dockerfile 新增如下內容:
# version: 0.0.1
from ubuntu:14.04
maintainer wangzhe0912 "wangzhe0912@tju.edu.cn"
run apt-get update
run apt-get install -y nginx
run echo "hi, i am your contrainer" > /usr/share/nginx/html/index.html
expose 80
**含義:
1.每個dockerfile的第一行指令都應該是from開頭。from用於制定乙個已經存在的映象,後續指令都是基於該映象來執行。這個映象我們稱之為基礎映象。
2.maintainer後說明該作者和作者郵箱資訊。
3.接下來是三條run指令。預設情況下,指令後的內容會通過/bin/sh -c來執行。
4.最後設定了expose,該指令用於指定容器內的應用程式會使用哪些埠(可以指定多個)。ps:出於安全考慮,預設docker不會自動開啟這些埠,
5.需要在docker run指令中指定需要開啟的埠
4.構建映象
docker build -t="wangzhe0912/nginx:v1"` . (後面有乙個點,表示執行當前目錄下的dockerfile檔案,-t="wangzhe0912/nginx:v1"指定了新生成映象的映象名稱,也可以從git倉庫中尋找docker build -t="wangzhe0912/nginx:v1"` git@github.com:wangzhe0912/docker_web)
dockerfile構建的好處是如果某一步執行失敗了,以前面的映象儲存於快取中,如果再次構建時會利用該快取,如果不想,則執行
sudo docker build --no-cache -t="wangzhe0912/nginx:v1" .
如果想利用快取,則需要在第乙個run之前指定: env refreshed_at 2018-01-28該命令列。如果該快取變化了,則重新構建,如果沒有變化,則會利用該快取中的映象。
如下:# version: 0.0.1
from ubuntu:14.04
env refreshed_at 2018-01-28
maintainer wangzhe0912 "wangzhe0912@tju.edu.cn"
run apt-get update
5.將映象推送到hub倉庫中 sudo docker push wangzhe0912/nginx
五、優勢和使用場景
作為一種輕量級的虛擬化方式,docker在執行應用上跟傳統的虛擬機器方式相比具有顯著優勢:
docker容器很快,啟動和停止可以在秒級實現,這相比傳統的虛擬機器方式要快得多。
docker容器對系統資源需求很少,一台主機上可以同時執行數千個docker容器。
docker通過類似git的操作來方便使用者獲取、分發和更新應用映象,指令簡明,學習成本較低。
docker通過dockerfile配置檔案來支援靈活的自動化建立和部署機制,提高工作效率。
docker初識 初識 Docker
docker 學習 docker概述 docker安裝 docker命令映象命令 容器命令 操作命令 docker映象!容器資料卷!dockerfile docker網路原理 idea整合docker docker compose docker swarm 簡化的k8s ci cd jenkins ...
Docker 初識Docker網路
我們每啟動乙個docker容器,docker就會給docker容器分配乙個ip,我們只要安裝了docker,就會有乙個網絡卡docker0。一 啟動兩個tomcat容器 root localhost docker run d p name tomcat01 tomcat 啟動映象,生成tomcat0...
docker 初識 筆記
docker 是乙個輕量級 可攜式 與外界隔離的容器,也是乙個可以在容器中很方便地構建 傳輸 執行應用的引擎。和傳統的虛擬化技術不同的是,docker 引擎並不虛擬出一台虛擬機器,而是直接使用宿主機的核心和硬體,直接在宿主機上執行容器內應用。也正是得益於此,docker 容器內執行的應用和宿主機上執...