我想修改docker映像中的conf文件,但是,我不想重新構建docker映像,我想通過「碼頭運行....命令」來做到這一點。我將在命令中加入一個「echo XXX >> /etc/XXX.conf」。這可能嗎?如何追加/修改Docker容器中的文件'docker run .... [命令]'
例如,我想啓動一個redis sentinel集羣,其中包括至少2個redis-server和1個redis-sentinel。第二個redis服務器容器在redis.conf中需要狀態「slaveof」。
我這樣做在下面的步驟:
啓動Redis的服務器與端口6479
docker run -d -p 6479:6379 docker.io/redis
開始從Redis的服務器與6579採用相同的碼頭工人的圖像,並說明這是一個從在conf文件:
docker run -d -p 6579:6379 docker.io/redis "/bin/echo 'slaveof 192.168.1.149 6479' >> /etc/redis.conf && redis-server /etc/redis.conf"
這裏COMMAND關於'搬運工運行」是: 「/斌/回波 'slaveof 192.168.1.149 6479' >> /etc/redis.conf & & redis的服務器/etc/redis.conf」
- 啓動哨兵,這是另一個碼頭的圖像。
但是,我停在第二步。它返回這樣的錯誤消息:
/entrypoint.sh:第10行:/斌/回聲 'slaveof 192.168.1.149 6479' >> /etc/redis.conf & & Redis的服務器的/ etc/Redis的.conf:沒有這樣的文件或 目錄
那麼,如何注入或修改conf文件通過'碼頭運行'子句?
感謝斯科特,這並不爲我工作。順便說一句,碼頭的aaaaa應該使用端口6579 :) 我檢查了你的方法通過這兩種方法: a)從主機運行「redis-cli -p 6579信息複製」,它仍然說這redis是主人,但如果一切正常,它應該是奴隸。 b)我通過「docker exec -ti aaaaaa/bin/bash」登錄,沒有/etc/redis.conf。這意味着'回聲.....'不起作用。 最後,我認爲「docker exec」子句不適用,因爲docker容器已經啓動並且功能正常。 「docker exec」不會影響現有的redis服務器行爲。 – Cross