LoginSignup
18
21

More than 5 years have passed since last update.

DockerでCentOS7のコンテナを使用する手順を、初めから丁寧に(Mac版)

Last updated at Posted at 2015-06-29

前提

  • MacでのDockerは、boot2dockerを使用しますよね。なのでインストール済みであること。
  • docker pull centos:7で、既にCentOS7のイメージをインストール済みであること。

問題点

  • centos7のコンテナを、今まで(Centos6系など)と同様に、以下のように起動します。
> docker run -i -t -d -p 8888:80 -p 10022:22 --name="container_name" centos:7 /bin/sh
  • すると、以下のようなエラーが吐かれてしまいますた。。。
Failed to get D-Bus connection: No connection to service manager.

原因

  • CentOS 7ではinitデーモンがsystemdに変更されたため。

解決策

  • nsenter を使って、CentOS7のコンテナを起動すると、うまくいきますよー。ってことで、手順は、以下の通りです。

nsenterのインストールから、コンテナ起動まで。

  • 分かりやすさのため、コマンドプロンプトのマークの意味は、以下のようにします。

    • > : OS X 内
    • $ : boot2docker VM内
    • % : Dockerコンテナ内

1. boot2dockerのパスを調べておく

> which boot2docker
/usr/local/bin/boot2docker

2. boot2docker VMに、sshログイン

> boot2docker ssh

3. nsenterをインストール

$ docker run --rm -v /usr/local/bin/boot2docker:/target jpetazzo/nsenter

4. boot2docker VM内のPATHに、/usr/local/bin/boot2dockerを追加する。

$ echo 'export PATH=/usr/local/bin/boot2docker:$PATH' >> ~/.profile
$ source ~/.profile
  • OS X 内の.profileではなく、boot2docker VM内.profileですよー。気をつけて!!

5. nsenterのパスが通ったか?を確認

$ which nsenter
/usr/local/bin/boot2docker/nsenter

6. centos7のコンテナを起動

  • 「boot2docker ssh」でログイン状態にあることが前提

  • ポイント

・特権モードにする(--privileged)
・コンテナで起動されるコマンドは/sbin/initにする
$ sudo docker run --dns 8.8.8.8 --privileged -d -p 8888:80 -p 10022:22 --name="container_name" centos:7 /sbin/init
  • sudoを付けてコンテナを起動してね。でないと、後でPermission Errorというエラーが吐かれちゃうよー。気を付けて!!

7. nsenterを使用してコンテナに入る。

  • 良い子は、ここでも、ちゃんと sudoを付けようね。
$ sudo nsenter -t $(sudo docker inspect --format '{{.State.Pid}}' container_name) -m -u -i -n -p /bin/sh
  • これでsystemctlが使えます。
% systemctl get-default
multi-user.target

最後に

  • うまくいきましたか? よかったら、ぜひ参考にしてください。
18
21
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
18
21