一.linux環(huán)境準(zhǔn)備
1.Vmware
2.MobarXterm
報(bào)錯:啟動mobarXterm時 Network error: Connection timed out
Network error: Connection timed out
Session stopped
- Press <return> to exit tab
- Press R to restart session
- Press S to save terminal output to file
解決:在Vmware中關(guān)閉防火墻
關(guān)閉并禁用防火墻
systemctl stop firewalld
systemctl disable firewalld
查看狀態(tài)
systemctl status firewalld
參考【】?
二.Docker安裝
?
三.MySQL部署
1.安裝HeidiSQL
參考【】
2.創(chuàng)建數(shù)據(jù)庫docker
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
//默認(rèn)為latest版本的mysql
?參考
【https://www.bilibili.com/video/BV1HP4118797/?p=4&share_source=copy_web&vd_source=10835d8d64d716d4b383904238bd8741】
3.在HeidiSQL連接
打開左上角的"顯示器連接管理器"
點(diǎn)擊左下角"新建"
右邊填寫ip地址 {虛擬機(jī)設(shè)置以太網(wǎng)時,顯示的ip地址}
填寫用戶,密碼 {創(chuàng)建數(shù)據(jù)庫docker代碼中設(shè)置的}
填寫端口? { {創(chuàng)建數(shù)據(jù)庫docker代碼中 3306:3306? 填寫冒號前面的部分}
宿主機(jī)端口:容器內(nèi)端口
宿主機(jī)端口要改動,用于數(shù)據(jù)庫連接;各容器內(nèi)端口默認(rèn)3306,無需改動
點(diǎn)擊打開,保存更改,即可連接數(shù)據(jù)庫
4.鏡像下載
Docker Hub網(wǎng)站: ?http://hub.docker.com
5.其他docker命令
官方文檔:http://docs.docker.com
進(jìn)入官網(wǎng)-> Reference->Commandline reference->查閱命令和作用
下載鏡像
docker pull
?查看鏡像
docker images
刪除鏡像
docker rmi
?創(chuàng)建并運(yùn)行容器
docker run
停止容器
docker stop
啟動容器?
docker start
查看容器運(yùn)行狀態(tài)
docker ps
刪除容器
docker rm
查看容器 : 查看ip地址
docker inspect +容器名
進(jìn)入容器內(nèi)部執(zhí)行一些命令
docker exec
?查看運(yùn)行日志
docker logs
四.Nginx部署
1.ningx鏡像容器
1.去DockerHub【hub.docker.com】查看nginx鏡像倉庫及相關(guān)信息
2.拉取Nginx鏡像
docker pull nginx
3.查看鏡像
docker images
4.創(chuàng)建并允許Nginx容器
docker run -d --name nginx -p 80:80 nginx
5.查看運(yùn)行中容器
docker ps
//也可以加格式化方式訪問,格式會更加清爽
//docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
6.持續(xù)查看nginx日志
docker logs -f nginx
{ Ctrl + C 停止}?
7.訪問網(wǎng)頁???地址:http://虛擬機(jī)地址
發(fā)現(xiàn)nginx已啟動
8.進(jìn)入容器,查看容器內(nèi)目錄
docker exec -it nginx bash
//或者,可以進(jìn)入MySQL
1直接進(jìn)入客戶端
docker exec -it mysql mysql -uroot -p
2先進(jìn)入mysql容器 再進(jìn)入客戶端
//docker exec -it
//mysql mysql -uroot -p
//輸密碼
?{ exit 退出}
五.與容器掛載
1.數(shù)據(jù)卷掛載
數(shù)據(jù)卷是一個虛擬目錄,他把宿主機(jī)目錄映射到容器目錄,方便我們操作容器內(nèi)文件,或者方便遷移容器產(chǎn)生的數(shù)據(jù)。
下文以掛載nginx舉例
指定數(shù)據(jù)卷
這個操作包含容器的創(chuàng)建!
# 1.首先創(chuàng)建容器并指定數(shù)據(jù)卷,注意通過 -v 參數(shù)來指定數(shù)據(jù)卷
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx
//容器目錄
# 2.然后查看數(shù)據(jù)卷
docker volume ls
# 結(jié)果
DRIVER VOLUME NAME
local 29524ff09715d3688eae3f99803a2796558dbd00ca584a25a4bbc193ca82459f
local html
# 3.查看數(shù)據(jù)卷詳情
docker volume inspect html
# 結(jié)果
[
{
"CreatedAt": "2024-05-17T19:57:08+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/html/_data", //宿主機(jī)目錄
"Name": "html",
"Options": null,
"Scope": "local"
}
]
# 4.查看/var/lib/docker/volumes/html/_data目錄
ll /var/lib/docker/volumes/html/_data
# 可以看到與nginx的html目錄內(nèi)容一樣,結(jié)果如下:
總用量 8
-rw-r--r--. 1 root root 497 12月 28 2021 50x.html
-rw-r--r--. 1 root root 615 12月 28 2021 index.html
# 5.進(jìn)入該目錄,并隨意修改index.html內(nèi)容
cd /var/lib/docker/volumes/html/_data
vi index.html
# 6.打開頁面,查看效果
# 7.進(jìn)入容器內(nèi)部,查看/usr/share/nginx/html目錄內(nèi)的文件是否變化
docker exec -it nginx bash
修改文件
1.MobarXterm直接修改
在左導(dǎo)航欄找到地球->找到文件->進(jìn)入編輯器修改
2.vi指令法
vi index.html
進(jìn)入文件后
單擊s進(jìn)入編輯模式
單擊Esc退出編輯模式
退出編輯模式后輸入” :wq “ 保存并退出vi
退出編輯模式后輸入” :q “ 退出vi
補(bǔ)充
?2.本地目錄掛載
?下文以掛載mysql舉例
指定本地目錄
這個操作包含容器的創(chuàng)建!
3.查看掛載信息(補(bǔ)充)
docker inspect +容器名
其中Mounts部分就為掛載信息?
六.前端部署
七.后端部署
1.自定義鏡像
Dockerfile
基于jdk構(gòu)建鏡像:
Dockerfile要和jar包在同一個文件夾
# 基礎(chǔ)鏡像?。?!注意這個鏡像openjdk:11.0-jre-buster是要自己下的
FROM openjdk:11.0-jre-buster
# 設(shè)定時區(qū)
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷貝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
構(gòu)建鏡像:
進(jìn)入Dockerfile文件所在的文件夾執(zhí)行命令文章來源:http://www.zghlxwxcb.cn/news/detail-831822.html
# 進(jìn)入鏡像目錄
cd /root/demo
# 開始構(gòu)建
docker build -t docker-demo:1.0 .
//-t 表示給鏡像起名字
# 查看鏡像列表:
docker images
# 1.創(chuàng)建并運(yùn)行容器
docker run -d --name dd -p 8090:8090 docker-demo:1.0
# 2.查看容器
dps
2.自定義網(wǎng)絡(luò)
用來讓容器之間相互聯(lián)系的橋梁,在不同容器中可以互相訪問文章來源地址http://www.zghlxwxcb.cn/news/detail-831822.html
# 1.首先通過命令創(chuàng)建一個網(wǎng)絡(luò)
docker network create hmall
# 2.然后查看網(wǎng)絡(luò)
docker network ls
# 3.讓dd和mysql都加入該網(wǎng)絡(luò),注意,在加入網(wǎng)絡(luò)時可以通過--alias給容器起別名
# 這樣該網(wǎng)絡(luò)內(nèi)的其它容器可以用別名互相訪問!
# 3.1.mysql容器,指定別名為db,另外每一個容器都有一個別名是容器名
docker network connect hmall mysql --alias db
//通過docker inspect mysql ->networks 來查看容器mysql連接的網(wǎng)絡(luò)
# 3.2.db容器,也就是我們的java項(xiàng)目
docker network connect hmall dd
# 4.進(jìn)入dd容器,嘗試?yán)脛e名訪問db
# 4.1.進(jìn)入容器
docker exec -it dd bash
# 4.2.用db別名訪問
ping db
# 結(jié)果
PING db (172.18.0.2) 56(84) bytes of data.
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=1 ttl=64 time=0.070 ms
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=2 ttl=64 time=0.056 ms
# 4.3.用容器名訪問
ping mysql
# 結(jié)果:
PING mysql (172.18.0.2) 56(84) bytes of data.
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=1 ttl=64 time=0.044 ms
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=2 ttl=64 time=0.054 ms
到了這里,關(guān)于Linux環(huán)境下Docker實(shí)現(xiàn)項(xiàng)目部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!