天天看點

從零搭建docker私有倉庫

實驗環境:

  • centos7 64位
  • ubuntu16.04 64位(用于測試私有倉庫)
本文分為四個部分:
  • 第一部分: 安裝docker
  • 第二部分: 鏡像的操作
  • 第三部分: 容器的操作
  • 第四部分: 私有倉庫的建立

# 通過yum源安裝docker
sudo yum -y install docker
# 啟動docker
sudo systemctl start docker
# 開機自啟
sudo systemctl enable docker
           

查找并下載下傳docker鏡像(以centos為例)

# 查找centos鏡像
docker search centos
# 下載下傳centos鏡像
sudo docker pull docker.io/centos:latest
           

列出鏡像

sudo docker image ls
           

删除鏡像

sudo docker image rm 4655e9997674
           

建立容器并進入

sudo docker run -t -i --name zhaoolee-centos docker.io/centos:latest /bin/bash
           
參數說明:

-t

配置設定一個僞終端并綁定到容器的标準輸入,

-i

讓容器的标準輸入保持打開

檢視所有容器

sudo docker ps -a
           

啟動容器

sudo docker start zhaoolee-centos
           

檢視目前運作的容器

sudo docker ps
           

停止容器

sudo docker stop zhaoolee-centos
           

進入容器環境

sudo docker attach zhaoolee-centos
## 其它方法
sudo docker exec -it 775c7c9ee1e1 /bin/bash
           

向容器内部發送指令

我們可以在不進入容器環境的情況下, 向容器内部發送指令
sudo docker exec zhaoolee-centos touch 123.txt
           

删除容器

将容器停止後, 可以删除容器
sudo docker rm zhaoolee-centos
           

(選學)docker進階指令

交換檔案

docker cp

通過

docker cp

指令, 可以實作容器與外部環境的檔案交換

我們在docker容器内部建立一個

123.txt

檔案, 将它拷貝到外部環境, 在外部環境建立一個456.txt拷貝到docker容器内部(如下圖)
  • 即使容器處于未激活狀态, 也是可以進行檔案交換的

将修改後的容器釋出為鏡像

# 将修改後的容器釋出為鏡像, `-a`表示作者, `-m`表示對本次修改的說明
sudo docker commit -a "zhaoolee" -m "add 123.txt 456.txt" zhaoolee-centos zhaoolee-centos:0.1
# 基于建立的鏡像建立容器
sudo docker run -t -i --name my-centos zhaoolee-centos:0.1 /bin/bash
           

檢視鏡像的資訊

# 檢視剛剛建立的鏡像資訊
sudo docker history zhaoolee-centos:0.1
           

檢視容器内變動日志

sudo docker diff zhaoolee-centos
           

檢視鏡像和容器的詳細資訊

# 檢視鏡像的詳細資訊
sudo docker inspect zhaoolee-centos:0.1 
# 檢視容器的詳細資訊
sudo docker inspect zhaoolee-centos
           

1. 下載下傳私有倉庫注冊伺服器的鏡像

sudo docker pull registry:latest
           

2. 建立一個注冊伺服器容器

sudo docker run -d -p 5000:5000 --name server-registry -v /tmp/registry:/tmp/registry docker.io/registry:latest
           
參數說明

-d

容器在後端運作,

-p 5000:5000

在容器的5000端口運作并映射到外部系統的5000端口,

--name server-registry

容器命名為server-registry,

-v /tmp/registry /tmp/registry

把主控端的目錄/tmp/registry挂載到容器目錄/tmp/registry

3. 為本地鏡像添加标簽,并将其歸入本地倉庫

  • 為本地鏡像添加标簽
sudo docker tag zhaoolee-centos:0.1 localhost:5000/zhaoolee-centos:0.1
           
  • 将被标記的本地鏡像, push到倉庫
sudo docker push localhost:5000/zhaoolee-centos:0.1
           

4.測試本地倉庫的的可用性

在虛拟機内網,開啟另一台ubuntu16.04虛拟機, unbutu16.04嘗試從centos7擷取剛剛建立的鏡像

zhaoolee-centos:0.1

sudo docker pull 192.168.214.156:5000/zhaoolee-centos:0.1
           
# 解決安裝過程中的問題:解決: Error response from daemon: Get https://192.168.214.156:5000/v2/: http: server gave HTTP response to HTTPS client
echo '{ "insecure-registries":["192.168.214.156:5000"] }' > /etc/docker/daemon.json
           

docker作為一種新興的虛拟化方式,無論是執行速度、記憶體損耗或者檔案存儲速度,都要比傳統虛拟機技術更高效, docker本身支援類似git的操作, 讓應用的疊代部署更為簡單高效, 對于一些依賴非常複雜的應用, 我們可以直接下載下傳它的docker版本, 開箱即用, 省時省力, 同時為運維人員創造了更多偷懶的機會~

看到這裡, 你已經了解了docker常用的功能,如果想用docker實戰一下, 比如搭建一個屬于自己的git站點, 可以繼續閱讀

用gogs搭建屬于自己的git網站