Dockerにはいろんな使い方があるのですが、その中でも最も基本的な使い方を説明します。すでにDockerがインストールされている状態を想定しているので、インストールと初期設定が終わっていることが前提になります。
ここではdocker pull
でDockerhubからイメージを引っ張り出して構築します。Dockerhub
現時点ではversion 19.03.2
を前提に話をすすめます。(2019-09-28時点)
$ docker --version
Docker version 19.03.2, build 6a30dfc
Dockerを運用するディレクトリを作成します。
$ mkdir -m 755 ~/mydocker
$ cd mydocker
DockerhubからCentOS7の最新をおとします。
$ docker pull centos:latest
latest: Pulling from library/centos
Digest: sha256:307835c385f656ec2e2fec602cf093224173c51119bbebd602c53c3653a3d6eb
Status: Image is up to date for centos:latest
docker.io/library/centos:latest
これでOK。
Digest:のコードを控えておいてdocker run
します。docker runはこれだけでいろんなオプションが詰め込まれすぎていて一冊本かけるんじゃないかというレベルなので、基本的なところだけおさえておきましょう。
systemctl
が使えるように権限を与えます。-p 8080:80
の場合はlocalhost:8080
にアクセスすることになります。$ docker run -d --privileged --name test -p 80:80 -v ~/mydocker:/var/www/html:rw centos:latest /sbin/init 307835c385f656ec2e2fec602cf093224173c51119bbebd602c53c3653a3d6eb
Dockerのコンテナが立ち上がったか確認します。testというdockerコンテナが立ち上がりました。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7043fa4d06cc centos:latest "/sbin/init 307835c3…" 29 seconds ago Up 8 seconds 0.0.0.0:80->80/tcp test
コンテナを起動します。コンテナと言えどもさすがOS、立ち上がるのに時間がかかる。
$ docker start
これでコンテナでCentOS7が立ち上がりました。
コンテナの中に入ります。
$ docker exec -it test /bin/bash
[root@7043fa4d06cc /]#
これでCentOS7の中に入れました。いつものようにコマンドラインで確認してみます。
# cd /
# ls -al
drwxr-xr-x 1 root root 4096 Sep 28 07:17 .
drwxr-xr-x 1 root root 4096 Sep 28 07:17 ..
-rwxr-xr-x 1 root root 0 Sep 28 07:17 .dockerenv
-rw-r--r-- 1 root root 12090 Aug 1 01:10 anaconda-post.log
lrwxrwxrwx 1 root root 7 Aug 1 01:09 bin -> usr/bin
drwxr-xr-x 14 root root 3260 Sep 28 07:18 dev
drwxr-xr-x 1 root root 4096 Sep 28 07:18 etc
drwxr-xr-x 2 root root 4096 Apr 11 2018 home
lrwxrwxrwx 1 root root 7 Aug 1 01:09 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Aug 1 01:09 lib64 -> usr/lib64
drwxr-xr-x 2 root root 4096 Apr 11 2018 media
drwxr-xr-x 2 root root 4096 Apr 11 2018 mnt
drwxr-xr-x 2 root root 4096 Apr 11 2018 opt
dr-xr-xr-x 228 root root 0 Sep 28 07:17 proc
dr-xr-x--- 2 root root 4096 Aug 1 01:10 root
drwxr-xr-x 14 root root 300 Sep 28 07:18 run
lrwxrwxrwx 1 root root 8 Aug 1 01:09 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 Apr 11 2018 srv
dr-xr-xr-x 13 root root 0 Sep 28 07:20 sys
drwxrwxrwt 7 root root 4096 Aug 1 01:10 tmp
drwxr-xr-x 13 root root 4096 Aug 1 01:09 usr
drwxr-xr-x 1 root root 4096 Sep 28 07:18 var
おおLinuxだ!いい時代になりましたねぇ。ここから先は基本的にはCentOS7の使い方になりますが、ちょっと面倒くさいのはCentOS7の実際のポートをDockerの仮想ポートみたいなものをつなげる作業が必要です。Dockerの中でpostfixを動かしてport:589とかに接続してもそのままでは通信できません。
# yum -y install httpd
# systemctl start httpd.service
ブラウザーからローカルホストにアクセスする
http://localhost/
あるいは、$ curl -k localhost
とかでもいいです。
Apacheのいつもの初期画面が出たらOK。
Docker内で起動するCentOS7内のApacheのDocumentrootは、docker run
で指定したディレクトリにあたります。
Dockerコンテナの停止(コンテナは残ります。)
$ docker stop test
Dockerコンテナの削除
$ docker rm 4dee3a3dd03f
元々のイメージの後始末も必要なんですが、ここでは割愛。
バージョン確認
$ docker --version
DockerのイメージをDockerhubからpullする。https://hub.docker.com/で検索して使いたいイメージを指定します。
$ docker pull [イメージ名]
(例)$ docker pull centos:latest
Dockerの実行
いっぱいやることあるので、ここでは割愛
$ docker run [オプション or 引数]
Docker起動
$ docker start [コンテナID | コンテナ名]
Dockerコンテナの確認
$ docker ps -a
Docker停止
$ docker stop [コンテナID | コンテナ名]
Dockerコンテナの削除
$ docker rm [コンテナID | コンテナ名]