docker學習之路(安裝、使用)

1、docker安裝git

一、更新現有的yum包docker

yum update

二、配置docker yum源json

[root@docker ~]# cat /etc/yum.repos.d/docker.repo 
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
[root@docker ~]# 

三、使用yum命令安裝dockerubuntu

yum install docker-engine

四、啓動docker服務vim

service docker start

五、確認docker安裝成功centos

docker run hello-world

2、docker使用app

一、使用docker搜索可用的鏡像,語法:docker search 鏡像名字,例如搜索名爲tutorial的鏡像curl

 二、使用docker命令來下載鏡像,語法:docker  pull  鏡像名字測試

 三、docker容器中運行hello-worldurl

在咱們剛剛下載的鏡像中輸出"hello word"。爲了達到這個目的,咱們須要在這個容器中運行"echo"命令,輸出"hello word"。

提示:

docker run命令有兩個參數,一個是鏡像名,一個是要在鏡像中運行的命令。

 四、在容器中安裝新的程序

下一步咱們要作的事情是在容器裏面安裝一個簡單的程序(ping)。咱們以前下載的tutorial鏡像是基於ubuntu的,因此可使用ubuntu的apt-get命令來安裝ping程序: apt-get install -y ping

 備註:apt-get 命令執行完畢以後,容器就會中止,但對容器的改動不會丟失。

目標:

在learn/tutorial鏡像裏面安裝ping程序。

提示:

在執行apt-get 命令的時候,要帶上-y參數。若是不指定-y參數的話,apt-get命令會進入交互模式,須要用戶輸入命令來進行確認,但在docker環境中是沒法響應這種交互的。

正確的命令:

 五、保存對容器的修改

當你對某一個容器作了修改以後(經過在容器中運行某一個命令),能夠把對容器的修改保存下來,這樣下次能夠從保存後的最新狀態運行該容器。docker中保存狀態的過程稱之爲committing,它保存的新舊狀態之間的區別,從而產生一個新的版本。
目標:
首先使用 docker ps -l命令得到安裝完ping命令以後容器的id。而後把這個鏡像保存爲learn/ping。
提示:
1. 運行docker commit,能夠查看該命令的參數列表。
2. 你須要指定要提交保存容器的ID。(譯者按:經過docker ps -l 命令得到)
3. 無需拷貝完整的id,一般來說最開始的三至四個字母便可區分。(譯者按:很是相似git裏面的版本號)
正確的命令:

 

 六、運行新的鏡像

由於咱們以前在鏡像learn/tutorial中安裝了ping程序,並將learn/tutorial修改成learn/ping,下面咱們使用鏡像learn/ping,去ping www.baidu.com

七、檢查運行中的鏡像

 八、發佈本身的鏡像

命令:docker push 鏡像名字

3、Docker私有倉庫搭建及鏡像刪除

一、docker虛擬機上拉取registry

 

 二、經過該registry鏡像啓動一個容器

docker run -d -p 5000:5000 registry

 說明:默認狀況下,會將倉庫存放於容器內的/tmp/registry目錄下,這樣若是容器被刪除,則存放於容器下的鏡像也會丟失,因此通常狀況下會指定本地一個目錄掛載到容器內/tmp/registry下。

三、指定本地一個目錄掛載到容器內/tmp/registry下。

因爲咱們的5000:5000已經存在,先將這個容器刪除:docker rm -f 容器ID,而後再建立

而後咱們去觀察一下容器內部狀況:

能夠看到registry 掛載目錄是 在 /var/lib/registry 

 4、測試私有倉庫

一、首先拉取一個小的鏡像

docker pull busybox

二、爲鏡像修改tag,默認latest

  

 三、將新建tag的鏡像上傳到私有倉庫

解決辦法:

出現這問題的緣由是:Docker自從1.3.X以後docker registry交互默認使用的是HTTPS,可是搭建私有鏡像默認使用的是HTTP服務,因此與私有鏡像交時出現以上錯誤。

這個報錯是在本地上傳私有鏡像的時候遇到的報錯如上圖:

 在docker server啓動的時候,增長啓動參數,默認使用HTTP訪問:

 vim /usr/lib/systemd/system/docker.service

找到 ExecStart
ExecStart=/usr/bin/dockerd  --insecure-registry 192.168.222.200:5000

修改好後重啓docker 服務

systemctl daemon-reload 

systemctl restart docker

重啓docker服務後,將容器重啓

docker start $(docker ps -aq)

 四、將剛纔上傳的busybox鏡像拉取下來

 五、查看鏡像

 5、刪除私有倉庫鏡像

一、獲取鏡像sha256值

注意:經過命令行獲取鏡像對應sha256值

    curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET        http://鏡像地址/v2/鏡像名稱/manifests/tag 

二、刪除

說明:當刪除鏡像的時候若是出先HTTP/1.1 405 Method Not Allowed,則進入私有倉庫,進行這個操做:

需在配置文件中的storage配置中增長delete=true配置項,容許刪除鏡像。默認的鏡像是沒有這個參數
cat config.yml
 
version: 0.1
log:
  fields:
    service: registry
storage:
  delete: enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
curl -I -X DELETE http://192.168.222.200:5000/v2/busybox/manifests/sha256:a2209c2117f9a1f1a165ac37ccc1e45baf7e5d99dcef7df0a1c35d3858c35c0c

 刪除以後,再次查看發現該鏡像沒有對應的sha256,說明該鏡像已經被刪除

curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET http://192.168.222.200:5000/v2/busybox/manifests/latest

 進入私有倉庫查看發現該目錄下大小沒有發生變化,這是由於只刪除了元數據而已,並無刪除數據。

 下面將數據也一併刪除,進入容器執行垃圾回收命令後數據被刪除

registry garbage-collect /etc/docker/registry/config.yml

相關文章
相關標籤/搜索