概念
Docker 包括三個基本概念
- 鏡像(Image)
- 容器(Container)
- 倉庫(Repository)
理解了這三個概念,就理解了 Docker 的整個生命周期。
鏡像
鏡像是只讀的。
鏡像可以想象成操作系統的安裝鏡像(例如CentOS6.8.ISO)。
容器
容器是從鏡像創建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。
可以理解成 我們通過鏡像安裝操作系統,我們可以開機,關機,等操作。
倉庫
倉庫是集中存放鏡像文件的場所。
有時候會把倉庫和倉庫注冊服務器(Registry)混為一談,並不嚴格區分。
實際上,倉庫注冊服務器上往往存放着多個倉庫。
每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag)。
一個倉庫中可能有centos ubuntu fedora等鏡像,然后ubuntu可以有12 13 15 16等版本則使用標簽標明。
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
Registry部署私有倉庫
官方提供了 registry 鏡像來啟動本地的私有倉庫。
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always registry:2.5.0
不指定tag時候鏡像一直下載失敗,
https://hub.docker.com/r/library/registry/tags/ 找到tag
默認時候倉庫數據存在的位置是/var/lib/registry 可以通過參數v
改變倉庫數據的位置。
查看容器運行情況
[root@bogon docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2119ae9bc14d registry:2.5.0 "/entrypoint.sh /etc 17 minutes ago Up 17 minutes 0.0.0.0:5000->5000/tcp sharp_sinoussi
說明docker的私有倉庫已經運行成功,打開瀏覽器訪問顯示如下內容說明運行正常。
驗證
打開另一台機器
然后推送一個鏡像到registry中
[root@bogon opt]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos 6.8 c51f770ba2ca 5 weeks ago 194.5 MB
[root@bogon opt]# docker tag c51f770ba2ca 192.168.1.106:5000/centos:6.8
[root@bogon opt]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos 6.8 c51f770ba2ca 5 weeks ago 194.5 MB
192.168.1.106:5000/centos 6.8 c51f770ba2ca 5 weeks ago 194.5 MB
[root@bogon opt]# docker push 192.168.1.106:5000/centos
The push refers to a repository [192.168.1.106:5000/centos] (len: 1)
c51f770ba2ca: Image already exists
c51f770ba2ca: Buffering to Disk
b92e3b877355: Image successfully pushed
b92e3b877355: Buffering to Disk
Digest: sha256:bb00aaaf4f7993e3d34b02c58573622c4c039712611f521313a7fd00ba687571
可能的問題提示https什么的
需要在客戶端機的docker配置文件上添加other_args="--insecure-registry 192.168.1.106:5000"
echo 'other_args="--insecure-registry 192.168.1.106:5000"' >> /etc/sysconfig/docker
centos7下使用
/etc/sysconfig/docker
OPTIONS='--selinux-enabled=false --log-driver=journald --insecure-registry 192.168.1.106:5000'
顯示push完成 然后通過瀏覽器訪問Registry服務器。如下圖
我們可以刪除新開的機器上面剛push的鏡像,然后在pull下來驗證一下
[root@bogon opt]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos 6.8 c51f770ba2ca 5 weeks ago 194.5 MB
192.168.1.106:5000/centos 6.8 c51f770ba2ca 5 weeks ago 194.5 MB
[root@bogon opt]# docker rmi -f c51f770ba2ca
Untagged: 192.168.1.106:5000/centos:6.8
Untagged: centos:6.8
Deleted: c51f770ba2ca4650038d1a058e13d42195cf481151da1287341a9d44903094c9
Deleted: 7392cee6d21bde3366cffc70d2404e184e8aeac95b2e9198afea920411e0cb00
Deleted: b92e3b87735596ebdc9d0f9b9254ebabc8101513b14e9ebbb924bbddd32a1df5
Deleted: 3690474eb5b4b26fdfbd89c6e159e8cc376ca76ef48032a30fa6aafd56337880
[root@bogon opt]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
[root@bogon opt]# docker pull 192.168.1.106:5000/centos:6.8
6.8: Pulling from 192.168.1.106:5000/centos
3690474eb5b4: Pull complete
b92e3b877355: Pull complete
7392cee6d21b: Pull complete
c51f770ba2ca: Already exists
Digest: sha256:bb00aaaf4f7993e3d34b02c58573622c4c039712611f521313a7fd00ba687571
Status: Downloaded newer image for 192.168.1.106:5000/centos:6.8
[root@bogon opt]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
192.168.1.106:5000/centos 6.8 c51f770ba2ca 5 weeks ago 194.5 MB
然后運行這個容器從root@bogon變成了root@288ff131f83a說明運行也沒問題。
[root@bogon opt]# docker run -it 192.168.1.106:5000/centos:6.8 "bin/bash"
[root@288ff131f83a /]# hostname
288ff131f83a