1. 程式人生 > >Docker 之常見應用部署

Docker 之常見應用部署

  本文教大家如何將常見的應用使用 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` 的文章。