質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

185閲覧

Dockerコンテナのバインドマウントされたディレクトリの中にサブディレクトリをつくりたい

Chikage_Haruse

総合スコア14

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2023/09/07 12:43

実現したいこと

Dockerコンテナのバインドマウントされたディレクトリの中にサブディレクトリを作りたい

前提

Softether VPNを自分でビルドして運用しようとしています。
ログファイルはホストに保存したいので、ログのディレクトリはdocker-composeを使用してバインドマウントを行っています。

発生している問題・エラーメッセージ

コンテナ内でlsしてみても、ホストでlsしてみても、マウントされたディレクトリの中にあるはずのサブディレクトリが見当たりません。
(ファイルはすべて問題なく生成されています。)
docker-compose.yml内のvolumeを削除すると正常にサブディレクトリが生成されていることは確認しました。

該当のソースコード

Dockerfile

docker

1FROM alpine as builder 2ARG GIT_TAG=v4.38-9760-rtm 3RUN mkdir /usr/local/src && apk add binutils --no-cache\ 4 build-base \ 5 readline-dev \ 6 openssl-dev \ 7 ncurses-dev \ 8 git \ 9 cmake \ 10 zlib-dev \ 11 libsodium-dev \ 12 gnu-libiconv \ 13 wget 14 15ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so 16WORKDIR /usr/local/src 17RUN wget https://raw.githubusercontent.com/el1n/OpenWRT-package-softether/master/softethervpn/patches/102-regionunlock.patch 18RUN git clone -b ${GIT_TAG} https://github.com/SoftEtherVPN/SoftEtherVPN_Stable.git 19ENV USE_MUSL=YES 20RUN cd SoftEtherVPN_Stable &&\ 21 patch -p1 < ../102-regionunlock.patch &&\ 22 git submodule init &&\ 23 git submodule update &&\ 24 ./configure &&\ 25 make 26 27FROM alpine 28RUN apk add --no-cache readline \ 29 openssl \ 30 libsodium \ 31 gnu-libiconv\ 32 iptables 33ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so 34ENV LD_LIBRARY_PATH /root 35WORKDIR /usr/local/bin 36# ここから問題の箇所 37VOLUME /mnt 38RUN ln -s /mnt/vpn_server.config vpn_server.config && \ 39 mkdir /mnt/backup.vpn_server.config &&\ 40 ln -s /mnt/backup.vpn_server.config backup.vpn_server.config &&\ 41 ln -s /mnt/lang.config lang.config &&\ 42 ln -s /mnt/adminip.txt adminip.txt &&\ 43 ln -s /mnt/server_log server_log &&\ 44 mkdir /mnt/server_log &&\ 45 ln -s /mnt/security_log security_log &&\ 46 mkdir /mnt/security_log &&\ 47 ln -s /mnt/packet_log packet_log &&\ 48 mkdir /mnt/packet_log 49COPY --from=builder /usr/local/src/SoftEtherVPN_Stable/bin/vpnserver/vpnserver /usr/local/src/SoftEtherVPN_Stable/bin/v> 50 51EXPOSE 443/tcp 992/tcp 1194/tcp 1194/udp 5555/tcp 500/udp 4500/udp 52CMD ["/usr/local/bin/vpnserver", "execsvc"]

docker-compose.yml

yaml

1version: '3' 2 3networks: 4 vlan0: 5 name: vlan0 6 driver: macvlan 7 driver_opts: 8 parent: eno1 9 ipam: 10 config: 11 - subnet: *.*.*.*/* 12 gateway: *.*.*.* 13 14services: 15 softether: 16 build: . 17 cap_add: 18 - NET_ADMIN 19 restart: always 20 networks: 21 vlan0: 22 ipv4_address: *.*.*.* 23 volumes: 24 - "/etc/localtime:/etc/localtime:ro" 25 - "/etc/timezone:/etc/timezone:ro" 26 - "./softether_data:/mnt"

試したこと

./softether_dataの削除
→変化なし

バインドマウントをやめてみる
→正常にディレクトリが作られていることを確認

補足情報(FW/ツールのバージョンなど)

OS: Ubuntu Server 22.04.3
Docker version 24.0.6, build ed223bc

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bsdfan

2023/09/08 04:31

> マウントされたディレクトリの中にあるはずのサブディレクトリが見当たりません というのは、Dockerfile で作ったディレクトリが、マウントすると消えてしまったという意味ですか?
Chikage_Haruse

2023/09/08 18:40

はい、そのとおりです。 Dockerfileのコメントの後にあるmkdirで作ったディレクトリが全て消えてしまいます。
bsdfan

2023/09/08 22:31

bind ではなく、volumeのマウントだったら、初回のまっさらのときはイメージに存在しているファイルやディレクトリがコピーされたと思いますが、bind ではそのようなことはしてくれなかったと思います。 (この辺りちゃんと書かれてる公式ドキュメントが見つからなかった)
Chikage_Haruse

2023/09/09 10:04

なるほど、そういうことでしたか… すると解決方法としては 1.バインドマウントをやめてボリュームを作る 2.起動後に手動でディレクトリを作る あたりでしょうか マウントしたディレクトリにはコンフィグも入っているので、とりあえずは2で進めてみようと思います。
guest

回答1

0

自己解決

初期化の際にどうやってもサブディレクトリは消えるため、ディレクトリ構成を変更することでそもそも空っぽのディレクトリのみバインドするように改修しました。

投稿2023/09/24 14:30

Chikage_Haruse

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問