1. 程式人生 > >docker技術入門與實戰-映象、容器、倉庫

docker技術入門與實戰-映象、容器、倉庫

1.如果出現Cannot connect to the Docker daemon. Is the docker daemon running on this host?

解決辦法在控制檯輸入:>$ service docker start即可

2.hub.docker.com建立了自己的賬號,如何push和pull
step1——找到本地映象的ID:docker images
step2——登陸Hub:docker login --username=username --password=password --email=email
step3——tag:docker tag <imageID> <namespace>/<image name>:<version tag eg latest>(build,commit命令也可以)
step4——push映象:docker push <namespace>/<image name>

3.本地映象registry執行中,push後如何檢視,或者說我們到底push到哪裡去了?

本地映象預設是儲存在/var/lib/registry或者是/var/lib/ucf/registry中。可以在瀏覽器中開啟127.0.0.1:5000/v2/_catalog檢視我們已經push的映象。其中5000是你執行registry時設定的埠,v2是你的registry的版本,如果是1.*,就是v1,如果是2.*就是v2。

0.0.0.0是預設的ip地址,就像路由器路由表中不存在的,都會將ip報文轉發給0.0.0.0(我們可以設定某個埠為0.0.0.0出口,發出去我們就管不著了,定址的事情就交給下一級路由器了)

255.255.255.255是廣播地址

127網段整體保留,你輸入的127.*.*.*都會轉化為127.0.0.1環回地址。

所以上面在瀏覽器中可以開啟127.*.*.*:5000/v2/_catalog。

Docker容器、映象、倉庫

1.容器:什麼是docker容器呢?就是用來執行映象的小型的虛擬機器,或者說是一個輕量級的沙箱,Docker利用容器來執行和隔離應用。簡單來講,你就可以把它看作簡單的linux系統環境,這裡面會有很多打包好的引用在執行(也可能比較少)。 2.映象:類似於虛擬機器映象,映象是隻讀的,是建立docker容器的基礎。執行中的一個映象就構成了一格容器。 3.倉庫:集中儲存映象的地方,網上有很多可以利用的倉庫,你可以從上面下載各種你需要的映象來使用。你也可以自己建立自己的本地倉庫等等,倉庫根據是否公開分為私有倉庫和公開倉庫兩種。目前最大的公開倉庫是Docker Hub,存放了大量的映象供使用者下載。

Docker映象

下面的命令幾乎都需要root許可權,所以建議加上sudo,或者直接先進入root使用者再操作 1.獲取映象:docker獲取映象的路徑是:先從本地獲取,然後從預設的Docker Hub獲取,也可以自己配置自定義的docker倉庫。         獲取映象的命令:docker pull name[:tag] 其中docker pull是固定的命令,name是你要獲取的映象的名字,:tag可選,表示映象的標籤,不使用tag的話,會自動選擇latest標籤的映象(映象有多個版本,latest tag 表示最新版本)         比如:# docker pull ubuntu    (需要root許可權) ,或者docker pull registry.hub.docker.com/ubuntu:latest效果是一樣的,只不過後面的給定了倉庫名路徑(URL)和標籤latest。 2.檢視映象資訊:docker images命令        # docker images命令執行後,會有一個表格,表格的內容是:REPOSITORY,TAG,IMAGE ID, CREATED  VCRTUAL SIZE,顧名思義,分別表示映象來源的倉庫,tag標籤(版本號),id(唯一),建立時間以及虛擬大小(所佔用的映象空間)       你也可以使用docker tag oldrepository:tag   newrepository:tag來建立一個新的映象,這個新建立的映象和原來的映象是同一個id,只不過repository和tag不同。        還可以使用docker inspect IMAGE_ID來檢視映象的詳細資訊,這個資訊顯示的格式為json 3.搜尋映象:預設搜尋遠端倉庫Docker Hub中的映象 命令:docker  search name 支援的引數包括:--automated=false 僅顯示自動建立的映象;--no-trunc = false 輸出資訊不截斷顯示  -s, --start=0 指定僅顯示評級為指定星級以上的映象。當然,這些引數肯定是要放在name之前了。
4.刪除映象 刪除映象的命令是docker rmi(remove images),具體的命令格式為:docker rmi image [image...],其中image可以是標籤或者id,可以同時刪除多個 比如刪除前面下載的ubuntu映象,可以使用如下命令:docker rmi ubuntu  或者docker rmi  {id} 噹噹前映象的tag多於一個的時候,也就是使用docker images檢視映象的時候,id相同的多於一個,那麼執行rmi命令只會刪除其中的一個映象tag,如果只剩下一個了,那麼刪掉了就沒了。 有的時候如果容器在執行中,這個時候刪除是會失敗的,有兩種辦法,使用-f引數強制刪除或者先刪除執行的容器,再刪除映象。 方法一:docker rmi -f ubuntu 方法二:docker rm images   docker rmi ubuntu 其他相關命令:檢視本機上的執行的容器:docker ps -a  ;執行容器 docker run -【parameters】 imagename 5.建立映象 可以基於已有的映象或者容器來建立新的映象,類似於複製操作(和tag的區別是,tag的出來的映象id相同,這個的id不同) 命令:docker commit 【options】 id name   其中,options有三個,分別是-a 作者author   -m  資訊message,-p 表示提交時暫停容器執行。  id表示要複製的那個映象的id,name表示新映象的名字。 例子:docker commit  -a  "yourname" -m " a new docker image" 91sa212zg12fa13 test 執行後得到一個id不同的,名字為test的映象 也可以基於本地模板匯入,這個不再詳說。 6.儲存和載入映象 儲存:docker save -o name.tar imagename:tag,tag可以省略 載入:docker load --input name.tar 7.上傳映象 docker push命令可以上傳到映象操作,預設的是Docker Hub官方倉庫(需要登入) 上傳命令:docker push name:tag,tag可以省略

容器

1.建立容器 命令:docker create -【options】 image:tag 建立成功會返回新建容器的id,可以使用前面提到過的docker ps -a檢視建立的容器。現在建立的容器是停止狀態的,需要使用新的命令啟動容器 命令:docker start docker_id 命令:docker run -[options] image:tag instructions比如用一個命令輸出hellowrold : docker run ubuntu /bin/echo 'hello world' 利用docker run建立並啟動容器時,Docker在後臺執行時的標準操作包括:
  • 檢查本地是否存在指定映象,不存在就在共有倉庫下載
  • 利用映象建立一個容器,然後啟動(create + start)
  • 分配一個檔案系統,並在只讀的映象層外面掛一層可讀寫曾
  • 從宿主主機配置的網橋介面中橋接一個虛擬介面到容器中去
  • 從地址池配置一個ip地址給容器
  • 執行使用者指定的應用程式
  • 執行完畢後容器被終止
前面的ubuntu映象大小大概只有100多兆不到200兆的樣子,我們執行起來就可以和它互動了,看下下面的命令: docker run -ti ubuntu 其中-t表示讓Docker分配一個偽終端並繫結到容器的標準輸入上,-i讓標準輸入開啟,然後就可以執行一個簡單的偽終端和ubuntu容器互動了。基本的命令都有。可以輸入ctrl+d或者輸入exit來退出容器 2.守護態執行 如果加上-d引數,那麼容器將會以守護態來執行。比如下面的命令: docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1;done" 如果要檢視容器的輸出資訊,可以使用docker logs id命令 3.啟動和終止容器 使用ctrl+d或者exit命令來退出終端時,容器也會終止。另外,還可以使用docker stop id來終止一個容器 終止後怎麼啟動呢?docker start id來啟動,另外,docker restart命令會將一個執行態的容器終止,並重新啟動 4.進入容器 使用-d引數後,容器啟動後會進入後臺,使用者無法看到容器中的訊息,這個時候就需要進入容器的操作了,有多重方法,包括docker attach命令,docker exec命令,已經nsenter工具等
  • docker attach命令
# docker run -idt ubuntu # docker ps     //檢視後臺執行的命令 # docker attach name  //只能是名字,前面我們用ps命令檢視過了 但是attach命令有一個缺點,你如果多終端同時attach同一個容器的時候,所有視窗會同步顯示,當某個視窗因命令阻塞的時候,其他視窗就沒辦法操作了。
  • docker exec命令
這個命令和run命令非常像,只不過把run改成了exec,而且exec只能由兩個引數,第一個引數是容器的id,第二個引數是針對容器的命令 比如: docker exec -ti 97e3 /bin/bash
  • nsenter工具 略
4.刪除容器 docker rm刪除處於終止狀態的容器,命令格式為:docker rm 【options】 container 【container】... options可以是下列的三個中的若干個: -f,--force=false:強制刪除一個執行中的容器 -l,--link=false:刪除容器的連線,但保留容器 -v,--volumes=false:刪除容器掛載的資料卷 5.匯入和匯出容器 匯出容器:docker export 【id】> [name.tar] 將容器儲存成對應的tar檔案 匯入容器:docker import 【options】 【name.tar】 【repository:【TAG】】  將name.tar匯入映象到repository,tag為TAG。options有以下: -c :應用docker 指令建立映象; -m :提交時的說明文字;
例如:docker export ce55ad ubuntu.tar docker import ubuntu.tar myubuntu:ubuntu

倉庫(Repository)

倉庫是集中存放映象的地方,註冊伺服器(Registry)是存放倉庫的具體伺服器,一個伺服器上可以有多個倉庫,每個倉庫下面可以有多個映象。比如dl.dockerpool.com/ubuntu,dl.dockerpool.com是註冊伺服器地址,ubuntu是倉庫名,這個倉庫裡面只有一個映象。倉庫又可以分為共有倉庫和私有倉庫 1.Docker Hub 官方倉庫,包含一萬多個映象,大部分可以直接下載。 官方倉庫的地址是hub.docker.com ,我們可以在瀏覽器開啟,然後直接申請一個賬號。申請完畢之後,只需要在控制檯輸入docker login,根據提示來輸入使用者名稱和密碼以及郵箱來登入。如下圖所示 接下來你就可以對你自己賬戶內的映象進行操作了,比如push一個映象到自己的倉庫,這個push操作可能會遇到各種問題,一般都是網路問題,我遇到的問題如下,我push了三次才成功。 push的過程在最開始已經說了,我們來看我做的整個過程: 1、登入hub, 2.、找到本地映象id 3、我們看圖,如何修改tag。解釋下,修改repository和tag的原因是,你不能將images上傳到docker hub的公有root目錄,只能上傳到你自己的namespace,也就是你在申請賬號時的使用者名稱。比如這裡我就修改成了njufxd12/mynginx:latest,njufxd12就是我的docker hub使用者名稱,mynginx是我對nginx這個映象新起的名字,tag我設定為latest。注意看,nginx和njufxd12/mynginx的image id是一樣的。 4.push操作,可能會出現連線問題,多push幾次就好了。 第一次push,出現因為等待連線,而取消掉請求 第二次push 出現i/o 超時 第三次push 成功 2.建立私有倉庫 1)sudo docker run -d -p 5000:5000 registry //自動下載並啟動一個registry容器,這個容器可以建立本地的私有倉庫 當然也可以設定上傳映象的目錄  sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry 其中5000:5000表示所有ip地址的5000埠上傳都會上傳到指定倉庫。 2)改名 sudo docker tag id 192.168.1.1:5000/test 3)  sudo docker push 192.168.1.1:5000/test。 如果上傳失敗,建議關閉防火牆,按照這個連結的操作來http://www.2cto.com/net/201612/574844.html

相關推薦

docker技術入門實戰-映象容器倉庫

1.如果出現Cannot connect to the Docker daemon. Is the docker daemon running on this host? 解決辦法在控制檯輸入:>$ service docker start即可 2.hub.docke

Docker技術入門實戰 第8章 使用Dockerfile建立映象

Dockerfile是一個文字格式的配置檔案,使用者可以使用Dockerfile來快速建立自定義映象。本章首先介紹Dockerfile典型的基本結構和它支援的眾多指令,並具體講解通過這些指令來編寫定製映象的Dockerfile,以及如何生成映象。最後介紹使用Dockerfil

Docker技術入門實戰 第二版-學習筆記-8-網路功能network-1-單個host上的容器網路

Docker 中的網路功能介紹 Docker 允許通過外部訪問容器或容器互聯的方式來提供網路服務   1) 外部訪問容器

Docker技術入門實戰 第二版-學習筆記-8-網路功能network-3-容器訪問控制和自定義網橋

1)容器訪問控制 容器的訪問控制,主要通過 Linux 上的 iptables防火牆來進行管理和實現。 iptables是 Linux 上預設的防火牆軟體,在大部分發行版中都自帶。   容器訪問外部網路 容器要想訪問

Kubernetes權威指南第2版 和 Docker技術入門實戰第2版 兩本容器的書下載地址

Docker技術入門與實戰第2版目錄[0第0]2版前言[0第0]1版前言[0第0]一部分 基礎入門[0第0]1章 初識容器與Docker 31.1 什麼是Docker 31.2 為什麼要使用Docker 51.3 Docker與虛擬化 71.4 本章小結 9[0第0]2章 核心概念與安裝配置 102.1 核心

Docker技術入門實戰 第二版-學習筆記-9-Docker Compose 專案-1-舉例說明

Docker Compose 是 Docker 官方編排(Orchestration)專案之一,負責快速在叢集中部署分散式應用 Compose 通過一個配置檔案來管理多個Docker容器,在配置檔案中,所有的容器通過services來定義,然後使用docker-compose

Docker技術入門實戰 第二版-學習筆記-8-網路功能network-2-相應配置

1) 快速配置指南(詳細使用下面會講) 其中有些命令選項只有在 Docker 服務啟動的時候才能配置,而且不能馬上生效 下面2個命令選項既可以在啟動服務時指定,也可以 Docker 容器啟動(doc

Docker技術入門實戰 第二版-學習筆記-10-Docker Machine 專案-1-cli

Docker Machine 是 Docker 官方編排(Orchestration)專案之一,負責在多種平臺上快速安裝 Docker 環境 Docker Machine是一種工具,它允許你在虛擬主機上安裝Docker引擎,並使用docker-machine命令管理主機。

Docker 技術入門實戰 》讀書筆記 ( CentOS 安裝 Docker )

PS :個人所有讀書筆記只記錄個人想要的內容,很可能原書大量內容沒有納入筆記中... ...  1. Docker 映象:一個只讀模板,是建立容器的基礎 。 2. Docker 容器:從映象建立執行的例項 ,可以看作是一個簡易版本的 Linux 系統環境 。 3. Do

Docker技術入門實戰》pdf

序一 序二 前言 作者簡介 第一部分 Docker入門 第1章 初識Docker 3 1.1 什麼是Docker 3 1.2 為什麼要使用Docker 5 1.3 虛擬化與Docker 7 1.4 本章小結 8 第2章 Docker的核心概念和安裝 9 2.1 核心概念 9 2.2 安裝Docker 11

Docker技術入門實戰筆記

開發十年,就只剩下這套架構體系了! >>>   

Docker技術入門實戰第3版2018版》高清中文PDF下載

ESS 特性 安裝 騰訊雲 映射 oracl war 分享 alt 《Docker技術入門與實戰第3版2018版》高清中文PDF下載資料簡介:本書從Docker基本原理開始,深入淺出地講解Docker的構建與操作,內容系統全面,可幫助開發人員、運維人員快速部署Docker應

Docker_技術入門實戰》.PDF

簡介 在雲端計算時代,開發者將應用轉移到雲上已經解決了硬體管理的問題,然而軟體配置和管理相關的問題依然存在。Docker的出現正好能幫助軟體開發者開闊思路,嘗試新的軟體管理方法來解決這個問題。通過掌握Docker,開發人員便可享受先進的自動化運維理念和工具,無需運維人員介入即可

docker技術入門實踐》學習筆記

1.容器的高可用《docker技術入門與實踐.P46》   容器的輕量級特性,推薦在使用容器時在容器前段引入HA(高可靠用)機制,例如使用HAProxy工具來代替容器訪問,   這樣在容器出現故障時候,可以快速切換到其他容器,還可以自動重啟故障容器。 2.資料卷容器《dock

docker的三大元件:映象容器倉庫

 Docker是開源的一個基於輕量級虛擬化技術的容器引擎專案。它通過分層映象標準化和核心虛擬化技術,使得應用開發者和運維工程師可以以統一的方式跨平臺釋出應用,並且以幾乎沒有額外開銷的情況下提供資源隔離的應用執行環境。我們目前知道的雲服務是基於作業系統級別的隔離,在同一臺物

Docker入門-映象容器倉庫簡單命令

映象 1.獲取映象 docker pull dl.dockerpool.com:5000/ubuntu:14.04(dl.dockerpool.com為註冊伺服器,5000為埠號,ubuntu為倉庫

Docker入門實戰講解

pau spa 個人 開發人員 1.0 創建 依賴 之前 講解 簡述 Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口

elasticsearch技術解析實戰(一) 入門和索引

ilog reat date str last dice elastics replicas nod GET _cat/nodes GET _cat/health GET _cat/shards GET http://10.37.84.124:9200/secislan

Docker的安裝鏡像容器倉庫的管理

login adb ash pytho 說明 emc move 容器 高端 一、安裝docker 1.配置repo倉庫 cat /etc/yum.repos.d/docker.repo [dockerrepo] name=Docker Repository baseur

Docker 三個基本概念——映象容器倉庫

文章目錄 1、映象 (Image) 2、容器 (Container) 3、倉庫 (Repository) 3.1、倉庫註冊伺服器 4、映象與容器的關係 5、映象、容器、倉庫 執行關係圖: