例如,我已經在CMD
Dockerfile選項中定義了運行碼頭容器cat
(或使用stdin的其他進程)。是否有可能將字符串發送到Docker容器中的正在運行的進程中?
我試圖發送字符串test\n
運行cat
(或其他進程)。
是否有可能做到這一點,或者我需要找到解決辦法?
綜上所述: 我正在尋找類似 echo 'test' | docker run -i --rm alpine command
爲運行容器。
例如,我已經在CMD
Dockerfile選項中定義了運行碼頭容器cat
(或使用stdin的其他進程)。是否有可能將字符串發送到Docker容器中的正在運行的進程中?
我試圖發送字符串test\n
運行cat
(或其他進程)。
是否有可能做到這一點,或者我需要找到解決辦法?
綜上所述: 我正在尋找類似 echo 'test' | docker run -i --rm alpine command
爲運行容器。
我解決它通過簡單的pipeing標準輸入到泊塢窗連接,例如:
$ docker run -i busybox sh -c "while true; do cat /dev/stdin; sleep 1; done;" test
,並在另一個術語
$ echo test | docker attach <containerId>
是作爲一個例子見
https://github.com/chilcano/docker-netcat
你需要打開一個端口,從以前的鏈接提取
$ docker run -d -t --name=netcat-jessie -p 8182:8182 -p 9192:9192/udp chilcano/netcat:jessie
,現在,你必須使用這些端口 通信的一些例子發送跟蹤打開TCP端口
$ ping 8.8.4.4 | nc -v 192.168.99.100 8182
或發送跡線到UDP端口
$ ping 8.8.8.8 | nc -vu 192.168.99.100 9192
或發送跡線到UDP端口,而不netcat的
$ ping 8.8.4.4 > /dev/udp/192.168.99.100/9192
和
$ tail -f /opt/wiremock/wiremock.log | nc -vu 192.168.99.100 9192
或發送跡線到TCP端口,而不netcat
$ tail -f /opt/wso2esb01a/repository/logs/wso2carbon.log > /dev/tcp/192.168.99.100/8182
或發送痕跡的UDP端口,而netcat
$ tail -f /opt/wso2am02a/repository/logs/wso2carbon.log > /dev/udp/192.168.99.100/9192
可以通過管道將容器的過程中stdin
如果你開始-i
容器。例如;
echo "foobar" | docker run -i --rm alpine cat
請記住,這樣做的時候開始容器。你的問題提到cat
,這不是一個漫長的過程,所以容器將在cat
完成後實際退出。
我知道'-i'參數,我正在尋找類似於運行容器的東西。 'cat'只是接受輸入的例子 – Papkie
所以這是不可能做到像'-X 'screen'中的參數?例如,'$ screen -S -X ' –
Papkie
如果你想在一個容器中使用shell,請參閱docker exec https://docs.docker.com/engine/reference/commandline/exec/如果你想在容器中使用X,要安裝一些東西,請參閱http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/ – user2915097
那不,我不想在容器內裝殼。我想發送一個字符串到'CMD' Dockerfile屬性中定義的運行進程中。 – Papkie