Docker 之常見應用部署

本文教大家如何將常見的應用使用 Docker 進行部署,鞏固大家 Docker 命令的學習,下文教大家如何構建屬於我們自己的 Docker 鏡像。

  

Tomcat

  

  拉取鏡像。

docker pull tomcat

  創建容器。

docker run -di --name tomcat -p 8080:8080 tomcat

  進入容器。

docker exec -it tomcat /bin/bash

  查看 webapps 目錄下是否有 ROOT 項目,我們熟悉的 Tomcat 貓頁面一般就在這個項目中。

  如上圖所示,該目錄下空空如也,其實 Tomcat 在比較新的版本中將默認的 ROOT 項目放在了 webapps.dist 中,如果你真想訪問 //192.168.10.10:8080/ 看到 Tomcat 貓,將其複製至 webapps 即可。

  訪問://192.168.10.10:8080/ 即可看到熟悉的面孔。

  

Nginx

  

  拉取鏡像。

docker pull nginx

  創建 Nginx 容器。

docker run -di --name nginx -p 80:80 nginx

  將容器內的配置文件拷貝到指定目錄(請先提前創建好目錄)。

docker cp nginx:/etc/nginx /mydata/docker_nginx

  重命名宿主機 /mydata/docker_nginx/nginx/mydata/docker_nginx/conf

mv /mydata/docker_nginx/nginx/ /mydata/docker_nginx/conf

  終止並刪除容器(目錄掛載操作只能在創建容器時設置)。

docker stop nginx
docker rm nginx

  創建 Nginx 容器,並將容器中的 /etc/nginx 目錄和宿主機的 /mydata/nginx/conf 目錄進行掛載。

docker run -di --name nginx -p 80:80 -v /mydata/docker_nginx/conf:/etc/nginx nginx

  訪問宿主機://192.168.10.10:80/ 結果如下:

  

MySQL

  

  拉取鏡像。

docker pull mysql:8.0.21

  創建容器。

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 + 指定的映射埠即可。

  也可以進入容器並使用 MySQL 命令打開客戶端。

# 進入容器
docker exec -it mysql8 /bin/bash
# 使用 MySQL 命令打開客戶端
mysql -uroot -p1234 --default-character-set=utf8

  

Redis

  

  拉取鏡像。

docker pull redis

  創建容器。

docker run -di --name redis -p 6379:6379 redis

  連接容器中的 Redis 時,只需要連接宿主機的 IP + 指定的映射埠即可。

  

MongoDB

  

  拉取鏡像。

docker pull mongo

  創建容器。

docker run -di --name mongo -p 27017:27017 mongo

  連接容器中的 MongoDB 時,只需要連接宿主機的 IP + 指定的映射埠即可。

  

Elasticsearch

  

  拉取鏡像。

docker pull elasticsearch:7.8.1

  創建容器,為了方便演示,修改 ES 啟動佔用記憶體大小。

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

  安裝中文分詞器。

# 進入容器
docker exec -it es /bin/bash
# 安裝中文分詞器
elasticsearch-plugin install //github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.1/elasticsearch-analysis-ik-7.8.1.zip
# 重啟 es
docker restart es

  訪問://192.168.10.10:9200/ 結果如下:

  

安裝 head 插件

  

  拉取鏡像。

docker pull mobz/elasticsearch-head:5

  創建容器。

docker run -di --name es-head -p 9100:9100 mobz/elasticsearch-head:5

  在瀏覽器中打開 elasticsearch-head 頁面,填入 Elasticsearch 地址。

  這裡會出現跨域拒絕訪問的問題,進入 elasticsearch 容器內部,修改配置文件 elasticsearch.yml

# 進入容器
docker exec -it 容器ID或名稱 /bin/bash
# 修改配置文件
vi config/elasticsearch.yml

  在 elasticsearch.yml 中添加如下內容。

# 跨域請求配置(為了讓類似 head 的第三方插件可以請求 es)
http.cors.enabled: true
http.cors.allow-origin: "*"

  重啟容器。

docker restart es

  

Solr

  

  拉取鏡像。

docker pull solr

  創建容器。

docker run -di --name=solr -p 8983:8983 solr

  訪問://192.168.10.10:8983/solr/#/ 結果如下:

  

RabbitMQ

  

  拉取鏡像。

docker pull rabbitmq

  創建容器。

docker run -di --name rabbitmq -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq

  進入容器並開啟管理功能。

# 進入容器
docker exec -it rabbitmq /bin/bash
# 開啟 RabbitMQ 管理功能
rabbitmq-plugins enable rabbitmq_management

  訪問://192.168.10.10:15672/ 使用 guest 登錄帳號密碼,結果如下:

應用部署的練習就到這裡,接下來該學習學習如何構建屬於我們自己的 Docker 鏡像啦。

本文採用 知識共享「署名-非商業性使用-禁止演繹 4.0 國際」許可協議

大家可以通過 分類 查看更多關於 Docker 的文章。

  

🤗 您的點贊轉發是對我最大的支援。

📢 掃碼關注 哈嘍沃德先生「文檔 + 影片」每篇文章都配有專門影片講解,學習更輕鬆噢 ~