Dockerfile包含如何從docker中的已安裝卷運行bash腳本並將該端口暴露於容器外部?
FROM java:8
蔭通過安裝我的主機目錄到搬運工運行此通過以下命令
docker run -it -p 8585:9090 -v ~/Docker/:/data d23bdf5b1b1b /data/bin/script.sh
我能夠成功運行這一點,但問題是,當我嘗試從瀏覽器訪問它我無法看到任何東西,因爲端口衝突 ,2服務在同一端口上運行..
如何解決此問題?
Dockerfile包含如何從docker中的已安裝卷運行bash腳本並將該端口暴露於容器外部?
FROM java:8
蔭通過安裝我的主機目錄到搬運工運行此通過以下命令
docker run -it -p 8585:9090 -v ~/Docker/:/data d23bdf5b1b1b /data/bin/script.sh
我能夠成功運行這一點,但問題是,當我嘗試從瀏覽器訪問它我無法看到任何東西,因爲端口衝突 ,2服務在同一端口上運行..
如何解決此問題?
你的問題是你正試圖在一個新的容器中運行一個腳本,然後該容器就存在。它與正在運行的任何現有容器沒有任何關係。
另外,當你指定一個要用docker運行的命令時,它不會運行你在構建Dockerfile時定義的CMD命令。
所以你需要做的是以下。
docker run -d -p 8585:9090 -v ~/Docker/:/data d23bdf5b1b1b
上述容器運行它將打印新的容器的ID之後。現在你想在這個新的容器中執行你的命令
docker exec -it <containerid> /data/bin/script.sh
非常感謝您的工作但碼頭運行命令即docker run -d -it -p 8585:9090 -v〜/ Docker /:/ data d23bdf5b1b1b有一點變化,我們必須同時使用-d和-it來啓動,否則它將會是立即退出 –
然後你可能需要'-d -t'。 '-i'不應該需要 –
另外我還有一個疑問是有可能使用dockerfile執行腳本本身,我的意思是沒有使用docker exec。我想運行安裝的卷中存在的腳本 –
你給的信息是不夠的。請告訴哪個服務在哪個端口上運行,您如何運行這些服務,將這些服務歸屬於映像還是屬於您的系統 – Ayushya
iam使用java的映像:8,iam運行java microservices –