1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dockerでボリュームを作成して、コンテナにマウントする方法(ボリュームマウント)

Last updated at Posted at 2021-08-07

今回はDocker上でボリュームを作成し、作成したコンテナにマウントする方法について記載する。

Docker 2種類のマウント

まずDockerには2種類のマウント方法がある。
①ボリュームマウント
②バインドマウント

①は今回説明するもので、Docker Engine上に新しくボリュームを切って、それをコンテナにマウントする方法
<イメージ>
ボリュームマウント.jpg

②はDockerをインストールしているマシンの特定のディレクトリを、コンテナにマウントする方法(NASみたいイメージ)

#ボリュームの作成

まずボリュームを作成していこう。

docker volume create testvolume01
> docker volume ls
(省略)
***
***
local     testvolume01

他にもコンテナを作成している分、ボリュームが作成されている。

#ボリュームの詳細表示

> docker inspect volume01

[
    {
        "CreatedAt": "2021-08-07T09:01:56Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/testvolume01/_data",
        "Name": "testvolume01",
        "Options": {},
        "Scope": "local"
    }
]

マウントポイントは、docker内となっている。

Apacheコンテナを作成しつつ、ボリュームをマウント

docker run -d --name=httpd_volume01 -p 8080:80 --mount type=volume,src=testvolume01,dst=/usr/local/apache2/htdocs/ httpd

/usr/local/apache2/htdocs/ このフォルダにはindex.htmlが入っている。

> docker ps -a
CONTAINER ID   IMAGE        COMMAND                  CREATED              STATUS                    PORTS                                   NAMES
0bdd01904904   httpd        "httpd-foreground"       About a minute ago   Up About a minute         0.0.0.0:8080->80/tcp, :::8080->80/tcp   httpd_volume01

httpd_volume01というコンテナが作成されている。

ブラウザに「http://localhost:8080/」と入力すれば、『IT works!』と表示されるはず。

事前作成したボリュームがマウントされてるかの確認

「httpd_volume01」コンテナの詳細を見てみよう。

 > docker container inspect httpd_volume01

(省略)
            "Mounts": [
                {
                    "Type": "volume",
                    "Source": "testvolume01",
                    "Target": "/usr/local/apache2/htdocs/"
                }
            ],

(省略)

Sourceが作成した「testvolume01」であることがわかる。

コンテナの中に入ってindex.htmlを更新する

docker exec -it httpd_volume01 /bin/bash
# cd /usr/local/apache2/htdocs/
# ls
index.html

<viを使えるように>
# apt-get update   ←パッケージの更新
# apt-get install vim
# vi index.html

<「IT works!」を適当な文字に変更>
:wq 保存

先ほどのブラウザで「http://localhost:8080/」と入力すれば、変更した文字列が表示される。

別のコンテナを作成し、変更した文字列が表示されるかの確認

これだけじゃ本当にマウントされてるかわからない、という方は別のコンテナを作成して確認してみてください。

docker run -d --rm --name=httpd_after_volume01 -p 8081:80 --mount type=volume,src=testvolume01,dst=/usr/local/apache2/htdocs/ httpd

新しいブラウザで「http://localhost:8081/」と入力。
変更後の文字列が表示されれば、無事にボリューム内を共有できていることがわかる。

最後に

今回はDockerでボリュームを作成し、マウントをやってきました。
次回はDockerのホストOSのディレクトリとマウントする「バインドマウント」を紹介したいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?