Docker 之常見應用部署
阿新 • • 發佈:2020-08-26
本文教大家如何將常見的應用使用 Docker 進行部署,鞏固大家 Docker 命令的學習,下文教大家如何構建屬於我們自己的 Docker 映象。
## Tomcat
拉取映象。
```shell
docker pull tomcat
```
建立容器。
```shell
docker run -di --name tomcat -p 8080:8080 tomcat
```
進入容器。
```shell
docker exec -it tomcat /bin/bash
```
檢視 `webapps` 目錄下是否有 `ROOT` 專案,我們熟悉的 Tomcat 貓頁面一般就在這個專案中。
![](https://mrhelloworld.com/resources/articles/docker/image-20200812190025868.png " ")
如上圖所示,該目錄下空空如也,其實 Tomcat 在比較新的版本中將預設的 `ROOT` 專案放在了 `webapps.dist` 中,如果你真想訪問 http://192.168.10.10:8080/ 看到 Tomcat 貓,將其複製至 `webapps` 即可。
![](https://mrhelloworld.com/resources/articles/docker/image-20200812190507577.png " ")
訪問:http://192.168.10.10:8080/ 即可看到熟悉的面孔。
![](https://mrhelloworld.com/resources/articles/docker/image-20200812190553942.png " ")
## Nginx
拉取映象。
```shell
docker pull nginx
```
建立 Nginx 容器。
```shell
docker run -di --name nginx -p 80:80 nginx
```
將容器內的配置檔案拷貝到指定目錄(請先提前建立好目錄)。
```shell
docker cp nginx:/etc/nginx /mydata/docker_nginx
```
重新命名宿主機 `/mydata/docker_nginx/nginx` 為 `/mydata/docker_nginx/conf`
```shell
mv /mydata/docker_nginx/nginx/ /mydata/docker_nginx/conf
```
終止並刪除容器(目錄掛載操作只能在建立容器時設定)。
```shell
docker stop nginx
docker rm nginx
```
建立 Nginx 容器,並將容器中的 `/etc/nginx` 目錄和宿主機的 `/mydata/nginx/conf` 目錄進行掛載。
```shell
docker run -di --name nginx -p 80:80 -v /mydata/docker_nginx/conf:/etc/nginx nginx
```
訪問宿主機:http://192.168.10.10:80/ 結果如下:
![](https://mrhelloworld.com/resources/articles/docker/image-20200812183235528.png " ")
## MySQL
拉取映象。
```shell
docker pull mysql:8.0.21
```
建立容器。
```shell
docker run -di --name mysql8 -p 3306:3306 -v /mydata/docker_mysql/conf:/etc/mysql/conf.d -v /mydata/docker_mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0.21
```
- `-p`:代表埠對映,格式為 宿主機對映埠:容器執行埠。
- `-e`:代表新增環境變數 `MYSQL_ROOT_PASSWORD` 是 root 使用者的登陸密碼。
連線容器中的 MySQL 時,只需要連線宿主機的 IP + 指定的對映埠即可。
![](https://mrhelloworld.com/resources/articles/docker/image-20200812183927191.png " ")
也可以進入容器並使用 MySQL 命令開啟客戶端。
```shell
# 進入容器
docker exec -it mysql8 /bin/bash
# 使用 MySQL 命令開啟客戶端
mysql -uroot -p1234 --default-character-set=utf8
```
## Redis
拉取映象。
```shell
docker pull redis
```
建立容器。
```shell
docker run -di --name redis -p 6379:6379 redis
```
連線容器中的 Redis 時,只需要連線宿主機的 IP + 指定的對映埠即可。
![](https://mrhelloworld.com/resources/articles/docker/image-20200812191215218.png " ")
## MongoDB
拉取映象。
```shell
docker pull mongo
```
建立容器。
```shell
docker run -di --name mongo -p 27017:27017 mongo
```
連線容器中的 MongoDB 時,只需要連線宿主機的 IP + 指定的對映埠即可。
![](https://mrhelloworld.com/resources/articles/docker/image-20200812205454858.png " ")
## Elasticsearch
拉取映象。
```shell
docker pull elasticsearch:7.8.1
```
建立容器,為了方便演示,修改 ES 啟動佔用記憶體大小。
```shell
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx512m" -e "discovery.type=single-node" -di --name es -p 9200:9200 -p 9300:9300 -p 5601:5601 -v /mydata/docker_es/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.8.1
```
安裝中文分詞器。
```shell
# 進入容器
docker exec -it es /bin/bash
# 安裝中文分詞器
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.1/elasticsearch-analysis-ik-7.8.1.zip
# 重啟 es
docker restart es
```
訪問:http://192.168.10.10:9200/ 結果如下:
![](https://mrhelloworld.com/resources/articles/docker/image-20200812221830337.png " ")
### 安裝 head 外掛
拉取映象。
```shell
docker pull mobz/elasticsearch-head:5
```
建立容器。
```shell
docker run -di --name es-head -p 9100:9100 mobz/elasticsearch-head:5
```
在瀏覽器中開啟 elasticsearch-head 頁面,填入 Elasticsearch 地址。
![](https://mrhelloworld.com/resources/articles/docker/image-20200814201247072.png " ")
這裡會出現跨域拒絕訪問的問題,進入 elasticsearch 容器內部,修改配置檔案 `elasticsearch.yml`。
```shell
# 進入容器
docker exec -it 容器ID或名稱 /bin/bash
# 修改配置檔案
vi config/elasticsearch.yml
```
在 `elasticsearch.yml` 中新增如下內容。
```shell
# 跨域請求配置(為了讓類似 head 的第三方外掛可以請求 es)
http.cors.enabled: true
http.cors.allow-origin: "*"
```
重啟容器。
```shell
docker restart es
```
![](https://mrhelloworld.com/resources/articles/docker/image-20200814201950953.png " ")
## Solr
拉取映象。
```shell
docker pull solr
```
建立容器。
```shell
docker run -di --name=solr -p 8983:8983 solr
```
訪問:http://192.168.10.10:8983/solr/#/ 結果如下:
![](https://mrhelloworld.com/resources/articles/docker/image-20200812222857902.png " ")
## RabbitMQ
拉取映象。
```shell
docker pull rabbitmq
```
建立容器。
```shell
docker run -di --name rabbitmq -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq
```
進入容器並開啟管理功能。
```shell
# 進入容器
docker exec -it rabbitmq /bin/bash
# 開啟 RabbitMQ 管理功能
rabbitmq-plugins enable rabbitmq_management
```
訪問:http://192.168.10.10:15672/ 使用 `guest` 登入賬號密碼,結果如下:
![](https://mrhelloworld.com/resources/articles/docker/image-20200812200109882.png " ")
> 應用部署的練習就到這裡,接下來該學習學習如何構建屬於我們自己的 Docker 映象啦。
![](https://user-gold-cdn.xitu.io/2020/5/1/171cf87f564bc82e?w=433&h=133&f=gif&s=333013)
本文采用 `知識共享「署名-非商業性使用-禁止演繹 4.0 國際」許可協議`。
大家可以通過 `分類` 檢視更多關於 `Docker` 的文章。