AmazonLinuxコンテナを構築してSShアクセスができるまでをまとめました。
作業時間は5分くらいで簡単に完了します。
AmazonLinuxのバージョンは以下となります。(2021年7月時点)
bash-4.2# cat /etc/system-release Amazon Linux release 2 (Karoo)
「AmazonLinux」でDockerコンテナ起動と構築
AmazonLinuxのDocker公式イメージは以下となります。
https://hub.docker.com/_/amazonlinux
公式ページ通り、以下コマンドでAmazonLinuxのイメージをダウンロードします。
$ 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
イメージがダウンロードされたことを以下コマンドで確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE amazonlinux latest c8e1c3f1064f 8 days ago 193MB
AmazonLinuxコンテナ起動(※/sbin/initでの起動不可)
AmazonLinuxコンテナを起動し、systemctlコマンドを使える状態にしたいのですが、「docker run」ではエラーが発生するのでいったん起動し、yumアップデートで最新のOSの状態にします。¥
コンテナの起動は以下コマンドで実行します。
$ docker run -itd --privileged -p 2222:22 --name amazonlinux --hostname amazonlinux amazonlinux:latest 09ea81bdeae7e4bd36e72e8e4edec8a675cbd7a58ecee12c1e13e89de5bf8cf5
AmazonLinuxのコンテナが起動したことを以下コマンドで確認できます。
$ 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
次に起動したコンテナにアクセスします。
$ docker exec -it amazonlinux /bin/bash
バージョンも確認でき正常に起動していることが確認できます。
bash-4.2# cat /etc/system-release Amazon Linux release 2 (Karoo)
AmazonLinuxコンテナを最新の状態にアップデート
今回、「systemd」コマンドが使えるようにするために、yumアップデートをすることで使用できるようになりました。
bash-4.2# yum -y update
ついでにSSHアクセスができるように「openssh-server」もインストールしておきます。
bash-4.2# yum -y install openssh-server
上記インストール後、コンテナからログアウトします。
コンテナイメージを別途コミットし、新しいイメージで起動
次に、「systemd」インストール済みのコンテナを/sbin/initで起動します。
現在のコンテナ(amazonlinux)からイメージ(amazonlx:latest)を作成します。
$ docker commit amazonlinux amazonlx:latest sha256:3b0f728067d926d5665588a0fa8617eea8fbfb2eda9f236305f8cdca388babef
次に現在使用したコンテナはいったん削除します。
$ 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」を追加します。
$ docker run -itd --privileged -p 2222:22 --name amazonlinux --hostname amazonlinux amazonlx:latest /sbin/init a31fbc063a20a51fb81cc50b5c6cc20526f7fe31e8c734d75d7ca3c1c734a9d7
Dockerコンテナが正常に起動したら、以下コマンドでコンテナへアクセスします。
$ docker exec -it amazonlinux /bin/bash
AmazonLinuxコンテナへSSH接続
コンテナアクセスをした後は「systemctl」コマンドでsshdを起動します。
bash-4.2# systemctl start sshd bash-4.2# systemctl enable sshd
以下コマンドでSSHサービスが起動していることを確認します。
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」コマンドがないためインストールをします。
bash-4.2# yum -y install passwd
インストール後、以下コマンドでrootパスワードを作成します。
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アクセスを実施します。
$ 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アクセスができれば完了です。
Dockerを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す