Docker容器載入宿主機的hosts解析

來源:互聯網
上載者:User

標籤:目的   項目   dock   shell指令碼   進入容器   samba   倉庫   解決方案   cal   

前言

  公司一直在用傳統的tomcat下丟war包的架構體系,隨著項目的增多、伺服器數量的增多、需要為此花費很多時間在不同伺服器的系統內容問題上。為了技術的與時俱進和工作的營運效率等方面,筆者引入docker容器部署方式,通過Gitlab+Jenkins+Harbor體系,通過Dockerfile產生自訂鏡像並放置Harbor倉庫,Jenkins加上自訂Shell指令碼(實現拉鏡像,啟動容器,容器映射連接埠固定,自訂日誌路徑)等,基本實現了持續整合的自動化部署。在測試環境試用了一段時間,發現效果還不錯,但近來卻發現容器中應用有報錯,根據報錯資訊定位到容器中hosts檔案解析問題。

解決

  於是乎,通過各種實驗,找到瞭解決方案,即在docker容器啟動時通過---add-host方式載入宿主機的解析到容器中,如下:

  /usr/bin/docker run -d \
    -p 8888:7001 \
    -p 9999:37001 \
    -v /webapps/health_record\.war:/usr/local/tomcat-7001/webapps/health_record\.war \
    -v /logs/health_record:/usr/local/tomcat-7001/logs \
    -v /logs/HC_logs/health_record:/usr/local/dir_samba \
    $(cat /etc/hosts|awk -F ‘ ‘ ‘{if(NR>2){print "--add-host "$2":"$1}}‘) \
    --name health_record8 \
    172.21.97.152/tomcat/tomcat-de:4.0

說明

  重點是標紅內容,將hosts檔案動態讀取,拼接成--add-host所要的格式,NR>2是過濾掉/etc/hosts檔案中頭兩行(不是我想要的內容)。

缺點

  不能動態載入宿主機的hosts檔案,如果宿主機的hosts檔案發生變化,容器需要同步更新,必須刪除容器重建即可。

完善

  此為開啟容器時加參數方式,也可用其他方式,如:

    1)進入容器編輯hosts檔案;   # 臨時解決

    2)修改容器預設的解析檔案(即自訂hosts檔案);   # 將容器變成啟動後不去找/etc/hosts,而是找自訂的hosts檔案

Docker容器載入宿主機的hosts解析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.