Linux中Docker/Docker-Compose的安裝


Docker安裝及管理

Centos7安裝docker

操作系統要求

要安裝 Docker Engine,您需要 CentOS 7 或 8 的維護版本。存檔版本不受支持或測試。

centos-extras必須啟用存儲庫。此存儲庫默認啟用,但如果您已禁用它,則需要 重新啟用它。推薦使用overlay2存儲驅動。

卸載舊版本

舊版本的 Docker 被稱為dockerdocker-engine. 如果安裝了這些,請卸載它們以及相關的依賴項。

[root@localhost ~]# yum remove docker \ >                   docker-client \ >                   docker-client-latest \ >                   docker-common \ >                   docker-latest \ >                   docker-latest-logrotate \ >                   docker-logrotate \ >                   docker-engine

安裝新版本

您可以根據需要以不同的方式安裝 Docker Engine:

大多數用戶 設置 Docker 的存儲庫並從中安裝,以便於安裝和升級任務。這是推薦的方法。

在新主機上首次安裝 Docker Engine 之前,您需要設置 Docker 存儲庫。之后,您可以從存儲庫安裝和更新 Docker。

設置存儲庫
安裝yum-utils包(提供yum-config-manager 實用程序)並設置穩定的存儲庫。

[root@localhost ~]# yum install -y yum-utils

下載並安裝存儲庫

[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

查看安裝的文件信息

[root@localhost ~]# ll /etc/yum.repos.d/ total 56 drwxr-xr-x. 2 root root 4096 Aug 30  2019 bak -rw-r--r--. 1 root root 2523 Dec 26  2020 CentOS-Base.repo -rw-r--r--  1 root root 1309 Nov 23  2020 CentOS-CR.repo -rw-r--r--  1 root root  649 Nov 23  2020 CentOS-Debuginfo.repo -rw-r--r--  1 root root  314 Nov 23  2020 CentOS-fasttrack.repo -rw-r--r--  1 root root  630 Nov 23  2020 CentOS-Media.repo -rw-r--r--  1 root root 1331 Nov 23  2020 CentOS-Sources.repo -rw-r--r--  1 root root 8515 Nov 23  2020 CentOS-Vault.repo -rw-r--r--  1 root root  616 Nov 23  2020 CentOS-x86_64-kernel.repo -rw-r--r--  1 root root 1919 Jan  5 15:22 docker-ce.repo -rw-r--r--  1 root root  664 Dec 26  2020 epel.repo.rpmsave -rw-r--r--  1 root root  636 May 14  2021 zabbix.repo

1:安裝最新 Docker引擎
安裝最新版本的 Docker Engine 和 containerd,或者進入下一步安裝特定版本:

[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io

如果您啟用了多個 Docker 存儲庫,使用yum install 或yum update 安裝或更新的時候未指定版本庫,通常是安裝最新的版本,但是這樣可能不穩定。

此命令會安裝 Docker,但不會啟動 Docker。它還會創建一個 docker組,但是默認情況下它不會將任何用戶添加到該組中。

2: 要安裝特定版本的Docker Engine,請在 repo 中列出可用版本,然后選擇並安裝:

列出並排序當前存儲庫中可用的版本,此示例按版本號從最高到最低對結果進行排序。

[root@localhost ~]# yum list docker-ce --showduplicates | sort -r * updates: mirrors.aliyun.com Loading mirror speeds from cached hostfile Loaded plugins: fastestmirror Installed Packages * extras: mirrors.aliyun.com docker-ce.x86_64            3:20.10.9-3.el7                    docker-ce-stable docker-ce.x86_64            3:20.10.8-3.el7                    docker-ce-stable docker-ce.x86_64            3:20.10.7-3.el7                    docker-ce-stable docker-ce.x86_64            3:20.10.6-3.el7                    docker-ce-stable docker-ce.x86_64            3:20.10.5-3.el7                    docker-ce-stable docker-ce.x86_64            3:20.10.4-3.el7                    docker-ce-stable docker-ce.x86_64            3:20.10.3-3.el7                    docker-ce-stable docker-ce.x86_64            3:20.10.2-3.el7                    docker-ce-stable docker-ce.x86_64            3:20.10.1-3.el7                    docker-ce-stable docker-ce.x86_64            3:20.10.12-3.el7                   docker-ce-stable docker-ce.x86_64            3:20.10.12-3.el7                   @docker-ce-stable docker-ce.x86_64            3:20.10.11-3.el7                   docker-ce-stable docker-ce.x86_64            3:20.10.10-3.el7                   docker-ce-stable docker-ce.x86_64            3:20.10.0-3.el7                    docker-ce-stable docker-ce.x86_64            3:19.03.9-3.el7                    docker-ce-stable docker-ce.x86_64            3:19.03.8-3.el7                    docker-ce-stable docker-ce.x86_64            3:19.03.7-3.el7                    docker-ce-stable docker-ce.x86_64            3:19.03.6-3.el7                    docker-ce-stable docker-ce.x86_64            3:19.03.5-3.el7                    docker-ce-stable docker-ce.x86_64            3:19.03.4-3.el7                    docker-ce-stable docker-ce.x86_64            3:19.03.3-3.el7                    docker-ce-stable docker-ce.x86_64            3:19.03.2-3.el7                    docker-ce-stable docker-ce.x86_64            3:19.03.15-3.el7                   docker-ce-stable docker-ce.x86_64            3:19.03.14-3.el7                   docker-ce-stable docker-ce.x86_64            3:19.03.1-3.el7                    docker-ce-stable docker-ce.x86_64            3:19.03.13-3.el7                   docker-ce-stable docker-ce.x86_64            3:19.03.12-3.el7                   docker-ce-stable docker-ce.x86_64            3:19.03.11-3.el7                   docker-ce-stable docker-ce.x86_64            3:19.03.10-3.el7                   docker-ce-stable docker-ce.x86_64            3:19.03.0-3.el7                    docker-ce-stable docker-ce.x86_64            3:18.09.9-3.el7                    docker-ce-stable docker-ce.x86_64            3:18.09.8-3.el7                    docker-ce-stable docker-ce.x86_64            3:18.09.7-3.el7                    docker-ce-stable docker-ce.x86_64            3:18.09.6-3.el7                    docker-ce-stable docker-ce.x86_64            3:18.09.5-3.el7                    docker-ce-stable docker-ce.x86_64            3:18.09.4-3.el7                    docker-ce-stable docker-ce.x86_64            3:18.09.3-3.el7                    docker-ce-stable docker-ce.x86_64            3:18.09.2-3.el7                    docker-ce-stable docker-ce.x86_64            3:18.09.1-3.el7                    docker-ce-stable docker-ce.x86_64            3:18.09.0-3.el7                    docker-ce-stable docker-ce.x86_64            18.06.3.ce-3.el7                   docker-ce-stable docker-ce.x86_64            18.06.2.ce-3.el7                   docker-ce-stable docker-ce.x86_64            18.06.1.ce-3.el7                   docker-ce-stable docker-ce.x86_64            18.06.0.ce-3.el7                   docker-ce-stable docker-ce.x86_64            18.03.1.ce-1.el7.centos            docker-ce-stable docker-ce.x86_64            18.03.0.ce-1.el7.centos            docker-ce-stable docker-ce.x86_64            17.12.1.ce-1.el7.centos            docker-ce-stable docker-ce.x86_64            17.12.0.ce-1.el7.centos            docker-ce-stable docker-ce.x86_64            17.09.1.ce-1.el7.centos            docker-ce-stable docker-ce.x86_64            17.09.0.ce-1.el7.centos            docker-ce-stable docker-ce.x86_64            17.06.2.ce-1.el7.centos            docker-ce-stable docker-ce.x86_64            17.06.1.ce-1.el7.centos            docker-ce-stable docker-ce.x86_64            17.06.0.ce-1.el7.centos            docker-ce-stable docker-ce.x86_64            17.03.3.ce-1.el7                   docker-ce-stable docker-ce.x86_64            17.03.2.ce-1.el7.centos            docker-ce-stable docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable * base: mirrors.aliyun.com Available Packages

通過其完全限定的包名稱安裝特定版本,即包名稱 ( docker-ce) 加上版本字符串(第 2 列),從第一個冒號 ( :) 開始,直到第一個連字符,用連字符 ( ) 分隔-。例如,docker-ce-18.09.1。

 執行一下命令即可安裝需要的版本

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

我當前安裝的是最新的,即列表的最上面一個,版本號為:20.10.9 。 

此命令會安裝 Docker,但不會啟動 Docker。它還會創建一個 docker組,但是默認情況下它不會將任何用戶添加到該組中。


3:啟動 Docker。 

[root@localhost ~]# systemctl start docker 

執行hello-world

hello-world 通過運行映像來驗證 Docker 引擎是否已正確安裝。

[root@localhost ~]# docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:97a379f4f88575512824f3b352bc03cd75e239179eea0fecc38e597b2209f49a Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/
 For more examples and ideas, visit: https://docs.docker.com/get-started/

此命令下載測試映像並在容器中運行它。當容器運行時,它會打印一條消息(紅色部分)並退出。

這將安裝並運行 Docker 引擎。用於sudo運行 Docker 命令。繼續Linux 后安裝以允許非特權用戶運行 Docker 命令和其他可選配置步驟。 

4:卸載 docker

刪除安裝包:

yum remove docker-ce

刪除鏡像、容器、配置文件等內容:

rm -rf /var/lib/docker 

配置docker registry-mirrors,

docker下載鏡像過慢是因為默認的鏡像地址是國外的,我們只要配置一下docker的鏡像地址就可以了!

配置中國科技大學的源

vim /etc/docker/daemon.json 

{ "registry-mirrors":["https://docker.mirrors.ustc.edu.cn","https://almtd3fa.mirror.aliyuncs.com"] } 

重新加載和啟動docker

systemctl daemon-reload systemctl restart docker.service

 

Compose介紹

詳細介紹:  https://www.jianshu.com/p/87d701d0801d

Docker Compose是一個用來定義和運行復雜應用的Docker工具。一個使用Docker容器的應用,通常由多個容器組成。使用Docker Compose不再需要使用shell腳本來啟動容器。
Compose 通過一個配置文件來管理多個Docker容器,在配置文件中,所有的容器通過services來定義,然后使用docker-compose腳本來啟動,停止和重啟應用,和應用中的服務以及所有依賴服務的容器,非常適合組合使用多個容器進行開發的場景。

Compose和Docker兼容性

compose文件格式版本 docker版本
3.4 17.09.0+
3.3 17.06.0+
3.2 17.04.0+
3.1 1.13.1+
3.0 1.13.0+
2.3 17.06.0+
2.2 1.13.0+
2.1 1.12.0+
2.0 1.10.0+
1.0 1.9.1.+

  

安裝 docker-compose

最新發行的版本地址:https://github.com/docker/compose/releases
運行以下命令以下載Docker Compose的當前穩定版本:

[root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/1.28.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose % Total    % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100   664  100   664    0     0   1156      0 --:--:-- --:--:-- --:--:--  1158
100 11.6M  100 11.6M    0     0  2253k      0  0:00:05  0:00:05 --:--:-- 2838k

其中地址中有系統參數,實際請求的地址是: https://github.com/docker/compose/releases/download/1.28.4/docker-compose-Linux-x86_64

注意: 如果無法下載,可以本地下載好后上傳到服務器即可:

下載地址:https://github.com/docker/compose/releases

將可執行權限應用於二進制文件: 

[root@localhost ~]# chmod +x /usr/local/bin/docker-compose

注意:如果命令docker-compose在安裝后失敗,請檢查您的路徑。您還可以創建指向/usr/bin或路徑中任何其他目錄的符號鏈接。

測試安裝

[root@localhost bin]# docker-compose -v docker-compose version 1.28.4, build cabd5cfb

bash 命令補齊

curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

卸載docker-compose

直接移除二進制包即可

rm /usr/local/bin/docker-compose

 

簡單示例:docker-compose 安裝redis

 先創建redis啟動的compose文件:  redis-compose.yml

version: '3' services: my-redis: image: redis:latest restart: always container_name: redis-server privileged: true ports: - 6379:6379 environment: TZ: Asia/Shanghai volumes: - /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf command: ["redis-server","/etc/redis/redis.conf"]

創建reids的配置文件  /usr/local/docker/redis/redis.conf  內容如下:

port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel verbose
logfile /data/redis.log
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data

replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes

lua-time-limit 5000

slowlog-log-slower-than 10000
slowlog-max-len 128

latency-monitor-threshold 0
notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-size -2
list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

配置項目:

1: Version 3.x

最新版本,也是推薦使用版本,推出該版的目的是為了在Compose和Docker Engine的swarm模式之間形成交叉兼容。

通過YAML的根配置項version來指定,具體配置如version: '3'或version: '3.1'等。

 2: services: 服務配置

服務定義了該服務啟動的每個容器的配置

 

3: privileged: true #使用該參數,container內的root擁有真正的root權限,否則,container內的root只是外部的一個普通用戶權限,設置為true,不然數據卷可能掛載不了,啟動不起

 

4: restart: always #設置無論遇到什么錯,重啟容器

 

5:command:  覆蓋容器啟動后默認執行的命令 ,有 2種寫法

字符串形式:  command: redis-server /etc/redis/redis.conf

JSON數組形式: command: ["redis-server","/etc/redis/redis.conf"]

執行命令:

docker-compose -f redis-compose.yml up -d

參數 -f 指定相關的compose文件,如果文件名為docker-compose.yml ,則可以不用當前參數,

 

Portainer.io管理工具

https://blog.csdn.net/qq_39177602/article/details/113854625

Docker之網絡配置和部署SpringCloud項目
https://copyfuture.com/blogs-details/20210617154040825s


使用Portainer-ce管理監控docker容器實例
https://blog.csdn.net/cnskylee/article/details/125005339

 

搭建docker中的portainer 訪問宿主機端口報錯 curl: (56) Recv failure: Connection reset by peer

解決方法 : 重建docker0網橋,但出現錯誤原因不清楚

重建docker0網橋步驟:

# 停止docker systemctl stop docker # 安裝bridge-utils yum install -y bridge-utils # 關閉docker0網橋 ip link set dev docker0 down # 刪除docker0網橋 brctl delbr docker0 # 添加docker0網橋 brctl addbr docker0 # 添加網橋信息 ip addr add 172.16.10.1/24 dev docker0 # 啟動docker0網橋 ip link set dev docker0 up # 查看網橋是否正常 ip addr # 啟動docker systemctl restart docker

可能每次重啟centos都要運行一遍這個

 

安裝問題:

1: 執行下來命令是出現錯誤

[root@xzkj-huanan2 docker]# docker run --name nginx-docker -p 8089:80 -d nginx:v3

617d51685ad437fec194da91f78ad8c8dd9da91e4161283fc5dace17b095c555
docker: Error response from daemon: driver failed programming external connectivity on endpoint nginx-docker (a5e8b9bf56ee08008d6aabc7ef434b0b6898cb578dc842e71b343e93e89971cc): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8089 -j DNAT --to-destination 172.17.0.3:80 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).

詳細原因:docker服務啟動時定義的自定義鏈DOCKER,當 centos7 firewall 被清掉時,

firewall的底層是使用iptables進行數據過濾,建立在iptables之上,這可能會與 Docker 產生沖突。

當 firewalld 啟動或者重啟的時候,將會從 iptables 中移除 DOCKER 的規則,從而影響了 Docker 的正常工作。

當你使用的是 Systemd 的時候, firewalld 會在 Docker 之前啟動,但是如果你在 Docker 啟動之后操作 firewalld ,你就需要重啟 Docker 進程了。

解決方法:輸入指令 systemctl restart docker   重啟docker服務及可重新生成自定義鏈DOCKER 

 

 

Ubuntu系統安裝Docker 

1.卸載舊版本 

ubuntu下自帶了docker的庫,不需要添加新的源。
但是ubuntu自帶的docker版本太低,需要先卸載舊的再安裝新的,   然后獲取軟件最新源

sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update

3.安裝 apt 依賴包,用於通過HTTPS來獲取倉庫

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

3.安裝GPG證書 

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

4.驗證 

sudo apt-key fingerprint 0EBFCD88

 

5.設置穩定版倉庫 

sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" 

6. 更新 apt 包索引

sudo apt-get update 

7.安裝最新版本docker

sudo apt-get install docker-ce docker-ce-cli containerd.io

也可以選擇某個版本安裝:

sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io 

8.配置用戶組 

sudo usermod -aG docker your-user  比如: 

sudo usermod -aG docker wb2010

二、卸載docker

1.刪除安裝包

sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc

2.刪除相關配置文件

dpkg -l | grep docker

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

3.卸載相關插件

sudo apt-get autoremove docker-ce-*

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM