AmazonLinuxコンテナを構築してSShアクセスができるまでをまとめました。
作業時間は5分くらいで簡単に完了します。
AmazonLinuxのバージョンは以下となります。(2021年7月時点)
1 2 | bash-4.2# cat /etc/system-release Amazon Linux release 2 (Karoo) |
「AmazonLinux」でDockerコンテナ起動と構築
AmazonLinuxのDocker公式イメージは以下となります。
https://hub.docker.com/_/amazonlinux
公式ページ通り、以下コマンドでAmazonLinuxのイメージをダウンロードします。
1 2 3 4 5 6 7 | $ docker pull amazonlinux Using default tag: latest latest: Pulling from library/amazonlinux b19e557e673c: Pull complete Digest: sha256:2e42b5d170dbb6d54d35b3b64627480de9687b52cfbab2086267a0fd2acd7bef Status: Downloaded newer image for amazonlinux:latest docker.io/library/amazonlinux:latest |
イメージがダウンロードされたことを以下コマンドで確認します。
1 2 3 | $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE amazonlinux latest c8e1c3f1064f 8 days ago 193MB |
AmazonLinuxコンテナ起動(※/sbin/initでの起動不可)
AmazonLinuxコンテナを起動し、systemctlコマンドを使える状態にしたいのですが、「docker run」ではエラーが発生するのでいったん起動し、yumアップデートで最新のOSの状態にします。¥
コンテナの起動は以下コマンドで実行します。
1 2 | $ docker run -itd --privileged -p 2222:22 --name amazonlinux --hostname amazonlinux amazonlinux:latest 09ea81bdeae7e4bd36e72e8e4edec8a675cbd7a58ecee12c1e13e89de5bf8cf5 |
AmazonLinuxのコンテナが起動したことを以下コマンドで確認できます。
1 2 3 | $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 09ea81bdeae7 amazonlinux:latest "/bin/bash" 12 seconds ago Up 10 seconds 0.0.0.0:2222->22/tcp, :::2222->22/tcp amazonlinux |
次に起動したコンテナにアクセスします。
1 | $ docker exec -it amazonlinux /bin/bash |
バージョンも確認でき正常に起動していることが確認できます。
1 2 | bash-4.2# cat /etc/system-release Amazon Linux release 2 (Karoo) |
AmazonLinuxコンテナを最新の状態にアップデート
今回、「systemd」コマンドが使えるようにするために、yumアップデートをすることで使用できるようになりました。
1 | bash-4.2# yum -y update |
ついでにSSHアクセスができるように「openssh-server」もインストールしておきます。
1 | bash-4.2# yum -y install openssh-server |
上記インストール後、コンテナからログアウトします。
コンテナイメージを別途コミットし、新しいイメージで起動
次に、「systemd」インストール済みのコンテナを/sbin/initで起動します。
現在のコンテナ(amazonlinux)からイメージ(amazonlx:latest)を作成します。
1 2 | $ docker commit amazonlinux amazonlx:latest sha256:3b0f728067d926d5665588a0fa8617eea8fbfb2eda9f236305f8cdca388babef |
次に現在使用したコンテナはいったん削除します。
1 2 3 4 5 6 7 | $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8cf6c29744e8 amazonlinux:latest "/bin/bash" 3 minutes ago Up 3 minutes 0.0.0.0:2222->22/tcp, :::2222->22/tcp amazonlinux $ docker stop amazonlinux amazonlinux $ docker rm amazonlinux amazonlinux |
新規に作成したイメージからDockerコンテナを(/sbin/init)で起動
上記、commitコマンドで作成したイメージ(amazonlx:latest)からDockerコンテナを起動します。
ポート番号は2222にアクセスすると22番ポートへアクセスするように、あとはsysemdが使用できるように「/sbin/init」を追加します。
1 2 | $ docker run -itd --privileged -p 2222:22 --name amazonlinux --hostname amazonlinux amazonlx:latest /sbin/init a31fbc063a20a51fb81cc50b5c6cc20526f7fe31e8c734d75d7ca3c1c734a9d7 |
Dockerコンテナが正常に起動したら、以下コマンドでコンテナへアクセスします。
1 | $ docker exec -it amazonlinux /bin/bash |
AmazonLinuxコンテナへSSH接続
コンテナアクセスをした後は「systemctl」コマンドでsshdを起動します。
1 2 | bash-4.2# systemctl start sshd bash-4.2# systemctl enable sshd |
以下コマンドでSSHサービスが起動していることを確認します。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | bash-4.2# systemctl status sshd ● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-07-04 06:22:09 UTC; 26s ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 86 (sshd) CGroup: /docker/a31fbc063a20a51fb81cc50b5c6cc20526f7fe31e8c734d75d7ca3c1c734a9d7/system.slice/sshd.service └─86 /usr/sbin/sshd -D ‣ 86 /usr/sbin/sshd -D Jul 04 06:22:09 amazonlinux systemd[1]: Starting OpenSSH server daemon... Jul 04 06:22:09 amazonlinux sshd[86]: Server listening on 0.0.0.0 port 22. Jul 04 06:22:09 amazonlinux systemd[1]: Started OpenSSH server daemon. Jul 04 06:22:09 amazonlinux sshd[86]: Server listening on :: port 22. |
SSHアクセス用パスワード設定
SSHサービスが上がったことを確認した後はアクセス用のパスワードを設定します。
デフォルトで「passwd」コマンドがないためインストールをします。
1 | bash-4.2# yum -y install passwd |
インストール後、以下コマンドでrootパスワードを作成します。
1 2 3 4 5 6 | bash-4.2# passwd Changing password for user root. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. |
上記パスワードを作成後、コンテナからログアウトし、コンテナへSSHアクセスを実施します。
1 2 3 4 5 6 7 8 9 | $ ssh -p 2222 root@localhost The authenticity of host '[localhost]:2222 ([::1]:2222)' can't be established. ECDSA key fingerprint is SHA256:vUiZ8TRUmwfosZkHcTM/W00oWbJMzpVr72rGOZVA56U. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[localhost]:2222' (ECDSA) to the list of known hosts. root@localhost's password: -bash-4.2# -bash-4.2# -bash-4.2# |
正常にSSHアクセスができれば完了です。
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメント