外部の強制変更がコンテナに伝播されます。

外部の強制変更がコンテナに伝播されます。

Dockerベースのコンテナがあります。gitlab-ce/latestビデオ。最小限の侵害を維持しながら、Ansibleを使用していくつかの追加作業を可能にするために、私は次のように選択しました。バンドルのインストールデフォルトでは/assets/sshd_configコンテナに付属しています。コピーを選択することもできましたが、docker compose結局そうしました。

結果のインストールは次のとおりです(docker inspect抜粋):

"Mounts": [
    {
        "Type": "bind",
        "Source": "/srv/gitlab/sshd_config",
        "Target": "/assets/sshd_config",
        "ReadOnly": true,
        "BindOptions": {
            "Propagation": "shared"
        }
    }
],

コンテナが再起動しないと、ホスト側()ファイルへの変更が/srv/gitlab/sshd_configコンテナ()の内部に反映されないことがわかりました。/assets/sshd_config

多くの変更を加えたり、別の操作を行わなくても、ホスト側の変更をコンテナ内ですぐに確認する方法はありますか?再起動コンテナ?

答え1

バインディングのインストールは次のとおりです。展示するコンテナ内にありますが、sshd は再起動されるまで新しい設定を読みません。

ステップ1 - コンテナ名を取得する

$ docker container list
CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS                                 PORTS                      NAMES                                            
b1605793904b        gitlab/gitlab-ce      "/assets/wrapper"        About a minute ago   Up About a minute (health: starting)   22/tcp, 80/tcp, 443/tcp    elastic_austin

この場合、私のコンテナ名は「elastic_austin」です。

ステップ2(オプション) - 変更したファイルが存在することを確認する

コンテナ内の bash で変更があるかどうかを確認できます。docker exec

$ docker exec -it elastic_austin bash
root@b1605793904b:/# tail /etc/ssh/sshd_config
[...your sshd_config here...]

あなたの変更がそこにあることを願っています。

ステップ3 - SSHデーモンの再起動

これで、コンテナ内で変更が発生したことがわかったので、コンテナ内でsshdサービスを再起動する必要があります。

service ssh restartコンテナ内のbashまたはdocker execホストシステムで実行できます。

$ docker exec -it elastic_austin service ssh restart
 * Restarting OpenBSD Secure Shell server sshd                [ OK ]

その後、コンテナは更新されたSSH設定を再ロードする必要があります。

関連情報