現在的環境是這樣的,加入說我在一臺宿主機上有兩個服務。
一個容器作為tomcat,里邊是java-web程式。
另一個容器作為mysql,里邊跑資料存盤服務。
然后啟動兩個容器
首先是mysql : docker run -d --name -v fdsafas:/fdsafa mysqlserver image_id
然后是tomcat: docker run -d --link mysqlserver:db -p 80:8080 -v fdsafsa:/fdsafjsad image_tomcat_id
現在我想在java程式中操作資料庫,之前的方式是指定 資料庫Ip和埠之類的,然后連接。
現在我的想法是,如果在一個生產環境下,不知道容器mysql的ip地址,如何能夠連接呢?
難道需要讓java程式去讀系統的環境變數么?因為在tomcat容器中的環境變數確實能夠看到mysql暴露出來的埠號,比如:
[root@dockertest containers]# docker run -it --link mysqlserver:db -p 80:80 -v /some/content:/usr/share/nginx/html 5135500ec6a1 env
Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=8b91ed33f8fd
TERM=xterm
DB_PORT=tcp://172.17.0.2:3306
DB_PORT_3306_TCP=tcp://172.17.0.2:3306
DB_PORT_3306_TCP_ADDR=172.17.0.2
DB_PORT_3306_TCP_PORT=3306
DB_PORT_3306_TCP_PROTO=tcp
DB_NAME=/lonely_pasteur/db
uj5u.com熱心網友回復:
請教!希望有人解答uj5u.com熱心網友回復:
首先把容器的ip地址設成靜態,然后放到hosts并設成域名訪問,然后寫一個shell腳本,如果容器重啟后,防止ip地址變更,如有其它問題請加入docker新群397201742uj5u.com熱心網友回復:
我認為通過link別名就可以;uj5u.com熱心網友回復:
用--net=host就可以在容器里看到宿主機IP了uj5u.com熱心網友回復:
改成靜態地址,直接用地址訪問就是,他們在同一個ip class里的。uj5u.com熱心網友回復:
mysql埠映射到宿主機,然后通過修改宿主機的/etc/hosts檔案,javaweb那個容器就可以通過域名來連接mysqluj5u.com熱心網友回復:
用別名可以轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/64455.html
標籤:Docker
上一篇:Hive增加了一個欄位,報錯??
