初めに
業務でECSを使うことがありそうなのでなのでその勉強をしようと思いましたが、そもそもコンテナ自体全く触ったことがなかったのでdockerを触ってみたいと思います。とりあえず、EC2にdockerをインストールして、apacheのインストール行いたいと思います。余力があればコンテナのメリットである環境を自由に載せたり、降ろしたりできるというのをしてみたいと思います。(これを書いている時点ではやり方はわかっていないです(笑))
EC2用意
移行元と移行先のEC2を2台作成しました。今回はDockerの内容なのでEC2の設定は省略します。
※試行錯誤している途中でEC2の再作成など行ったのでEC2名が若干変わっています。
dockerインストール
移行元サーバー
①Dockerのインストールを行い、起動を行います。
[root@MOTO ~]# yum install docker
[root@MOTO ~]# docker -v
Docker version 20.10.17, build 100c701
[root@MOTO ~]# systemctl start docker
[root@MOTO ~]# systemctl status docker
②Dockerのcentosのイメージを取得します
[root@MOTO ~]# docker pull centos
[root@MOTO ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 13 months ago 231MB
③イメージを元にコンテナを起動します
[root@MOTO ~]# docker run -p 80:80 -p 443:443 -d --privileged centos:latest /sbin/init
739851d39d12da30ef8e9c83029721df500f6a62e851a44d9e1510a6c52f1b0f
[root@MOTO ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
958123a8e944 centos:latest "/sbin/init" 21 seconds ago Up 20 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp peaceful_merkle
④Dockerコンテナ内部に入ります
[root@MOTO ~]# docker exec -it 958123a8e944 /bin/bash
移行元サーバー(コンテナに入ってから)
①apache httpdをインストール、起動します
[root@739851d39d12 /]# yum install httpd
[root@739851d39d12 /]# systemctl start httpd
[root@739851d39d12 /]# systemctl status httpd
②index.htmlを作成します
[root@739851d39d12 /]# vi /var/www/html
[root@958123a8e944 /]# cat /var/www/html/index.html
<h1>DOCKER TEST</h1>
※CentOSはyumのレポジトリの設定の問題でyumコマンドが使用できなかったので下記を参考にしました。
https://qiita.com/yamada-hakase/items/cb1b6124e11ca65e2a2b
ブラウザで移行元サーバーのIPにアクセスすると設定した内容が表示されました!
移行先サーバー(コンテナから出てから)
①変更(apacheインストール)したコンテナのイメージを取得します
[root@MOTO ~]# docker commit -a "taki" 958123a8e944 docker-apache
sha256:3caca08bcc4f256a0c54a40fca6682b8060d9a83f70df97bc5047b49ed54a7ab
[root@MOTO ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-apache latest 3caca08bcc4f 33 seconds ago 280MB
centos latest 5d0da3dc9764 13 months ago 231MB
②イメージをtar形式で圧縮します
[root@MOTO ~]# docker save docker-apache > docker-apache.tar
[root@MOTO ~]# ll
total 280928
-rw-r--r-- 1 root root 287669760 Oct 12 13:54 docker-apache.tar
一度tarファイルを自端末にダウンロード→移行先のサーバーにアップロードします。(どちらもTeraTermのSSH SCP機能)
移行先
①Dockerのインストール、起動を行います
[root@ip-10-0-0-156 ~]# yum install docker
[root@ip-10-0-0-156 ~]# docker -v
[root@ip-10-0-0-156 ~]# systemctl start docker
[root@ip-10-0-0-156 ~]# systemctl status docker
②圧縮したイメージファイルを読み込みます
[root@ip-10-0-0-156 ~]# docker load < /home/ec2-user/docker-apache.tar
[root@ip-10-0-0-156 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-apache latest 3caca08bcc4f 5 days ago 280MB
②イメージを元にコンテナを起動します
[root@ip-10-0-0-156 ~]# docker run -p 80:80 -p 443:443 -d --privileged docker-apache:latest /sbin/init
[root@ip-10-0-0-156 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7140bffe7eb7 docker-apache:latest "/sbin/init" 20 minutes ago Up 20 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp sharp_sanderson
③Dockerコンテナ内部に入ります
[root@ip-10-0-0-156 ~]# docker exec -it 7140bffe7eb7 /bin/bash
④Apacheを起動します
[root@7140bffe7eb7 /]# systemctl start httpd
移行先のIPアドレスをブラウザに入力すると移行元サーバーで作成したのと同じページが表示できました!
まとめ
Dockerのコンテナ作成から他サーバーへの移行まで行うことができました!初めてだったのですんなりとはいかなかったですが、それでもコンテナの便利さを実感できました!ただ、移行先のサーバーはせっかくなのでOSを変えて行いたかったんですが、Dockerのインストールやもろもろで詰まってしまったのでどちらもAmazonLinuxで行いました。。。