あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

docker-composeのvolumesでファイル/ディレクトリをマウントしてみた

docker-composeはやれることが多いので少しずつ実践していきたいと思います!

やること

docker-composeのvolumesを使ってホスト上のファイルやディレクトリをマウントする。

ホストのディレクトリ構成

./docker-sample
  ├ docker-compose.yaml
  └ volume_sample
       └ test.txt

実践!

1.ホスト上のディレクトリをマウント
 1-1.docker-compose.yamlファイル作成

# vi docker-compose.yaml
version: '3'
services:
  web1:
    image: tomcat
    ports:
      - "8080:8080"
    volumes:
      - ./volume_sample:/volume

 1-2.コンテナ起動

# docker compose up -d
[+] Building 0.0s (0/0)
[+] Running 1/0
 ✔ Network docker-sample_default   Created                                                                                                                            0.1s
 ✔ Container docker-sample-web1-1  Started                                                                                                                            0.3s

# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                                       NAMES
73d092c6e7f8   tomcat                 "catalina.sh run"        4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   docker-sample-web1-1

 1-3.動作確認

(web1_container)# ls /volume
test.txt


2.ホスト上に新規ディレクトリを作成してマウント
 2-1.docker-compose.yamlファイル作成

# vi docker-compose.yaml
version: '3'
services:
  web1:
    image: tomcat
    ports:
      - "8080:8080"
    volumes:
      - volume:/volume
volumes:
  volume:

 2-2.コンテナ起動

# docker compose up -d
[+] Building 0.0s (0/0)
[+] Running 1/0                                                                                                                         0.0s
 ✔ Container docker-sample-web1-1  Running
 
# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                                       NAMES
5e32e8f2862b   tomcat                 "catalina.sh run"        8 seconds ago   Up 6 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   docker-sample-web1-1

 2-3.動作確認

# docker exec -it 5e32e8f2862b /bin/bash
(container)# ls /
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume
(container)# touch /volume/container_create_file.txt
(container)# ls /volume
container_create_file.txt
(container)# exit
# find / -name container_create_file.txt
/var/lib/docker/volumes/docker-sample_volume/_data/container_create_file.txt

※ホストの/var/lib/docker/volumes内にディレクトリが切られ、ファイルが保存された模様


感想

これでconfファイルなどもマウントできますね!(*´ω`*)