ねこじゃすり
猫を魅了する魔法の装備品!
Anker PowerCor
旅行には必須の大容量モバイルバッテリー!
【最新機種】GoPro hero11 Black
最新機種でVlogの思い出を撮影しよう!
モンスターエナジー 355ml×24本 [エナジードリンク]
脳を活性化させるにはこれ!
Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK
メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!
BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール
もう一人の僕を呼び覚ませ!!
サンディスク microSD 128GB
スマホからSwitchまで使える大容量MicroSDカード!
スポンサーリンク
目次
EC2インスタンスを使いやすくセットアップ
以前、AWSの公式EC2インスタンスのDockerイメージを利用して、ローカルマシンにコンテナを起動する手順を紹介しました。
しかし、初期の構成だと最低限の情報しか含まれていないので、sudoコマンドやcurlコマンド、lessコマンドなどのよく使うコマンドがインストールされていない状態です。
1 2 |
bash-4.2# less /etc/passwd bash: less: command not found |
よりEC2インスタンスの環境に近づけるには、ある程度自分でモジュールを整えないと行けなそうですね。
なので、今回はDockerfileを作成し、最低限必要なモジュールをインストールし、かつSSH接続出来るようにするまでの手順を紹介致します。
手順
スポンサーリンク
前提
- 公式EC2インスタンスのDockerイメージpull済み
参考
・Docker 初心者 | ssh で接続できるサーバーを立てる
ディレクトリ構成
最終的には以下のようなディレクトリ構成になります。
1 2 3 4 5 6 |
. ├── Dockerfile ├── authorized_keys └── keys ├── id_rsa └── id_rsa.pub |
SSH認証鍵の準備
まずは、SSH接続で利用する鍵を作成し、所定のディレクトリに配置します。
以下のコマンドを実行してください。
1 2 3 |
mkdir keys ssh-keygen cp keys/id_rsa.pub authorized_keys |
Dockerfileの作成
前回はコマンドでAmazonLinuxを起動して確認したので、今回はDockerfileを作成して起動しましょう。
Dockerfileの要点としては、以下を定義します。
- 公式EC2インスタンスのDockerイメージを指定
- yumのパフォーマンス改善(4~5行目)
- yumのインストール(8~11行目)
- ユーザーの作成(14~16行目)
- sudo権限の付与(19行目)
- SSHの設定(22~25行目)
- sshdの設定設定(28~30行目)
- sshdの起動(32行目)
- ポートの解放(34行目)
- コンテナの起動(35行目)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
FROM 137112412989.dkr.ecr.us-west-2.amazonaws.com/amazonlinux # set yum repository mirror for jp RUN yum -y install yum-plugin-fastestmirror RUN sed -ri 's/#include_only=.nl,.de,.uk,.ie/include_only=.jp/g' /etc/yum/pluginconf.d/fastestmirror.conf # install packages RUN yum -y update RUN yum -y install vim RUN yum -y install passwd openssh openssh-server openssh-clients sudo iproute RUN yum -y install wget curl # create users ENV USER {ユーザー名} RUN useradd $USER RUN passwd -f -u $USER # setup sudoers RUN echo "$USER ALL=(ALL) ALL" >> /etc/sudoers.d/$USER # setup SSH RUN mkdir -p /home/$USER/.ssh; chown $USER /home/$USER/.ssh; chmod 700 /home/$USER/.ssh ADD authorized_keys /home/$USER/.ssh/authorized_keys RUN chown $USER /home/$USER/.ssh/authorized_keys RUN chmod 600 /home/$USER/.ssh/authorized_keys # setup sshd config RUN sed -ri 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config RUN sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config RUN /etc/init.d/sshd start EXPOSE 22 CMD ["/sbin/init"] |
イメージのビルド
では、上記Dockerfileを使ってビルドをしましょう。
以下のコマンドを実行してください。
1 |
docker build -t docker/amzlinux . |
最終的に以下のログが表示されればビルド成功です。
1 2 |
Successfully built 45e02ef350ef Successfully tagged docker/amzlinux:latest |
コンテナの起動
では、ビルドしたイメージを使ってコンテナを起動してみましょう。
以下のコマンドを実行してください。今回はローカルマシンの10000番ポートをコンテナの22番ポートに繋げています。
1 |
docker run -d --name {コンテナ名} -p 10000:22 docker/amzlinux |
SSH接続
コンテナの起動が完了したら、sshコマンドで接続してみましょう。
以下のコマンドで作成した秘密鍵を使って接続をしてみてください。
1 |
ssh -i keys/id_rsa {ユーザー名}@127.0.0.1 -p 10000 |
正常に接続されましたね。
各種コマンドの確認
では、最後にDockerfileでインストールしたモジュール(コマンド)を確認してみましょう。
今回はとりあえず初期状態では使えなかったsudoコマンドを確認してみます。
以下のコマンドを実行してください。
1 |
sudo su |
以下のようなログが出れば正常にコマンドが実行出来ています。
1 2 3 4 5 6 7 8 9 10 |
[{ユーザー名}@xxxxxxxxx ~]$ sudo su We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. bash-4.2# |
終わりに
これで本来のEC2インスタンスに近い状態の環境に設定することが出来ました。
SSH接続や各種コマンドが使えることによって、よりリアルな検証操作を行うことが可能になりますので、是非皆さんも試していてください。