一.Docker環境安裝
1.1 安裝工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
1.2 爲yum源添加docker倉庫位置
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.3 將軟件包信息提前在本地索引緩存
(非必要,建議執行,可以提升yum安裝的速度,報錯去掉fast試試)
sudo yum makecache fast
1.4 安裝Docker
sudo yum install docker-ce docker-ce-cli containerd.io
傻瓜式安裝 點擊y
1.5 啓動Docker
sudo systemctl start docker
1.6 設置開機自啓動
systemctl enable docker
1.7 安裝完成後可以測試一下,是否安裝成功
docker run hello-world
1.8 配置Docker鏡像加速器
配置加速器,否則下載鏡像的時候回比較慢,默認是從docker hub下載
vi /etc/docker/daemon.json
按 i 進入編輯模式 修改內容爲:
-
{
-
"registry-mirrors": ["https://5pfmrxk8.mirror.aliyuncs.com"]
-
}
按esc推遲INSERT模式後,shift + zz 保存並退出
重新加載配置:
sudo systemctl daemon-reload
重啓Docker:
sudo systemctl restart docker
二 基本項目運行環境搭建
2.1 安裝jdk1.8
2.1.1通過DOCKER SEARCH命令查找遠程鏡像
docker search jdk
2.1.2、選擇一個遠程鏡像下載到本地倉庫
docker pull kdvolder/jdk8
注意:如果沒指定版本號默認下載最新(latest)
2.1.3、查看鏡像是否下載到本地倉庫
docker images
2.1.4、在DOCKER容器中運行鏡像
docker run -di --name=jdk1.8 kdvolder/jdk8
此時,運行成功返回一長串類型uuid的東東,表示docker容器已經運行了jdk。
2.1.5、查看DOCKER進程JDK是否啓動成功
docker ps
2.1.6、進入容器查看JDK版本
進入容器
docker exec -it jdk1.8 /bin/bash
查看jsk版本
java -version
2.2 安裝MySql
這裏以5.7版本爲例 其他版本只需要改一下版本號就行了
sudo docker pull mysql:5.7
2.2.1 啓動MySql服務
-
docker run -p 3306:3306 --name myData \
-
-v /usr/local/docker/mysql/conf:/etc/mysql \
-
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-
-e MYSQL_ROOT_PASSWORD=123456 \
-
-d mysql:5.7
-p 3306:3306 : 第一個3306是liunx的端口號,第二個3306 是Docker容器的端口號.要想遠程訪問這個數據庫 就要先通過遠程訪問Linux的端口,再映射到docker容器的端口訪問mysql
–name myData: myData是容器啓動後的名字,可以自定義,但是建議見名知意
-e MYSQL_ROOT_PASSWORD=123456 : MySql啓動需要的賬戶密碼,默認root賬戶,我這裏設置123456
-v /usr/local/docker/mysql/data:/var/lib/mysql : 設置數據存儲路徑 冒號左面的表示宿主機的掛載目錄,冒號右邊則表示容器內部的路徑
-d : 表示後臺啓動該服務
mysql:5.7 : 安裝的數據庫的版本,我們拉取的是5.7版本
(注:複製的時候不要刪除 \ )
啓動成功後會返回一個容器id 如圖所示:
2.2.2 配置MySql外網連接權限
想要遠程連接數據庫,需要配置MySql的外網連接權限
進入mysql容器 這裏的名字就是剛纔設置的name
docker exec -it myData /bin/bash
進入數據庫 -u接用戶名(默認root) -p接密碼(剛纔設置的密碼)
mysql -uroot -p123456
設置外網訪問授權
grant all privileges on *.* to root@'%' identified by "password"
刷新權限
flush privileges
授權後 更新一下密碼,否則連接時候報錯1045
alter user 'root'@'%' identified with mysql_native_password by '123456'
再次刷新權限
flush privileges
退出mysql
docker 安裝mysql 以及redis 默認沒有配置文件,有需要的需要自己掛在配置文件(非必要步驟)
vim /etc/my.cnf
然後插入以下配置
-
[client]
-
default-character-set=utf8
-
-
[mysql]
-
default-character-set=utf8
-
-
[mysqld]
-
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
然後重啓mysql容器即可
執行命令:docker restart mysql (容器名稱) 進行重啓
2.2.3 開放服務器3306端口
-
systemctl start firewalld
-
firewall-cmd --zone=public --add-port=3306/tcp --permanent
-
firewall-cmd --reload
2.2.4 如果是雲平臺,需要配置安全組,放行3306端口
(不配置報錯2003)配置過程略
2.2.5 測試連接
2.3 安裝Redis
拉取Redis5.0的docker鏡像
docker pull redis:5
重啓一下docker ,防止redis啓動失敗
sudo systemctl restart docker
重啓後記得啓動MySql
docker start myData
創建以下文件及文件夾,方便配置及管理redis
-
mkdir -p /docker/redis
-
mkdir -p /docker/redis/data
-
touch /docker/redis/redis.conf
編輯配置文件
vim /docker/redis/redis.conf
-
# 不開啓守護進程
-
daemonize no
-
# 指定Redis端口爲6379(默認)
-
port 6379
-
# 不要綁定的主機地址,那樣無法在容器外部訪問
-
bind 0.0.0.0
-
#需要密碼則打開
-
requirepass 123456
-
# 持久化
-
appendonly yes
-
12345678910
啓動Redis
-
docker run \
-
-p 6379:6379 \
-
--name redis \
-
-v /docker/redis/redis.conf:/etc/redis/redis.conf \
-
-v /docker/redis/data:/data \
-
--restart=always \
-
-d redis:5 redis-server /etc/redis/redis.conf
啓動成功返回id
開放服務器6379端口
-
systemctl start firewalld
-
firewall-cmd --zone=public --add-port=6379/tcp --permanent
-
firewall-cmd --reload
雲平臺配置安全組
略
測試連接
2.4安裝Nginx
2.4.1 拉取鏡像文件
docker pull nginx:1.14.1
2.4.2、創建Nginx配置文件
啓動前需要先創建Nginx外部掛載的配置文件( /home/nginx/conf/nginx.conf)
之所以要先創建 , 是因爲Nginx本身容器只存在/etc/nginx 目錄 , 本身就不創建 nginx.conf 文件
當服務器和容器都不存在 nginx.conf 文件時, 執行啓動命令的時候 docker會將nginx.conf 作爲目錄創建 , 這並不是我們想要的結果 。
-
# 創建掛載目錄
-
mkdir -p /home/nginx/confmkdir -p /home/nginx/logmkdir -p /home/nginx/html
容器中的nginx.conf文件和conf.d文件夾複製到宿主機
-
# 生成容器
-
dockerrun --name nginx -p 9001:80 -d nginx# 將容器nginx.conf文件複製到宿主機docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf# 將容器conf.d文件夾下內容複製到宿主機docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d# 將容器中的html文件夾複製到宿主機docker cp nginx:/usr/share/nginx/html /home/nginx/
2.4.3.創建Nginx容器並運行
Docker 創建Nginx容器
-
# 關閉該容器
-
docker stop nginx
-
# 刪除該容器d
-
docker rm nginx
-
docker run \
-
-p 9002:80 \
-
--name nginx \
-
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-
-v /home/nginx/log:/var/log/nginx \
-
-v /home/nginx/html:/usr/share/nginx/html \
-
-d nginx:latest
命令 |
描述 |
–name nginx |
啓動容器的名字 |
-d |
後臺運行 |
-p 9002:80 |
將容器的 9002(後面那個) 端口映射到主機的 80(前面那個) 端口 |
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf |
掛載nginx.conf配置文件 |
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d |
掛載nginx配置文件 |
-v /home/nginx/log:/var/log/nginx |
掛載nginx日誌文件 |
-v /home/nginx/html:/usr/share/nginx/html |
掛載nginx內容 |
nginx:latest |
本地運行的版本 |
\ |
shell 命令換行 |
單行模式啓動
docker run -p 9002:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest
2.4.4、修改內容進行展示
# 重啓容器docker restart nginx
參考:https://blog.csdn.net/BThinker/article/details/123507820
https://blog.csdn.net/barry_yang3111/article/details/127099809