この記事ではDockerを使ってCentOS環境を構築する方法に関して書きます。
前提(実行環境)
- macOS Catalina バージョン 10.15.7
- Docker version 20.10.5
既にDockerがinstallされている前提で進めていきます。
Dockerがinstallされているか?の確認方法は下記コマンドを実行してください。
$ docker -v
Dockerがinstallされている場合は下記のように表示されます。
Docker version 20.10.5, build 55c4c88
DockerでCentOSの最新の環境を構築する
それでは実際にCentOS環境をつくっていきましょう!
コマンドの詳細は記事の後半にて解説をします。
CentOSのイメージを取得する
イメージはDocker Hubで共有されているので、そちらを利用します。
ターミナルで下記コマンドを実行しましょう。
$ docker pull CentOS
このように記述することによって、自動的に最新版を取得してくれます。
下記のようにターミナルに出力がされます。
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
これでイメージをinstallできたので確認をしてみましょう。
下記コマンドを入力すると確認することができます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 4 months ago 209MB
DockerイメージからDockerコンテナを作成する
イメージのinstallが完了したので、イメージからコンテナを起動させます。
下記コマンドをターミナルで実行してください。
$ docker run -it -d --name mycentos centos
コマンドを実行するとコンテナが起動します。
コンテナの起動は下記コマンドで確認することができます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5684ae3c7d1a centos "/bin/bash" 3 seconds ago Up 2 seconds mycentos
DockerでCentOSに入る
コンテナが起動したためCentOSに入り、作業を開始しましょう!
下記コマンドをターミナルで実行してください。
$ docker exec -it 5684ae3c7d1a bin/bash
実行が上手くいくと下記のような表示になるはずです。
root@5684ae3c7d1a:/#
これで自由に使えるCentOS環境を構築することができました!
Dockerコマンドに関して学ぶ
実行してきた各コマンドに関して解説をします。
Docker Hub
Docker Hubはユーザーが作成したコンテナをアップロードして公開・共有できるサービスです。
概念として、Githubがイメージしやすいのではないでしょうか?
ここで公開されているコンテナは自由にダウンロードができます。また、公開されているコンテナは「リポジトリ」という単位で管理され、タグを使ったバージョン管理も可能です。
こちらからDocker Hubにアクセスすることができます。
Docker Hub
docker pull
docker pull コマンドは、イメージを Docker Hub から取得(pull)するコマンドです。
$ docker pull [OPTIONS] NAME[:TAG|@DIGEST]
pullをする際、バージョンを指定してpullすることもできます。
下記の場合は、Ubuntu18.04のバージョンを指定してpullしています。
$ docker pull centos:7
//下記はコマンド実行後のログ
18.04: Pulling from library/ubuntu
5a132a7e7af1: Pull complete
fd2731e4c50c: Pull complete
28a2f68d1120: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
Status: Downloaded newer image for centos:7
バージョンを指定しない場合は自動で(最新)のものがインストールされます。
参考
docker pull | Docker Documentation
docker images
docker imagesコマンドは、docker imageの一覧を表示してくれます。
$ docker images [OPTIONS] [REPOSITORY[:TAG]]
そのため、docker pullでDocker Hubからインストールしたimageの一覧を確認することができます。
$ docker images
//以下実行結果
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 77af4d6b9913 19 hours ago 1.089 GB
committ latest b6fa739cedf5 19 hours ago 1.089 GB
<none> <none> 78a85c484f71 19 hours ago 1.089 GB
docker latest 30557a29d5ab 20 hours ago 1.089 GB
<none> <none> 5ed6274db6ce 24 hours ago 1.089 GB
postgres 9 746b819f315e 4 days ago 213.4 MB
postgres 9.3 746b819f315e 4 days ago 213.4 MB
postgres 9.3.5 746b819f315e 4 days ago 213.4 MB
postgres latest 746b819f315e 4 days ago 213.4 MB
参考
docker images | Docker Documentation
docker run
docker runコマンドは、docker imageからコンテナを起動させるコマンドです。
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
下記コマンドを元に[OPTIONS]の説明をしていきます。
$ docker run -it -d --name mycentos centos
-it
-itは、 -i と -t に分けることができます。
-i
「interactive」の略で、「双方向のやりとりができるようになること」、「ホストのターミナルからの入力がコンテナの標準入力につなげる役割」とのことです。
-t
「tty」の略で、「コンテナの標準出力をホストの標準出力につなげること」とのことです。
-d
-dは「デタッチド」のことです。このオプションを使うことによって、コンテナをデタッチド・モードで起動することができます。
デタッチド・モードで起動することによって、バックグラウンドでコンテナを立ち上げることができるため、コンソールを使うことができます。
バックグラウンドで立ち上げない場合、コンソールがコンテナのログに専有されて、他のコマンドを打つことができなくなります。
わかりずらいと思うので「-d」をなしで実際に実行してみます。
$ docker run -it --name mycentos centos
root@5684ae3c7d1a:/#
コンソールの入力画面が開かれました。
こちらは実際にオプションありなしで実行してみると、違いがわかりやすいと思います。
–name コンテナ名
「–name」オプションで、コンテナに名前をつけることができます。「–name」をつけない場合、任意で名前がつくため、運用がしずらくなるため名前をつけることをおすすめします。
docker ps
docker psコマンドは、コンテナの一覧を表示してくれます。
$ docker ps [OPTIONS]
「-a」オプションをつけることによって、停止中のコンテナも含めて表示してくれます。
$ docker ps -s
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE SIZE
e90b8831a4b8 nginx "/bin/bash -c 'mkdir " 11 weeks ago Up 4 hours my_nginx 35.58 kB (virtual 109.2 MB)
00c6131c5e30 telegraf:1.5 "/entrypoint.sh" 11 weeks ago Up 11 weeks my_telegraf 0 B (virtual 209.5 MB)
参考
docker ps | Docker Documentation
docker exec
docker exec コマンドは、起動中のコンテナに入り、コンテナコマンドラインを起動してくれます。
$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker runコマンドを実行時に「–name」オプションを指定しておくことによって、自分が名前をつけたコンテナ名で実行することができます。
参考
docker exec | Docker Documentation
DockerでのCentOS環境構築のまとめ
いかがでしたか?
これで自分だけの、好き放題できる環境を構築することができました。
記事に関して気になる点がございましたら、TwitterなどでDMいただけますと幸いです!
エンジニア転職に関してまとめました。