docker部署教程
如今Docker的使用已經非常普遍,特別在一線互聯網公司。使用Docker技術可以幫助企業快速水平擴展服務,從而到達彈性部署業務的能力。在云服務概念興起之后,Docker的使用場景和范圍進一步發展,如今在微服務架構越來越流行的情況下,微服務+Docker的完美組合,更加方便微服務架構運維部署落地。
本文詳細解釋介紹Docker入門相關內容,Docker在微服務體系中的使用。在了解Docker之前我們先考慮幾個問題:
1、Docker是什么?2、為什么要使用Docker,它有什么優勢?帶著這些問題我們來看看下面的內容。
什么是Docker?
Docker 是世界領先的軟件容器平臺。開發人員利用 Docker 可以消除協作編碼時“在我的機器上可正常工作”的問題。運維人員利用 Docker 可以在隔離容器中并行運行和管理應用,獲得更好的計算密度。企業利用 Docker 可以構建敏捷的軟件交付管道,以更快的速度、更高的安全性和可靠的信譽為 Linux 和 Windows Server 應用發布新功能。
Docker 屬于 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。Docker 將應用程序與該程序的依賴,打包在一個文件里面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器里運行,就好像在真實的物理機上運行一樣。有了 Docker,就不用擔心環境問題。
總體來說,Docker 的接口相當簡單,用戶可以方便地創建和使用容器,把自己的應用放入容器。容器還可以進行版本管理、復制、分享、修改,就像管理普通的代碼一樣。
Docker 最初是 dotCloud 公司創始人 Solomon Hykes 在法國期間發起的一個公司內部項目,它是基于 dotCloud 公司多年云服務技術的一次革新,并于 2013 年 3 月以 Apache 2.0 授權協議開源,主要項目代碼在 GitHub 上進行維護。Docker 項目后來還加入了 Linux 基金會,并成立推動 開放容器聯盟。
Docker 自開源后受到廣泛的關注和討論,至今其 GitHub 項目已經超過 4 萬 6 千個星標和一萬多個 fork。甚至由于 Docker 項目的火爆,在 2013 年底,dotCloud 公司決定改名為 Docker。Docker 最初是在 Ubuntu 12.04 上開發實現的;Red Hat 則從 RHEL 6.5 開始對 Docker 進行支持;Google 也在其 PaaS 產品中廣泛應用 Docker。
為什么要使用Docker
容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷盡量小。傳統虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啟動 10 個隔離的應用即可。
具體說來,Docker 在如下幾個方面具有較大的優勢。
1、更快速的交付和部署
對開發和運維人員來說,最希望的就是一次創建或配置,可以在任意地方正常運行。
開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之后,運維人員可以直接使用這個容器來部署代碼。 Docker 可以快速創建容器,快速迭代應用程序,并讓整個過程全程可見,使團隊中的其他成員更容易理解應用程序是如何創建和工作的。 Docker 容器很輕很快!容器的啟動時間是秒級的,大量地節約開發、測試、部署的時間。
2、更高效的虛擬化
Docker 容器的運行不需要額外的 hypervisor 支持,它是內核級的虛擬化,因此可以實現更高的性能和效率。
3、更輕松的遷移和擴展
Docker 容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等。 這種兼容性可以讓用戶把一個應用程序從一個平臺直接遷移到另外一個。
4、更簡單的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和更新,從而實現自動化并且高效的管理。
Docker vs VM
從下圖可以看出,VM是一個運行在宿主機之上的完整的操作系統,VM運行自身操作系統會占用較多的CPU、內存、硬盤資源。Docker不同于VM,只包含應用程序以及依賴庫,基于libcontainer運行在宿主機上,并處于一個隔離的環境中,這使得Docker更加輕量高效,啟動容器只需幾秒鐘之內完成。由于Docker輕量、資源占用少,使得Docker可以輕易的應用到構建標準化的應用中。但Docker目前還不夠完善,比如隔離效果不如VM,共享宿主機操作系統的一些基礎庫等;網絡配置功能相對簡單,主要以橋接方式為主;查看日志也不夠方便靈活。
Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的創建和維護。使得 Docker 技術比虛擬機技術更為輕便、快捷。
作為一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有眾多的優勢。Docker 容器的啟動可以在秒級實現,這相比傳統的虛擬機方式要快得多;Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器。
相關概念
Docker是CS架構,主要有兩個概念:
Docker daemon: 運行在宿主機上,Docker守護進程,用戶通過Docker client(Docker命令)與Docker daemon交互
Docker client: Docker 命令行工具,是用戶使用Docker的主要方式,Docker client與Docker daemon通信并將結果返回給用戶,Docker client也可以通過socket或者RESTful api訪問遠程的Docker daemon
了解了Docker的組成,再來了解一下Docker的三個主要概念:
Docker image:鏡像是只讀的,鏡像中包含有需要運行的文件。鏡像用來創建container,一個鏡像可以運行多個container;鏡像可以通過Dockerfile創建,也可以從Docker hub/registry上下載。
Docker container:容器是Docker的運行組件,啟動一個鏡像就是一個容器,容器是一個隔離環境,多個容器之間不會相互影響,保證容器中的程序運行在一個相對安全的環境中。
Docker hub/registry: 共享和管理Docker鏡像,用戶可以上傳或者下載上面的鏡像,官方地址為 https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。
鏡像就相當于打包好的版本,鏡像啟動之后運行在容器中,倉庫就是裝存儲鏡像的地方。
好了,接下來就是具體進行docker實戰演練了!!!
這幾天學習了docker相關的教程,做個筆記,可以日后查看。
第一節課docker前戲
購買了一臺騰訊云的服務器。首先進行了服務器的系統更新:
- 1
第二步,更新內核
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y cat /boot/grub2/grub.cfg grub2-set-default 'CentOS Linux (4.20.13-1.el7.elrepo.x86_64) 7 (Core)'- 1
- 2
- 3
- 4
- 5
第三步,內核更新完成。進行重啟:
reboot- 1
通過 uname -r 查看系統的最新版本。
安裝掛載磁盤
通過 命令查看系統盤和磁盤:
- 1
第二步,格式化硬盤 ;
- 1
接著 執行 n p 1; wq
3.創建分區
- 1
4.將數據盤掛載
命令:
- 1
- 1
第五步:寫入硬盤啟動信息,下次啟動后自動掛載數據盤
echo /dev/vdb1 /data ext4 defaults 0 0 >> /etc/fstab- 1
第二課docker安裝及注意事項
接下來就是在購買的云服務器上進行docker的安裝。具體步驟如下:
創建一個docker 文件夾: mkdir docker
第一步:下載一個工具類
- 1
- 2
- 3
第二步:添加docker源
yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo- 1
- 2
- 3
第三步,安裝docker
yum install -y docker-ce- 1
安裝完docker之后,就要啟動docker服務了。
systemctl start docker- 1
可以通過以下命令,查看docker服務開啟的狀態
systemctl status docker- 1
讓dokcer服務開啟自動啟動
systemctl enable docker- 1
查看docker的信息
docker info- 1
查看信息的時候,會發現有報錯。如下:
WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled- 1
- 2
解決辦法,編輯
vim /etc/sysctl.conf- 1
文件增加下面兩行配置
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1- 1
- 2
然后執行命令:
sysctl -p- 1
查看信息的時候,如果出現報錯,如下:
WARNING: IPv4 forwarding is disabled- 1
解決辦法,編輯
vim /etc/sysctl.conf- 1
添加一行配置文件
net.ipv4.ip_forward=1- 1
重啟docker的命令:
systemctl daemon-reload systemctl restart docker- 1
- 2
下載安裝docker -compose。
第一步,下載一個compose上傳到服務器,或者使用該地址下載
- 1
網速慢,用百度云:鏈接:https://pan.baidu.com/s/1Dxz-QnxECHW3fLFQjsndag
提取碼:uumo
復制這段內容后打開百度網盤手機App,操作更方便哦
第二步:給docker-compose添加可執行權限
- 1
第三步:
docker-compose --version- 1
如何卸載 docker -compose
rm /usr/local/bin/docker-compose- 1
第三課docker安裝 openvpn
https://docs.docker.com/compose/install/
創建 openvpn文件夾 mkdir openvpn
在data掛載盤,進行編輯配置文件
- 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
cd 到 openvpn路徑下
docker-compose run --rm openvpn ovpn_genconfig -u udp://129.211.130.142- 1
初始化
docker-compose run --rm openvpn ovpn_initpki- 1
這些是提示的輸入
Enter PEM pass phrase: 輸入123456(你是看不見的) Verifying - Enter PEM pass phrase: 輸入123456(你是看不見的) Common Name (eg: your user, host, or server name) [Easy-RSA CA]:回車一下 Enter pass phrase for /etc/openvpn/pki/private/ca.key:輸入123456 ```- 1
- 2
- 3
- 4
// 開啟 openvpn服務
docker-compose up -d openvpn- 1
創建一個客戶端用戶
docker-compose run --rm openvpn easyrsa build-client-full virtuousOne nopass Enter pass phrase for /etc/openvpn/pki/private/ca.key:輸入123456- 1
- 2
把證書導入到virtuousOne.ovpn中
在openvpn中創建文件夾: mkdir clientovpn
- 1
同時,去云服務控制臺開啟端口
win客戶端下載一個openVPN的連接工具:地址 https://openvpn.net/index.php/open-source/downloads.html
同時,我們把證書下載下來,放到安裝在win的conf目錄下
查看哪些是正常啟動的:
- 1
第四課–docker實戰-安裝mysql、redis
在data目錄下創建mysql: mkdir mysql
然后再里面創建配置文件,配置好配置文件
- 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
安裝mysql
docker run --restart=always --name mysql \-v /data/docker/mysql/data:/var/lib/mysql -v /data/docker/mysql:/etc/mysql/conf.d \ -v /etc/localtime:/etc/localtime:ro \ -e MYSQL_ROOT_PASSWORD='123456' -d mysql:5.7.25 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci- 1
- 2
- 3
- 4
設置mysql的版本
將安裝到docker的mysql,設置到openvpn的網絡中
- 1
查看mysql在該容器中的 網絡IP
docker exec mysql cat /etc/hosts- 1
查看openvpn的網絡IP
docker exec openvpn cat /etc/hosts- 1
本地計算機開啟openVPN GUI
然后就可以遠程連接mysql.
在mysql中查看設置的配置連接池:
show VARIABLES like ‘%max_connections%’;
安裝redis
在data目錄下,創建redis文件夾。mkdir redis
docker run --restart=always --name redis -p 6379:6379 -v /data/redis/data:/data -d redis --appendonly yes- 1
安裝完成,進行配置redis的openvpn
docker network connect openvpn_default redis- 1
查看redis在openvpn對應的IP
docker exec redis cat /etc/hosts- 1
查看docker對應的openvpn對應的IP
docker exec openvpn cat /etc/hosts- 1
成功連接后,即可表示安裝完成!
第五課–docker實戰-安裝nginx,配置https
首先創建 mdkir nginx 。然后繼續
在nginx文件夾下創建三個文件建
- 1
- 2
- 3
下一步,在www目錄下編輯index.html
cd www vim index.html- 1
- 2
在nginx中 創建 nginx.conf文件
vim nginx.conf- 1
編輯的內容是:
#user nobody; user root; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events {use epoll; worker_connections 20480; } http {include mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main; #下面三行是nginx解決跨域問題#add_header Access-Control-Allow-Origin *;# add_header Access-Control-Allow-Headers X-Requested-With;#add_header Access-Control-Allow-Methods GET,POST,OPTIONS;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;#關閉顯示nginx版本號server_tokens off;include /etc/nginx/conf.d/*.conf; }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
在 conf.d中創建 docker.virtuousone.cn.conf文件,編輯的內容為:
server{listen 443 ssl http2 default_server ;server_name docker.virtuousone.cn;index index.html index.htm ;root /usr/share/nginx/html; ssl on;ssl_certificate /etc/nginx/cert/fullchain.pem;ssl_certificate_key /etc/nginx/cert/privkey.pem;ssl_protocols TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;ssl_session_timeout 10m;ssl_session_cache builtin:1000 shared:SSL:10m; #SSL 會話緩存類型和大小ssl_buffer_size 1400; # 1400 bytes to fit in one MTUadd_header Strict-Transport-Security max-age=15768000;ssl_stapling on;ssl_stapling_verify on;#如果使用這個AES256+EECDH:AES256+EDH:!aNULL 當nginx開啟http2的時候,瀏覽器會訪問不了,chrome瀏覽器報錯內容ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY#http://www.chinaz.com/web/2016/0323/515111.shtml 參考這個#ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;#強烈推薦使用下面這個ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; # location / {# proxy_pass http://127.0.0.1:5250;# proxy_set_header Host $host;# proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #}#access_log /home/wwwlogs/access.log;location ~* \.(jpg|jpeg|png|gif|ico|css|js|mp3)$ {expires 30d;}}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
復制文件
cp docker.virtuousone.cn.conf api.virtuousone.cn.conf.bak docker.virtuousone.cn.conf test.virtuousone.cn.conf.bak- 1
- 2
生成證書:
docker run --name certbot -p 443:443 -p 80:80 -v /data/certbot/letsencrypt:/etc/letsencrypt -d certbot/certbot certonly --standalone --agree-tos --non-interactive --email 2812927266@qq.com -d docker.virtuousone.cn -d api.virtuousone.cn -d test.virtuousone.cn- 1
這個證書的有效期是90天,到期之后,可以更新證書:
docker run --name certbot -p 443:443 -p 80:80 -v /data/docker/certbot/letsencrypt:/etc/letsencrypt -d certbot/certbot certonly renew --force-renew- 1
在域名網站開啟二級域名以及 開通443和80端口
進入到cerbot下。的 letsencrypt的live的目錄下
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
復制生成的證書 到cert中
cp fullchain.pem privkey.pem /data/nginx/cert- 1
進入到cert目錄下
cd /data/nginx/cert ls cd ..- 1
- 2
- 3
查看 .conf文件
cat conf.d/docker.virtuousone.cn.conf- 1
拉取并啟動 nginx
docker run --net host --restart=always --name nginx -e TZ="Asia/Shanghai" -v /data/nginx/nginx.conf:/etc/nginx/nginx.conf -v /etc/localtime:/etc/localtime:ro -v /data/nginx/conf.d:/etc/nginx/conf.d -v /data/nginx/cert:/etc/nginx/cert -v /data/nginx/www:/usr/share/nginx/html -d nginx- 1
在 conf.d中的 docker.virtuousone.cn.conf中
添加一個Server配置
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
重啟nginx服務
docker restart nginx- 1
在瀏覽器中輸入二級域名,就可以看到nginx配置成功的了。
同時,可以在https://www.sslshopper.com/ssl-checker.html
進行檢測配置的https的安全級別。
第六課 docker實戰-spring boot項目docker容器化的部署
周末學習了下如何在docker中部署spring boot項目。
第一步,是打包。
在data目錄下,創建 api文件夾和 test文件夾
- 1
進入api,創建一個Dockerfile文件夾
進行編輯:
- 1
里面的內容為:
FROM java:8 MAINTAINER virtuousone <2812927266@qq.com> VOLUME /tmp ADD docker-0.0.1-SNAPSHOT.jar app.jar #RUN bash -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar --spring.profiles.active=prod" ]- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
同理,在test中的Dockerfile中編輯內容:
[root@virtuousOne test]# cat Dockerfile FROM java:8 MAINTAINER virtuousone <2812927266@qq.com> VOLUME /tmp ADD docker-0.0.1-SNAPSHOT.jar app.jar #RUN bash -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar --spring.profiles.active=test" ]- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
將打包的spring boot項目,傳到api文件夾中。
復制一份,到test中
- 1
修改在nginx中的nginx.conf的配置:
vim /data/nginx/conf.d/api.virtuousone.cn.conf- 1
修改nginx對應的轉發配置(方式一):是根據宿主主機映射端口,進行訪問。
server{listen 443 ssl http2;#listen 80;server_name test.virtuousone.cn;index index.html index.htm ;root /usr/share/nginx/html; ssl_certificate /etc/nginx/cert/fullchain.pem;ssl_certificate_key /etc/nginx/cert/privkey.pem;ssl_protocols TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;ssl_session_timeout 10m;ssl_session_cache builtin:1000 shared:SSL:10m; #SSL 會話緩存類型和大小ssl_buffer_size 1400; # 1400 bytes to fit in one MTUadd_header Strict-Transport-Security max-age=15768000;ssl_stapling on;ssl_stapling_verify on;#如果使用這個AES256+EECDH:AES256+EDH:!aNULL 當nginx開啟http2的時候,瀏覽器會訪問不了,chrome瀏覽器報錯內容ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY#http://www.chinaz.com/web/2016/0323/515111.shtml 參考這個#ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;#強烈推薦使用下面這個ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;location / {proxy_pass http://127.0.0.1:10001;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#access_log /home/wwwlogs/access.log;location ~* \.(jpg|jpeg|png|gif|ico|css|js|mp3)$ {expires 30d;}}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
改變端口號,就可以寫到test中
修改nginx對應的轉發配置(方式二):根據容器的IP端口映射訪問
1.通過該命令,查詢下該項目對應的ID
- 1
2.通過該ID,查詢在docker容器中的IP:
- 1
3,修改conf.d里面的配置文件的IP
- 1
這樣就可以了。另一個環境的也是同理這樣解決!
以上兩種修改conf.d路徑下的test.virtuousone.cn.conf的方式,選擇一種即可。
第三步,在docker鏡像中執行打包上去的項目:
執行api環境中的:
- 1
執行test環境中的:
docker build -t virtuousone/docker-test-springboot:1.0 .- 1
分別運行兩個環境的項目:
api環境
- 1
test環境
docker run --restart=always --name docker-test-springboot -p 10001:8080 -d virtuousone/docker-test-springboot:1.0- 1
重啟nginx容器:
docker restart nginx- 1
查看nginx中的日志:
docker logs -f nginx- 1
如果日志顯示正常,就說明已經發布部署城里了。我們可以進行訪問了。
刪除容器和文件夾,才能刪掉我們刪掉的安裝程序。
刪除容器具體命令:
- 1
刪除文件夾命令:
rm -rf 文件夾- 1
第七課 基于docker的nginx進行集群部署
基于上一課,這次主要講解基于nginx的集群部署。
查看之前的容器:
- 1
基于之前放上去的springboot的項目的容器,再進行一個實例化。
docker run --restart=always --name docker-product-springboot -p 10002:8080 -d virtuousone/docker-api-springboot:1.0- 1
可以查看該容器在docker中的ip:
docker exec 70708b55281c cat /etc/hosts- 1
修改nginx中的配置(配置機制一:按照輪詢的機制):
- 1
- 2
修改內容如下:
upstream api{ server 127.0.0.1:10000; server 127.0.0.1:10002;}
同時,將location中的 proxy_pass 修改為:
proxy_pass http://api;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
修改ngxin的配置(基于權重的方式進行配置:)
}
- 1
- 2
- 3
- 4
- 5
- 6
其他配置一樣,這是第二種配置的方式。
重啟ngxin之后,就可以了。集群部署多個項目到此完成了!
進行驗證:
可以關閉其中的一個
- 1
當關閉兩個后,就502報錯了。沒法訪問了。驗證完成。
第八課 docker實戰-安裝rabbitmq及其使用
在docker目錄下創建一個rabbitmq
- 1
rabbitmq的安裝比較簡單。
執行命令
- 1
- 2
- 3
- 4
將其網絡添加到openvpn中,就可以進行內網使用了。
docker network connect openvpn_default rabbitmq- 1
查看rabbitmq在openvpn對應的IP
docker exec rabbitmq cat /etc/hosts- 1
打開openvpn,就可以先查看Web管理的rabbitmq,即可表示安裝成功了。
總結
以上是生活随笔為你收集整理的docker部署教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GJB 质量分析报告(模板)
- 下一篇: 笔记——数据归一化 scikit-lea