Docker學習11-Docker常規方式安裝軟件

本文咱們將通過按照Tomcat、按照MySQL、安裝Redis這三個實戰安裝,來熟悉在docker中怎麼安裝軟件,咱們使用端口映射,及數據卷的使用場景

安裝的總體步驟:

1:搜索鏡像;

2:拉取鏡像;

3:查看鏡像;

4:啓動鏡像==>需要做服務斷開映射;

5:停止鏡像;

6:移除鏡像

fe4f13926561bba567aaf99e787c8d25.png

案例一:安裝tomcat

0b07d1a3f414bc647064a6c51cbb65a0.png3478966cfa677b6cf12f454c8151a4aa.png

6b1bc040dab3466de0870a85a8c2d9f7.png

我們可以看到重啓成功了。來,訪問下試試:

8f2f1f2046d1ab53e1ba7f80e75edc63.png

這是爲什麼?

因爲新版tomcat做了修改。我們進入到tomcat目錄:

3e6a4234fd1ccd484eedfdc5c1119610.png

會發現有webapps及webapps.dist兩個目錄。我們知道,tomcat的應用一般都是存放在webapps中的。

我們進入到webapps看看:

8c574f5d8eb5516bbdf252b149a922bd.png

我們發現,webapps文件夾下面竟然是空。

所以,我們訪問的時候,就是404了。

修改:將webapps目錄刪除掉,將webapps.dist修改成webapps再測試

8971efc3c6cb0e615b4cbc3f23e86dce.png

92a7edfd13e2e9b5afe2acd22f350a98.png

再次訪問:

可以看到訪問到是tomcat10 。

那麼我想用tomcat8怎麼辦?

docker pull billygoo/tomcat8-jdk8

docker run -d -p 8080:8080 --name tomcat8 billygoo/tomcat8-jdk8

71be4a16c0311e109ffff2b7028671b3.png

案例二:mysql的安裝

本次以mysql5.7爲例:

docker pull mysql:5.7

 

啓動命令公式:

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

說明:-e就是設置環境變量。e693a0f3dc0014d1af6604f34f949076.png

通過命令行連接到mysql:

通過命令進入到容器中:

docker exec -it 2303fc3dbe68 /bin/bash

489862725e39b187c4bcfdce449a44ee.png

mysql -uroot -p

e96f4c910dc32584e56a568624307327.png

OK,進入到mysql中了。

fa7a34e493139a4c1651cfcd7581212e.png

接着我們通過命令,創建表,insert數據,然後在查詢。

create database dockerdb01;

use dockerdb01;

insert into t1 values(1,'kaigejava');

select * from t1;

794bb9b14f91c226f3635c379eaaf8b4.png

在外部的win10系統中使用Navicat連接試試 。

mysql容器宿主機的ip:192.168.50.128.

fab67edea126a7c1c96e34fef04f4c23.png

OK .可以連接。

遇到的問題:

問題一:亂碼

當插入中文的時候,報錯

920442fbae6011ef29670a80180e709f.png

這是爲什麼呢?因爲docker中,默認的字符編碼導致的。

776d6c521582fa02a47b9930fd0ba9df.png

都是latin1的字符編碼。

問題2:刪除容器後,裏面的mysql數據如何辦?

是不是應該做個數據卷掛載。

綜上所述,我們按照mysql應該使用以下方式:

f26f8d1f775b5b6652043eb4d92759af.png

 

實戰版命令:

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

edbf5277c243efe04ee0c8ecd1ca8fd9.png

案例命令:

 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當前運行的容器:

a6ae952aeb80132a675e168ddab21a3a.png

案例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

72feae346153d802602d523066b372bb.png

499fe2c518e8b124cfbf099110b4a498.png

注意:權限不足也會導致啓動redis失敗

複製過去的redis.conf需要賦權

5c4bd45e15f499013341820c0e7a8103.png

4b46000fb91c728a5eb1e8c7c92369e5.png

重新賦權後:

093ac5c8caac0e3b2f8b3098047be8a5.png

查看當前運行的容器。有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學習系列教程」9-Docker容器數據卷介紹

「Docker學習系列教程」10-Docker容器數據卷案例

【Docker學習教程系列彙總】筆記及遇到問題解決文章

 

 

結束語

如操作有問題歡迎去 我的個人博客(www.kaigejava.com)留言或者 微信公衆號(凱哥Java)留言交流哦。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章