本文咱們將通過按照Tomcat、按照MySQL、安裝Redis這三個實戰安裝,來熟悉在docker中怎麼安裝軟件,咱們使用端口映射,及數據卷的使用場景
安裝的總體步驟:
1:搜索鏡像;
2:拉取鏡像;
3:查看鏡像;
4:啓動鏡像==>需要做服務斷開映射;
5:停止鏡像;
6:移除鏡像
案例一:安裝tomcat
我們可以看到重啓成功了。來,訪問下試試:
這是爲什麼?
因爲新版tomcat做了修改。我們進入到tomcat目錄:
會發現有webapps及webapps.dist兩個目錄。我們知道,tomcat的應用一般都是存放在webapps中的。
我們進入到webapps看看:
我們發現,webapps文件夾下面竟然是空。
所以,我們訪問的時候,就是404了。
修改:將webapps目錄刪除掉,將webapps.dist修改成webapps再測試
再次訪問:
可以看到訪問到是tomcat10 。
那麼我想用tomcat8怎麼辦?
docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name tomcat8 billygoo/tomcat8-jdk8
案例二:mysql的安裝
本次以mysql5.7爲例:
docker pull mysql:5.7
。
啓動命令公式:
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
說明:-e就是設置環境變量。
通過命令行連接到mysql:
通過命令進入到容器中:
docker exec -it 2303fc3dbe68 /bin/bash
mysql -uroot -p
OK,進入到mysql中了。
接着我們通過命令,創建表,insert數據,然後在查詢。
create database dockerdb01;
use dockerdb01;
insert into t1 values(1,'kaigejava');
select * from t1;
在外部的win10系統中使用Navicat連接試試 。
mysql容器宿主機的ip:192.168.50.128.
OK .可以連接。
遇到的問題:
問題一:亂碼
當插入中文的時候,報錯
這是爲什麼呢?因爲docker中,默認的字符編碼導致的。
都是latin1的字符編碼。
問題2:刪除容器後,裏面的mysql數據如何辦?
是不是應該做個數據卷掛載。
綜上所述,我們按照mysql應該使用以下方式:
實戰版命令:
docker run -d -p 3306:3306 --privileged=true -v /宿主機上mysqllog全路徑:/容器內部log路徑 -v /宿主機mysqldata全部路徑:/容器中mysqldata路徑 -v /宿主機中mysqlconf全路徑:/容器中mysqlconfLuj -e MYSQL_ROOT_PASSWORD=123456 --name mysql57 mysql:5.7
在宿主機上創建mysql的conf文件:
內容爲:
vim my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
案例命令:
docker run -d -p 3306:3306 --privileged=true -v /root/mysql/log:/var/log/mysql -v /root/mysql/data:/var/lib/mysql -v /root/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql57 mysql:5.7
啓動後查看docker當前運行的容器:
案例3:常規安裝Redis
1:pull redis 6.0.8
2:在宿主機創建/app/redis
3:將任意redis.conf文件複製到宿主機的/app/redis中
4:修改redis.conf配置文件,使其能讓外部連接
5:啓動reids.實戰啓動命令:
docker run -p 6379:6379 --name reids608 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
注意:權限不足也會導致啓動redis失敗
複製過去的redis.conf需要賦權
重新賦權後:
查看當前運行的容器。有reids.OK
直通車,本系列教程已發佈文章,快速到達,《Docker學習系列》教程已經發布的內容如下:
【圖文教程】Windows11下安裝Docker Desktop
【填坑】在windows系統下安裝Docker Desktop後遷移鏡像位置
【Docker學習系列】Docker學習1-docker安裝
【Docker學習系列】Docker學習2-docker設置鏡像加速器
【Docker學習系列】Docker學習3-docker的run命令幹了什麼?docker爲什麼比虛擬機快?
【Docker學習系列】Docker學習2-常用命令之啓動命令和鏡像命令
【Docker學習系列】Docker學習系列3:常用命令之容器命令
【Docker學習系列】Docker學習4-常用命令之重要的容器命令
【Docker教程系列】Docker學習5-Docker鏡像理解
【Docker教程系列】Docker學習6-Docker鏡像commit操作案例
【Docker學習教程系列】7-如何將本地的Docker鏡像發佈到阿里雲
【Docker學習教程系列】8-如何將本地的Docker鏡像發佈到私服?
「Docker學習系列教程」10-Docker容器數據卷案例
結束語
如操作有問題歡迎去 我的個人博客(www.kaigejava.com)留言或者 微信公衆號(凱哥Java)留言交流哦。