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

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

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

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

Docker

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

Q&A

解決済

1回答

918閲覧

Dockerホストのソケットファイルをコンテナ内にマウントできない

ta1g3n

総合スコア35

docker-compose

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

Docker

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

0グッド

1クリップ

投稿2019/04/20 04:00

編集2019/04/20 11:05

前提・実現したいこと

他コンテナを操作するコンテナを作るため、ホストマシン内のDockerのソケットファイルをコンテナ内にマウントしたいと考えています。

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

docker-composeを使用し、下記のDockerfile、docker-compose.ymlの内容でビルド、起動を行いましたが、コンテナ内に当該ファイルが見つかりませんでした。

$ docker-compose up Creating network "test_default" with the default driver Building app_1 Step 1/5 : FROM centos:latest ---> 9f38484d220f Step 2/5 : USER root ---> Using cache ---> b99f8d0670b4 Step 3/5 : RUN groupadd -o -g <dockerグループのID> docker ---> Using cache ---> 1a1d98144db6 Step 4/5 : RUN usermod -g docker root ---> Using cache ---> 2dfc3f23984a Step 5/5 : RUN yum install -y docker docker-compose ---> Running in 8e5af836c2e4 #... #インストール処理 #... Complete! Removing intermediate container 8e5af836c2e4 ---> 5922fdb3f057 Successfully built 5922fdb3f057 Successfully tagged test_app_1:latest WARNING: Image for service app_1 was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`. Creating test_app_1_1 ... Creating test_app_1_1 ... done Attaching to test_app_1_1 #別ターミナルから $ docker exec -it test_app_1_1 /bin/bash [root@a8bbf96ca202 /]# ls /var/run console dmeventd-client lock lvmetad.pid setrans user cryptsetup dmeventd-server log mount systemd utmp dbus faillock lvm sepermit udev

なお、初回ビルドの出力であり、キャッシュ等はありません

該当のソースコード

Dockerfile

1FROM centos:latest 2USER root 3RUN groupadd -o -g <ホストのdockerグループのID> docker 4RUN usermod -g docker root 5RUN yum install -y docker docker-compose

dockercompose

1version: "3" 2services: 3 app_1: 4 build: . 5 volumes: 6 - "/var/run/docker.sock:/var/run/docker.sock" 7 privileged: true 8 command: /sbin/init

試したこと

上記の通り、コンテナ内のrootユーザーをホストのDockerグループと同じIDのグループに追加しましたが、ファイルは確認できませんでした。

また、ソケットファイルの上位ディレクトリである/var/runをマウントすることはできましたが、危険そうですし、現にホストマシンの音量が0になったりGUIが終了するなどの不具合が起きているため、ソケットファイルだけをコンテナと共有する手段を知りたいです。

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

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

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

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

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

iwamot

2019/04/20 05:23

コンテナ内に /var/run/docker.sock が存在しないということですよね。確認のために実行したコマンドとその実行結果を追記していただくことは可能でしょうか。
iwamot

2019/04/20 11:11

追記ありがとうございます。ぼくは「python:alpine」をベースイメージにして /var/run/docker.sock を普通にマウントできてます。OSによるのでしょうか。お力になれずすみません。
ta1g3n

2019/04/20 11:16

私もnginxイメージではdocker.sockをマウントできたので、centosのイメージの問題かもしれません
guest

回答1

0

自己解決

コンテナ起動時に/sbin/initを叩いてSystemdを有効にし、SystemdからApacheを起動する仕組みを取っていたところを、Dockerfileに以下の行を追加し、Systemdを有効にせず、コマンドから直接起動する仕組みに変えたところ、うまく行きました。

Dockerfile

1CMD httpd -D FOREGROUND

投稿2019/04/21 04:49

ta1g3n

総合スコア35

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問