隨着微服務的應用,docker的使用現在越來越廣泛,在項目中積累的學習經驗在此記錄一下:
docker詳解傳送門:https://blog.csdn.net/deng624796905/article/details/86493330
一、安裝部署docker環境
1)在線安裝docker
無論系統中是否有Docker,我們需要先卸載老版本,我們需要安裝新版本CE,其實我們應該知道Docker有分CE社區版本和EE企業版,後者是需要付費的,我們安裝CE免費版本。
yum remove docker docker-client docker-client-latest
docker-common docker-latest docker-latest-logrotate docker-logrotate
docker-selinux docker-engine-selinux docker-engine -y
1. 安裝docker-ce以及必要的包
yum install -y yum-utils device-mapper-persistent-data lvm2
2. 添加穩定版本源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3. 安裝docker-ce
yum install docker-ce
安裝過程如果詢問到是否繼續OK,全部輸入Y繼續
4. 啓動docker
systemctl start docker
5. 檢測docker是否安裝成功
docker run hello-world
最後,如果我們想要卸載docker,可以輸入"yum remove docker-ce"執行卸載,以及"rm -rf /var/lib/docker"清除所有的文件目錄
2)離線安裝docker
1. 在目標計算機上將tgz包上傳至/root路徑下,並解壓centos-local.tgz文件
cd /root
tar -xvzf centos-local.tgz
2. 安裝createrepo
cd /root/docker-ce-local
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
#注:createrepo版本可能不一樣,根據自己下載的包的版本安裝
3. 新增docker-ce-local.repo源文件,寫入以下內容
# vi /etc/yum.repos.d/docker-ce-local.repo
[docker-ce-local]
name=Local Yum
baseurl=file:///root/docker-ce-local/
gpgcheck=1
gpgkey=file:///root/docker-ce-local/gpg
enabled=1
4. 生成源索引及緩存
createrepo /root/docker-ce-local
yum makecache
5. 安裝docker-ce,並忽略gpg校驗
yum install docker-ce --nogpgcheck
6. 啓動服務並測試
systemctl start docker.service
docker version
7. 部署過程中遇到的問題整理
尋找yum源錯誤問題
a. 將/etc/yum.repos.d/文件夾下的yum源備份,先移除出該文件夾
b. 執行上述安裝步驟中的2
c. 安裝部署docker-ce,驗證通過後將yum源還原
二、安裝JDK(這裏安裝的是jdk-8u221-linux-x64.tar.gz)
百度網盤鏈接: https://pan.baidu.com/s/1RfjTxZ6e6fg37aAn2GlpcQ
提取碼: en8f
複製這段內容後打開百度網盤手機App,操作更方便哦
解壓jdk
移動文件到usr/java
配置環境變量 vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_221
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
保存:wq,退出
更新環境變量配置,通過命令source /etc/profile讓profile文件立即生效,在cmd中輸入Java或Java -version驗證是否配置成功
2) docker離線JDK
佔位,後續更新
三、部署安裝MySQL
1) 在線部署安裝
docker pull mysql:5.7.23 拉取MySQL鏡像
docker run -d --network host --name aeccmysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin123 mysql:5.7.23 --lower_case_table_names=1 以host方式啓動MySQL容器,並且MySQL忽略大小寫
測試連接
2) 離線部署安裝
佔位,後續更新
四、部署安裝Redis
1) 在線部署安裝
docker pull redis:3.2.8 拉取指定版本的redis鏡像
docker run -d --network host --name aeccredis -p 6379:6379 redis:3.2.8 以host方式啓動Redis容器
測試連接
2) 離線部署安裝
佔位,後續更新
五、部署安裝nginx
1) 在線部署安裝
從hup上pull鏡像
docker pull hub.c.163.com/library/nginx
創建將要掛載的目錄(這裏以實際項目業務爲例)
mkdir -p /home/aeccspringcloud/website/nginx/{conf,conf.d,html,logs}
先要有配置文件才能啓動容器
#######============nginx.conf ==============
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
#######============default.conf ==============
server {
listen 9002;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
# 指向我們打包後上傳的前端?文件
root /usr/share/nginx/html/sys;
index index.html;
try_files $uri $uri/ /index.html;
}
location /jwt/ {
# 轉發請求到後端服務⽹網關
proxy_pass http://172.20.0.16:8765/jwt/;
}
# 通過路路勁前綴將請求轉發到後端服務器器
location /api/ {
proxy_pass http://172.20.0.16:8765/api/;
}
# 文件上傳通過zuul過濾
location /zuul/ {
proxy_pass http://172.20.0.16:8765/zuul/;
}
# 文件服務器通過uploada過濾
location /upload/ {
default_type image/jpeg;
proxy_pass http://172.20.0.16:8763/upload/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
啓動容器
其中-v後跟的是你放置在nginx中的項目路徑
docker run --name aeccnginx -d -p 9002:9002 -v /home/aeccspringcloud/website/nginx/html/:/usr/share/nginx/html -v /home/aeccspringcloud/website/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/aeccspringcloud/website/nginx/logs:/var/log/nginx -v /home/aeccspringcloud/website/nginx/conf.d:/etc/nginx/conf.d -d hub.c.163.com/library/nginx:latest
網頁訪問驗證成功與否
2) 離線部署安裝
佔位,後續更新
六、部署安裝Tomcat(根據需求,spring boot項目無需安裝)
1) 在線部署安裝
拉取鏡像
docker pull hub.c.163.com/library/tomcat:latest
或
docker pull tomcat:8.5.38-jre8
啓動tomcat
docker run -d --name aecctomcat -p 9422:8080 hub.c.163.com/library/tomcat:latest
掛在宿主機目錄方式啓動
docker run -d --name aecctomcat -p 端口:8端口 -v / 項目路徑:/usr/local/tomcat/webapps hub.c.163.com/library/tomcat:latest
進入交互模式
docker exec -it aecctomcat /bin/bash
將準備好的 web 應用拷貝到 docker my-tomcat 容器, 這裏拷貝進去之後會自動部署, 直接就可以訪問
docker cp xxl-job-admin.war aecctomcat:/usr/local/tomcat/webapps(示例)
訪問網站驗證是否成功運行
2) 離線部署安裝
佔位,後續更新
七、部署安裝rabbitmq(根據業務需求)
1) 在線部署安裝
docker pull rabbitmq:management 拉取rabbitmq鏡像
docker run -d --network host --name aeccrabbit -e RABBITMQ_DEFAULT_USER=dev -e RABBITMQ_DEFAULT_PASS=dev123 -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management 以host方式啓動rabbitmq
測試rabbitmq
2) 離線部署安裝
佔位,後續更新