一、環境說明
系統:CentOS7.6
軟件:Docker19.03
二、Docker的安裝
2.1、在線安裝
(1) 設置倉庫,安裝所需的軟件包。
yum-utils 提供了 yum-config-manager ,並且 device mapper 存儲驅動程序需要 device-mapper-persistent-data 和 lvm2。
[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 [root@docker ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(2) 安裝依賴包 container-selinux
[root@docker ~]# wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.119.1-1.c57a6f9.el7.noarch.rpm [root@docker ~]# yum install -y ./container-selinux-2.119.1-1.c57a6f9.el7.noarch.rpm
(3) 安裝Docker Engine-Community和containerd
[root@docker ~]# yum install -y docker-ce docker-ce-cli containerd.io
(4) 檢查docker是否安裝成功
[root@docker ~]# systemctl start docker [root@docker ~]# docker version Client: Docker Engine - Community Version: 19.03.12 API version: 1.40 Go version: go1.13.10 Git commit: 48a66213fe Built: Mon Jun 22 15:46:54 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.12 API version: 1.40 (minimum version 1.12) Go version: go1.13.10 Git commit: 48a66213fe Built: Mon Jun 22 15:45:28 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683
2.2、離線安裝
使用離線yum安裝的方式,需提前下載好相應的rpm包,這里以版本dockers-19.0.3.4為例。
(1) 下載docker-ce、docker-ce-cli、containerd.io安裝包
下載地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
相關包名: docker-ce-19.03.4-3.el7.x86_64.rpm docker-ce-cli-19.03.4-3.el7.x86_64.rpm containerd.io-1.2.6-3.3.el7.x86_64.rpm
(2) 下載container-selinux安裝包
下載地址:https://pkgs.org/download/container-selinux
相關包名:container-selinux-2.107-3.el7.noarch.rpm
(3) 下載相關依賴包
下載地址:https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/
相關包名: audit-2.8.5-4.el7.x86_64.rpm audit-libs-2.8.5-4.el7.x86_64.rpm audit-libs-python-2.8.5-4.el7.x86_64.rpm checkpolicy-2.5-8.el7.x86_64.rpm libcgroup-0.41-21.el7.x86_64.rpm libseccomp-2.3.1-4.el7.x86_64.rpm libsemanage-python-2.5-14.el7.x86_64.rpm libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm policycoreutils-2.5-34.el7.x86_64.rpm policycoreutils-python-2.5-34.el7.x86_64.rpm python-IPy-0.75-6.el7.noarch.rpm setools-libs-3.3.8-4.el7.x86_64.rpm
相關包名:pigz-2.3.3-1.el7.centos.x86_64.rpm
(4) 安裝
將以上包放在一個文件夾里,如install_docker,然后進行安裝即可。
yum install install_docker/*.rpm
(5) 啟動
systemctl start docker
systemctl stop docker
(6) 安裝docker-compose (非必需)
[root@localhost ~]# ll docker-compose-Linux-x86_64 -rw-r--r-- 1 root root 12255808 Aug 13 14:14 docker-compose-Linux-x86_64
[root@localhost ~]# mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose [root@localhost ~]# chmod +x /usr/local/bin/docker-compose [root@localhost ~]# docker-compose -version docker-compose version 1.26.1, build f216ddbf
三、相關操作
3.1、鏡像加速
[root@localhost ~]# vim /etc/docker/daemon.json {"registry-mirrors":["http://hub-mirror.c.163.com/"]} [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart docker
3.2、鏡像操作
#拉取鏡像 docker pull redis:latest #鏡像導出 docker save redis:latest > redis.laster.tar #鏡像導入 docker load < redis.laster.tar #鏡像重命名 docker tag IMAGEID(鏡像id) REPOSITORY:TAG(倉庫:標簽)
3.3、docker私有倉庫搭建
3.3.1、安裝Docker私有倉庫
(1) 拉取鏡像並創建鏡像保存目錄
[root@localhost ~]# docker pull registry [root@localhost ~]# mkdir -pv /usr/local/docker-registry/images
(2) 啟動容器
[root@localhost ~]# docker run -d -p 5000:5000 -v /usr/local/docker-registry/images:/var/lib/registry --name=registry registry:latest
(3) 查詢是否搭建成功
瀏覽器輸入:http://宿主機IP:5000/v2/_catalog,看到 {“repositories”:[]} 表示私有倉庫搭建成功
(4) 修改/etc/docker/daemon.json
[root@localhost ~]# vim /etc/docker/daemon.json #添加以下行,此步用於讓docker信任私有倉庫地址 {"insecure-registries":["宿主機ip:5000"]} [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart docker #啟動私有倉庫容器 [root@localhost ~]# docker start registry
(5) 為本地鏡像添加標簽,並將其歸入本地倉庫
#本地鏡像 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wurstmeister/kafka latest 40094a582680 3 weeks ago 435MB zookeeper latest 6ad6cb039dfa 4 weeks ago 252MB registry latest 2d4f4b5309b1 2 months ago 26.2MB sheepkiller/kafka-manager latest 4e4a8c5dabab 2 years ago 463MB #給本地鏡像添加標簽 [root@localhost ~]# docker tag zookeeper:latest 192.168.145.7:5000/zookeeper:3.6.1 #將被標記的本地鏡像push到倉庫 [root@localhost ~]# docker push 192.168.145.7:5000/zookeeper:3.6.1 #推送成功后,查看私有倉庫的鏡像信息 [root@localhost ~]# curl -X GET http://192.168.145.7:5000/v2/_catalog {"repositories":["zookeeper"]}
(6) 其它服務器拉取私有倉庫鏡像
#先修改此文件 [root@localhost ~]# vim /etc/docker/daemon.json {"insecure-registries":["192.168.145.7:5000"]} [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart docker #再執行拉取操作 [root@localhost ~]# docker pull 192.168.145.7:5000/zookeeper:3.6.1 3.6.1: Pulling from zookeeper Digest: sha256:600ca1b49934168ada239f934a2e2ec1e1e63c8a1ae845ea7072b2ec277caeac Status: Downloaded newer image for 192.168.145.7:5000/zookeeper:3.6.1
[root@localhost ~]# mkdir -pv /usr/local/docker-registry/auth [root@localhost ~]# htpasswd -Bbn user 123456 > /usr/local/docker-registry/auth/htpasswd #如果沒有htpasswd命令,則需要安裝相關工具包:yum install -y httpd-tools #或使用registry容器生成密碼文件,但使用registry最新的(2.7)的鏡像此條命令會存在問題,此處使用的是2.6版本的 # docker run --entrypoint htpasswd registry:2.6 -Bbn user 123456 > /usr/local/soft/docker-registry/auth/htpasswd
(2) 啟動容器
[root@localhost ~]# docker run -d -p 5000:5000 --name=registry_docker \ --restart=always \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -v /usr/local/docker-registry/auth:/auth \ -v /usr/local/docker-registry/images:/var/lib/registry \ registry:2.7.1
(3) 登錄
[root@localhost ~]# docker login -u user -p 123456 192.168.145.7:5000