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設定を再ロードする必要があります。