BETA

Dockerを初めて触った

投稿日:2020-05-27
最終更新:2020-05-28

やりたかったこと

  1. OpenSSLとapahceでオレオレHTTPS環境を構築したかった
  2. 作った環境を容易に削除及び移行できるようにしたい

    2を要件を満たすため、仮想化を使いたかった
    Linuxで仮想化といえばVirtualBoxとかKVMとかあるけど、勉強がてら流行りのDockerを導入してみることにした

導入手順

CentOS8にDocker側が対応しておらず、古いバージョンをインストールした
How to install Docker CE on RHEL 8 / CentOS 8 - LinuxConfig.org

上記の手順通りに設定しても「クライアントのバージョンが高すぎ!」って怒られるのでクライアントをダウングレード
CentOS8にDockerを無理やり入れたけど動かない件

できた

[[email protected] ~]$ sudo docker version  

Client: Docker Engine - Community  
 Version:           19.03.8  
 API version:       1.39 (downgraded from 1.40)  
 Go version:        go1.12.17  
 Git commit:        afacb8b  
 Built:             Wed Mar 11 01:27:04 2020  
 OS/Arch:           linux/amd64  
 Experimental:      false  

Server: Docker Engine - Community  
 Engine:  
  Version:          18.09.1  
  API version:      1.39 (minimum version 1.12)  
  Go version:       go1.10.6  
  Git commit:       4c52b90  
  Built:            Wed Jan  9 19:06:30 2019  
  OS/Arch:          linux/amd64  
  Experimental:     false  

ちなみに、ユーザー権限で行うと
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied
ってエラーになる
Dockerグループに操作するユーザーを追加すればこのメッセージは出なくなる
(セキュリティ的にびみょいかも?)

コンテナを起動する

DockerHUBというのがあるらしく、そこからイメージを取ってきて使うみたい
イメージを取得→イメージを展開(展開したものがコンテナ)→起動
という流れらしい

イメージを取得

Docker内で起動させたいもののイメージを探して取得する
docker searchコマンドでも検索できるが、DockerHUBのwebサイトから見るほうがわかりやすそうだ
試しに、Apacheを入れてWebサーバーを動作させてみる
Docker HUB

イメージを取得するにはdocker pullコマンドを使用する
DockerHUBからコマンドをコピペする
sudo docker pull httpd

コンテナをを起動

ダウンロードしたイメージを起動するには、イメージからコンテナを生成する
コンテナの生成にはdocker runまたdocker createを使用する
runはコンテナの生成と同時に起動をする、createは生成のみを行う
今回はrunを使用する
sudo docker run -d -p 80:80 httpd
-pはTCP/IPのポート設定。ホストの80番をコンテナの80番に転送する
-dはバックグラウンド実行。付けないとシェルに戻ってこれなくなる

起動出来たら
sudo docker psで状態を確認する

webアクセスしてみる

ホストのIPアドレスをブラウザから入力してアクセス
ファイアウォールは外してある前提

「It works! 」
ApacheだからTesting123かと思ったけど違うんだね

コンテナの停止

sudo docker stop [コンテナid]で停止される
コンテナidはsudo docker psで確認できる

[番外編]CentOSを入れてみる

sudo docker pull centos # イメージの取得  
sudo docker run -d centos # コンテナの起動  
sudo docker exec -it [コンテナid] /bin/bash # コンテナCentOSのシェルに入る  

何も指定しないでイメージを取得するとバージョン8らしい

[[email protected] /]# cat /etc/redhat-release  
CentOS Linux release 8.1.1911 (Core)  

感想

めちゃめちゃ軽くて驚いた
CentOSのイメージで70MB前後しかない、この軽さで仮想環境として動くんだからすごすぎる
CentOSはCentOSだろうけど、Apacheのイメージは何をベースに作られてるんだろ、謎い

おわり

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう