目次
Dockerをインストールする
Dockerコンテナを作るにも、まずはDockerをインストールしないことには何も始まりません。
今回Macを対象とさせていただきます。Windowsの方はごめんなさい・・・
バージョンは10.15。メモリは16GBとなります。
Docker新規アカウントの作成
それでは、まずDockerのアカウントを作成しましょう。
上記ボタンからDocker公式サイトに遷移し、sign upをクリックします。

その後は各項目を埋めて登録しましょう!

Dockerをダウンロードする
左側のStableをクリックしてダウンロードしましょう。

ダウンロードしたファイルをクリックしてインストールを行います。
認証を要求されたらパスワードを入力してください。
その後、荷物を乗せた鯨のアイコンが現れれば無事インストールはOKです!

Docker Desktop is running (緑色マーク)となっていれば起動しています。

Dockerコンテナを作成する流れ
では、Dockerコンテナを作るためにもターミナルへ移動しましょう!
移動ができたらどこのディレクトリでも良いので、下記コマンドを実行してみて下さい。
1 2 |
$ docker -v Docker version 19.03.4, build 9013bf5 |
インストールしたDockerのバージョンが確認できるはずです。
確認ができましたら実際にコンテナの作成を行いましょう。
Dockerイメージの取得
今回使用するDockerイメージはCentOSです。
CentOSをベースにPHPなどのアプリケーション実行環境を整えることが最近多いように感じられますね!
それではコンテナの作成に移りましょう!
いやいや、ちょっと待てと。
そもそもDockerイメージとは何かを説明していませんでしたね。
Dockerイメージとは
コンテナのファイルシステム、設定のまとめ。
Dockerイメージは保存、再利用することができ、公式サイトであるDocker Hubには30万以上のイメージが公開されています。
と言ったように、Dockerイメージとはファイルシステム、設定のまとめであり、そのDockerイメージを元に仮想環境であるDockerコンテナは作成されるのです。
保存したDockerイメージは下記コマンドにて確認することができますよ!
1 2 |
$ docker image list centos centos7 5e35e350aded 9 months ago 203MB |
ではDockerイメージについての説明も済んだので、実際に Dockerコンテナを作成しましょう。
先ほど紹介したDockerHubからイメージを探すのもよいのですが、今回はコマンドベースで利用するDockerイメージを探しましょう。
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 |
$ docker search centos centos The official build of CentOS. 6124 [OK] ansible/centos7-ansible Ansible on Centos7 132 [OK] consol/centos-xfce-vnc Centos container with "headless" VNC session… 119 [OK] jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos - … 115 [OK] centos/systemd systemd enabled base container. 86 [OK] centos/mysql-57-centos7 MySQL 5.7 SQL database server 80 imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 58 [OK] tutum/centos Simple CentOS docker image with SSH access 47 centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 46 kinogmt/centos-ssh CentOS with SSH 29 [OK] pivotaldata/centos-gpdb-dev CentOS image for GPDB development. Tag names… 12 guyton/centos6 From official centos6 container with full up… 10 [OK] centos/tools Docker image that has systems administration… 6 [OK] drecom/centos-ruby centos ruby 6 [OK] pivotaldata/centos Base centos, freshened up a little with a Do… 4 darksheer/centos Base Centos Image -- Updated hourly 3 [OK] pivotaldata/centos-mingw Using the mingw toolchain to cross-compile t… 3 pivotaldata/centos-gcc-toolchain CentOS with a toolchain, but unaffiliated wi… 3 miko2u/centos6 CentOS6 日本語環境 2 [OK] blacklabelops/centos CentOS Base Image! Built and Updates Daily! 1 [OK] indigo/centos-maven Vanilla CentOS 7 with Oracle Java Developmen… 1 [OK] mcnaughton/centos-base centos base image 1 [OK] smartentry/centos centos with smartentry 0 [OK] pivotaldata/centos7-dev CentosOS 7 image for GPDB development 0 pivotaldata/centos6.8-dev CentosOS 6.8 image for GPDB development 0 |
ずらっと何やら表らしきものが出てきましたね。
これがDockerHubで公開されているCentOSに関連するDockerイメージ達です。
今回は公式イメージを使用しましょう。
1 2 3 |
$ docker pull centos:centos7 $ docker image list centos centos7 5e35e350aded 9 months ago 203MB |
これでDockerイメージをDockerHubから取得することができました。
pullと聞くと何やらGitを思い出しますね。リモートからローカルにイメージを落としてきているので納得のpullです。
Dockerコンテナの作成
それでは本題のDockerコンテナの作成です。
1 2 3 4 |
$ docker run -it -d –name {コンテナ名} {イメージ} 今回は下記としましょう $ docker run -it -d –name centos7 centos:centos7 |
- -d : バックグラウンドでコンテナを実行
- –name : コンテナに名前をつける
- -it : コンテナにインタラクティブモードで入ってターミナルを起動
1 2 |
$ docker ps -a 65f9aae7d0df centos:centos7 "/bin/bash" 7 seconds ago Up 4 seconds centos7 |
実際にコンテナが作られていることが確認できましたね!
これでコンテナの作成の流れは終了です。
どうですか? コマンドだけを淡々と実行していくなら5つ以内にコンテナを作ることができるのです。
思ったより簡単ではないでしょうか?
それでは作成したコンテナに接続してみましょう。
1 2 |
$ docker exec -it centos7 /bin/bash [root@65f9aae7d0df /]# |
- exec : コンテナの中で実行
- -it : コンテナにインタラクティブモードで入ってターミナルを起動
接続できたでしょうか?
これで本当にDockerコンテナの作成手順は終了となります。
最後に作成した練習用のコンテナを削除しましょう。
1 2 |
$ docker stop centos7 $ docker rm centos7 |
コンテナを削除するにはまずstopで停止する必要があります。
もし、起動するなら逆にstopをstartに変更して下さい。
1 |
$ docker ps -a |
これで作成したコンテナが消えていれば無事削除は完了となります。
Dockerはまだまだ奥が深く、理解するにはかなりの時間を要するでしょう。
しかし、理解することができれば、多くの現場で高い評価を受けるはずです。
また、Dockerにはdocker-composeと呼ばれる機能があります。
そちらについては下記記事で触れていますので、よろしければご覧下さい。

(今回の実行結果は過去に私が実行した結果を引用しているため、時系列があっていないことがありますので、ご理解の程よろしくお願いします。)