Braindump

systemd と sshd を有効にした Docker コンテナに一般ユーザーでSSH接続する方法

April 30, 2023
docker

はじめに # Ansible の Playbook 開発時、Docker コンテナで動作検証するときがある。 場合によっては systemd を有効にしたコンテナに SSH 接続したいときがある。 更に、その接続を一般ユーザーで行いたいときもある。 sshd を有効にしただけのコンテナには一般ユーザーで SSH 接続できる。 しかし、systemd と sshd を同時に有効化するとコンテナに一般ユーザーで SSH 接続できなくなる。 本記事では上記の問題とその対処法について説明する。 ⚠️ 注意 # systemd を有効化するにはコンテナ起動時に --privileged オプションが必要となる。 --privileged オプションを付けて実行すると、コンテナはホストマシンのリソースへの制限がほとんど無くなるため、特別な理由が無い限り systemd の有効化は非推奨。 一般ユーザーで SSH 接続する際に起こる問題 # Docker コンテナにおいて CentOS や RHEL のベースイメージを使用している場合、systemd と sshd を有効にした状態で一般ユーザーで SSH 接続を試みると以下のエラーが発生する。 $ ssh USER@hostname System is booting up. Unprivileged users are not permitted to log in yet. Please come back later. ...

Docker コンテナで Ansible の reboot タスクを成功させる

April 29, 2023
ansible, docker

はじめに # Ansible の reboot タスクは ansible.builtin.reboot module を用いて以下のように書く。 # playbook.yaml --- - hosts: all gather_facts: false tasks: - name: This is Reboot task ansible.builtin.reboot: 一般的なマシンや VM に対しては上記の記述のみで所望の動作をする。 しかし、Docker コンテナでは Ansible がハングしてしまい次のタスクに進まなくなる。 本記事では Docker コンテナで Ansible の reboot タスクを成功させるための方法を説明する。 必要な設定は以下2ステップである。 Docker の再起動ポリシーを設定する Ansible の reboot タスクの完了判定を設定する 検証環境 # ansible: 7.1.0 Docker version: 23.0.3 Docker の再起動ポリシーを設定する # コンテナ停止時の挙動は 再起動ポリシー を設定することで制御する。 再起動ポリシーの値は4種類ある (表は ここ から拝借) ...