Docker容器添加映射端口的兩種實現(xiàn)方法
前言
一般在運行容器時,我們都會通過參數(shù) -p(使用大寫的-P參數(shù)則會隨機選擇宿主機的一個端口進行映射)來指定宿主機和容器端口的映射,例如
docker run -itd -p 本地端口:容器內(nèi)端口 所用鏡像名
參數(shù)說明
- -d 表示后臺運行容器
- -t 為docker分配一個偽終端并綁定到容器的標(biāo)準(zhǔn)輸入上
- -i 是讓容器的標(biāo)準(zhǔn)輸入保持打開狀態(tài)
- -p 指定映射端口
即創(chuàng)建容器時,你可以設(shè)置一個端口來進行宿主機和容器之間端口的映射,比如外邊的8080與容器內(nèi)的22進行映射后,那你可以使用 宿主機IP:8080 在xshell進行連接容器了
在這里我是創(chuàng)建了一個Centos容器,內(nèi)部創(chuàng)建一個Hadoop的偽分布式集群,想要在瀏覽器打開HDFS的網(wǎng)站進行查看數(shù)據(jù),所以想要給容器加個端口映射,下面就是我實操成功的方法,希望能夠幫到正在閱讀的讀者。
方式一 簡單粗暴
直接給現(xiàn)在容器停了(當(dāng)然你要不想停也可以,只是打包會慢一點,當(dāng)然我是沒出意外,如果你怕出現(xiàn)特殊情況,那就先把容器停了),然后把這個容器打包成鏡像,然后使用這個鏡像開啟新的容器,開啟的時候加上你想新添加的端口將現(xiàn)有的容器打包成鏡像,然后在使用新的鏡像運行容器時重新指定要映射的端口
實操如下:
停止容器 docker stop 容器名字或者編號 將容器打包成鏡像 docker commit 容器名字或者編號 你想起的鏡像名字 用新鏡像開啟新容器 docker run -itd --name 你起的容器名 -p 外邊的端口:容器內(nèi)端口 -p 外邊的端口:容器內(nèi)的端口... 剛才的鏡像名
方式二 細水長流
修改要容器的配置文件,這樣就不需要每次想要添加端口映射,就得重新創(chuàng)建一邊容器了
若該容器還在運行,先停掉 docker stop 容器ID 停掉docker服務(wù) systemctl stop docker 查看容器信息: docker ps -a 查看容器的端口映射情況,在容器外執(zhí)行: docker port 容器ID或者容器名稱 查找要修改容器的容器Id(當(dāng)然你也可以直接通過docker ps -a查看) docker inspect 容器Id | grep Id 進到/var/lib/docker/containers 目錄下找到與 Id 相同的目錄,修改 hostconfig.json 和 config.v2.json文件: cd /var/lib/docker/containers/容器Id vim hostconfig.json 外部端口是10000,容器內(nèi)部端口是50070 "50070/tcp": [{"HostIp": "","HostPort": "10000"}]
vim config.v2.json
這兩個文件在寫入的時候都建議寫在原有端口的后面,我當(dāng)時是寫在前面了,但是不知道為啥就一直不生效,可能是先掃描已經(jīng)配置過的端口的原因把
重新啟動docker systemctl start docker 查看端口是否綁定成功 docker ps -a 當(dāng)然你也可以用這個命令來查看宿主機和容器之間的端口是否映射成功 netstat -an | grep 宿主機的映射端口 如果有進程存在則表示有映射
同理,你也可以通過這種方式來刪除添加錯誤的端口
到此這篇關(guān)于Docker容器添加映射端口的兩種實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Docker 添加映射端口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Grafana 展示Docker容器的監(jiān)控圖表并設(shè)置郵件報警規(guī)則(圖解)
這篇文章主要介紹了使用Grafana 展示Docker容器的監(jiān)控圖表并設(shè)置郵件報警規(guī)則的圖文教程,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-01-01docker 使用mysqldump命令備份導(dǎo)出項目中的mysql數(shù)據(jù)
這篇文章主要介紹了docker 使用mysqldump命令備份導(dǎo)出項目中的mysql數(shù)據(jù)本文通過命令給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12Docker?Memcached?容器化部署的實現(xiàn)
memcached是一套分布式的高速緩存系統(tǒng),本文主要介紹了Docker?Memcached?容器化部署的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-03-03