下載/安裝 Docker
centos 安裝 docker 官方網址:https://docs.docker.com/engine/install/centos/
1、卸載已經安裝的docker舊版本
如果機器之前已經安裝過 docker,需要先執行命令,清除舊 docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、設置 docker 鏡像(阿里雲鏡像)
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安裝 docker
sudo yum install docker-ce docker-ce-cli containerd.io
4、啟動 docker
sudo systemctl start docker
5、配置 docker 自啟動
sudo systemctl enable docker
6、驗證 docker 是否安裝成功
配置 Docker 阿里雲鏡像
這里使用的是 阿里雲提供的鏡像加速 ,登錄並且設置密碼之后在左側的 Docker Hub 鏡像站點 可以找到專屬加速器地址,復制下來。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xedj96w5.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker 常用命令
docker 服務相關命令
# 重啟 docker 服務
service docker restart
# 關閉 docker 服務
service docker stop
# 啟動 docker 服務
service dockers start
docker 鏡像相關命令
# 拉取鏡像
docker pull <鏡像名:tag>
# 查看鏡像
docker images
# 刪除鏡像
docker rmi 鏡像ID
# 強制刪除鏡像
docker rmi -f 鏡像ID
docker rm <容器名 或者 容器ID>
docker 容器相關命令
# 查看當前運行的容器
docker ps
# 查看所有存在的容器
docker ps -a
# 啟動容器
docker start 容器名稱/容器ID
# 停止容器
docker stop 容器名稱/容器ID
# 刪除容器
docker rm 容器名稱/容器ID
# 強制刪除容器
docker rm -f 容器名稱/容器ID
# 刪除所有容器(謹慎操作)
docker rm $(docker ps -a -q)
# 查看容器日志
docker logs -f 容器名稱/容器ID
# 進入容器
docker exec -it 容器名稱/容器ID /bin/bash
docker 運行相關命令
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
上面給出了一段 docker 容器運行命令,我們對其中一些關鍵參數進行分析:
- 端口映射
-p
:-p 3306:3306 表示將服務器 3306 端口映射到容器3306端口 - 指定容器名稱
--name
- 數據卷映射
-v
:例如,-v /mydata/mysql/log:/var/log/mysql 則表示將服務器上 /mydata/mysql/log 文件夾下的內容與容器中 /var/log/mysql 進行映射,這樣改變容器外文件內容就會同步到容器中,更方便的對容器進行操作,是常用參數 - 后台啟動
-d
Docker 安裝 Mysql 5.7
1、下載 mysql 鏡像
docker pull mysql:5.7
2、啟動 mysql 容器
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
3、創建mysql配置文件
vi /mydata/mysql/conf/my.cnf
# 添加如下內容
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
4、重啟 mysql
docker restart mysql
5、設置 mysql 自啟動
docker update mysql --restart=always
Docker 安裝 Mysql 8.0
1、下載 mysql 鏡像
docker pull mysql
2、啟動 mysql 容器
不建議將虛擬機端口映射設置為 3306,為了減少被攻擊的風險
正式的生成環境中建議將數據庫密碼設置復雜
docker run -p 33308:3306 --name mysql8 \
-v /mydata/mysql8/log:/var/log/mysql \
-v /mydata/mysql8/data:/var/lib/mysql \
-v /mydata/mysql8/conf:/etc/mysql \
-v /mydata/mysql8/mysql-files:/var/lib/mysql-files/ \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql
3、創建mysql配置文件
vi /mydata/mysql/conf/my.cnf
# 添加如下內容
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
4、重啟 mysql
docker restart mysql8
5、設置 mysql 自啟動
docker update mysql8 --restart=always
Mysql8 遠程工具連接配置
登錄 Docker 中的 Mysql 存在兩種情況
第一種
- 使用命令 docker exec -it mysql /bin/bash 進入容器
- 使用命令 mysql -uroot -p 按下 enter 再按 enter 直接登錄到 Mysql 里面去,因為里面 root 用戶對應的密碼是空的
- 給 root 用戶設置密碼
# 修改用戶對應的密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新權限
flush privileges;
- 需要遠程連接時,執行如下命令
CREATE USER 'root'@'%' IDENTIFIED BY '用戶密碼';
flush privileges;
- 創建出來的用戶是沒有任何創建數據庫權限的,需要執行如下命令進行授權
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
第二種
- 在執行生成 mysql 容器的時候,我們設置了 mysql 初始密碼的,使用那個密碼,即可直接登錄到 mysql
說明一下 Mysql 的配置 my.cnf
[mysqld]
# 禁止表名大小寫驗證
lower_case_table_names=1
# 禁用dns解析,所以在mysql的授權表中就不能使用主機名了,只能使用IP
skip-name-resolve
# mysql8的安全機制升級而需要修改的配置,不配置的話將無法登錄管理
default_authentication_plugin= mysql_native_password
Docker 安裝 Redis
1、下載 redis 鏡像
docker pull redis
2、創建配置文件
# 創建文件夾,與容器內部文件進行映射
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
3、啟動容器
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
4、運行 redis 客戶端
docker exec -it redis redis-cli
5、開啟 aof 持久化
vi /mydata/redis/conf/redis.conf
# 添加如下內容
appendonly yes
6、重啟 redis
docker restart redis
7、設置 redis 自啟動
docker update redis --restart=always
Docker 安裝 ELK
1、下載 elasticsearch 和 kibana
docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2
2、配置
# 創建文件夾,與容器內部文件夾映射
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
mkdir -p /mydata/elasticsearch/data
# 允許任意客戶端連接es
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
# 修改 /mydata/elasticsearch 文件夾下所有內容讀寫權限
chmod -R 777 /mydata/elasticsearch/
3、啟動 elasticsearch 容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx562m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
4、設置開機啟動 elasticsearch
docker update elasticsearch --restart=always
5、啟動 kibana 容器
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 -d kibana:7.4.2
6、設置開機啟動 kibana
docker update kibana --restart=always
Docker 安裝 nginx
1、隨便啟動一個 nginx 實例,只是為了復制出配置
sudo docker run -p 80:80 --name nginx -d nginx:1.10
2、將容器內的配置文件拷貝到 /mydata/nginx/conf/ 下
sudo mkdir -p /mydata/nginx/html
sudo mkdir -p /mydata/nginx/logs
sudo mkdir -p /mydata/nginx/conf
sudo docker container cp nginx:/etc/nginx/ /mydata/nginx/conf/
#由於拷貝完成后會在config中存在一個nginx文件夾,所以需要將它的內容移動到conf中
sudo mv /mydata/nginx/conf/nginx/* /mydata/nginx/conf/
sudo rm -rf /mydata/nginx/conf/nginx
# 修改 /mydata/nginx 文件夾讀寫權限
sudo chmod -R 777 /mydata/nginx
3、終止原容器
sudo docker stop nginx
4、刪除原容器
sudo docker rm nginx
5、創建新的 nginx 容器
sudo docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf/:/etc/nginx \
-d nginx:1.10
6、設置開機啟動 nginx
sudo docker update nginx --restart=always
7、創建/mydata/nginx/html/index.html
文件,測試是否能夠正常訪問
#添加文件 index.html
sudo echo '<h2>hello nginx!</h2>' >> /mydata/nginx/html/index.html
#訪問 http://nginx所在主機的IP:80/index.html
Docker 安裝 nacos
1、拉取nacos鏡像
docker pull nacos/nacos-server
- 創建數據庫
MySQL創建數據庫名為 nacos_config 並導入官方腳本
nacos-db.sql
3、配置
mkdir -p /mydata/nacos/logs
mkdir -p /mydata/nacos/init.d
touch /mydata/nacos/init.d/custom.properties
chmod -R 777 /mydata/nacos
4、啟動 nacos 容器
docker run -d --name nacos --network=host \
-e MODE=standalone \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=localhost \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_DATABASE_NUM=1 \
-v /mydata/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
-v /mydata/nacos/logs:/home/nacos/logs \
-p 8848:8848 \
nacos/nacos-server
Docker 安裝 seata-server
一、准備工作
1、Nacos安裝和配置
進入Nacos控制台,創建seata命名空間
記住命名空間ID自定義為seata_namespace_id
,后面需要
2、 Seata數據庫創建
創建數據庫名為seata
,執行Seata的Github官方源碼中提供的的MySQL數據庫腳本
MySQL腳本地址: https://github.com/seata/seata/blob/1.4.1/script/server/db/mysql.sql
二、 seata-server安裝
1、隨便啟動一個 seata-server實例,只是為了復制出配置
docker run -d --name seata -p 8091:8091 seataio/seata-server
2、將容器內的配置文件拷貝到 /mydata/seata/ 下
sudo mkdir -p /mydata/seata
sudo docker cp seata:/seata-server /mydata/seata
3、修改配置
修改registry.conf
配置,類型選擇nacos,namesapce為上文中在nacos新建的命名空間id即seata_namespace_id
,精簡如下:
vim /mydata/seata/seata-server/resources/registry.conf
registry {
type = "nacos"
loadBalance = "RandomLoadBalance"
loadBalanceVirtualNodes = 10
nacos {
application = "seata-server"
serverAddr = "127.0.0.1:8848"
namespace = "seata_namespace_id"
cluster = "default"
}
}
config {
type = "nacos"
nacos {
serverAddr = "127.0.0.1:8848"
namespace = "seata_namespace_id"
group = "SEATA_GROUP"
}
}
4、終止原容器
sudo docker stop seata
5、刪除原容器
sudo docker rm -f seata
6、推送Seata依賴配置至Nacos
從Seata的GitHub官方源碼獲取配置文件(config.txt)和推送腳本文件(nacos/nacos-config.sh),復制到服務器
地址:https://github.com/seata/seata/blob/develop/script/config-center
因為腳本的關系,文件存放目錄如下
/mydata/seata/script
└── config-center
├── config.txt
└── nacos
└── nacos-config.sh
修改配置文件 config.txt
vi /mydata/seata/script/config-center/config.txt
修改事務組
和MySQL連接信息
,修改信息如下:
# 修改默認事務組
service.vgroupMapping.mall_tx_group=default
#修改mysql連接信息
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://lcoalhost/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=root
執行推送命令
sh /mydata/seata/script/config-center/nacos/nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t seata_namespace_id -u nacos -w nacos
- -t seata_namespace_id 指定Nacos配置命名空間ID
- -g SEATA_GROUP 指定Nacos配置組名稱
如果有 init nacos config fail.
報錯信息,請檢查修改信息,如果有屬性修改提示failure
,請修改config.txt中屬性。
如果出現類似 cat: /tmp/tmp.rRGz1B7MUP: No such file or directory
的錯誤不用慌,重新執行推送命令直至成功。
推送執行完畢,到Nacos控制台查看配置是否已添加成功
7、啟動Seata容器
docker run -d --name seata --restart=always -p 8091:8091 \
-e SEATA_IP=localhost \
-e SEATA_CONFIG_NAME=file:/seata-server/resources/registry.conf \
-v /mydata/seata/seata-server/resources/registry.conf:/seata-server/resources/registry.conf \
-v /mydata/seata/logs:/root/logs \
seataio/seata-server
- 如果雲主機不支持tcp6監聽的,使用
--network=host
替代-p 8091:8091
指定Docker網絡模式為Host模式
Docker 安裝 RabbitMQ
1、拉取 RabbitMQ 鏡像
sudo docker pull rabbitmq:management
2、啟動 RabbitMQ 容器
sudo mkdir -p /mydata/rabbitmq
sudo docker run -d --name rabbitmq \
-v /mydata/rabbitmq:/var/lib/rabbitmq \
-p 5671:5671 \
-p 5672:5672 \
-p 4369:4369 \
-p 25672:25672 \
-p 15671:15671 \
-p 15672:15672 \
rabbitmq:management
3、設置開機啟動 RabbitMQ
sudo docker update rabbitmq --restart=always