「Docker」の版間の差分
編集の要約なし |
編集の要約なし |
||
| 5行目: | 5行目: | ||
{{Related|systemd-nspawn}} |
{{Related|systemd-nspawn}} |
||
{{Related|Linux Containers}} |
{{Related|Linux Containers}} |
||
{{Related4|Lxc-systemd}} |
|||
{{Related|Vagrant}} |
{{Related|Vagrant}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
| 27行目: | 26行目: | ||
== 設定 == |
== 設定 == |
||
=== プロキシ === |
|||
| ⚫ | |||
プロキシの設定は2つに分けられます。一つは Docker デーモンのホストの設定で、もうひとつはコンテナからプロキシにアクセスできるようにするための設定です。 |
|||
==== デーモンのプロキシの設定 ==== |
|||
| ⚫ | |||
[Service] |
[Service] |
||
Environment="http_proxy=192.168.1.1:3128" |
Environment="http_proxy=192.168.1.1:3128" |
||
ExecStart= |
|||
ExecStart=/usr/bin/docker -d -g /var/yourDockerDir |
|||
{{Note|上記ではプロクシサーバが {{ic|192.168.1.1}} になっています、{{ic|127.0.0.1}} は使わないでください。}} |
{{Note|上記ではプロクシサーバが {{ic|192.168.1.1}} になっています、{{ic|127.0.0.1}} は使わないでください。}} |
||
==== コンテナの設定 ==== |
|||
{{ic|docker.service}} ファイルの設定はコンテナには換算されません。{{ic|Dockerfile}} で {{ic|ENV}} 変数を設定する必要があります: |
|||
FROM base/archlinux |
|||
ENV http_proxy="<nowiki>http://192.168.1.1:3128</nowiki>" |
|||
ENV https_proxy="<nowiki>https://192.168.1.1:3128</nowiki>" |
|||
[https://docs.docker.com/reference/builder/#env Docker] は Dockerfile で {{ic|ENV}} を使って設定する方法について詳しい情報を提供しています。 |
|||
=== デーモンのソケットの設定 === |
|||
''docker'' デーモンはデフォルトで [[Wikipedia:ja:UNIXドメインソケット|Unix ソケット]]を使います。特定のポートで待機させるには、{{ic|/etc/systemd/system/docker.socket}} を編集して、{{ic|ListenStream}} を使用したいポートに置き換えてください: |
''docker'' デーモンはデフォルトで [[Wikipedia:ja:UNIXドメインソケット|Unix ソケット]]を使います。特定のポートで待機させるには、{{ic|/etc/systemd/system/docker.socket}} を編集して、{{ic|ListenStream}} を使用したいポートに置き換えてください: |
||
| 54行目: | 69行目: | ||
ExecStart=/usr/bin/docker -d -e lxc |
ExecStart=/usr/bin/docker -d -e lxc |
||
== |
== イメージ == |
||
=== Arch Linux === |
|||
==== x86_64 ==== |
|||
| ⚫ | |||
次のコマンドは x86_64 イメージを取得します: |
|||
| ⚫ | |||
i686 アーキテクチャでは、次のコマンドを使って取得した x86_64 のイメージを使用することは'''できません''': |
|||
# docker pull base/archlinux |
# docker pull base/archlinux |
||
=== |
==== i686 ==== |
||
Docker Registry のデフォルトの Arch Linux イメージは x86_64 だけです。i686 イメージは手動で作成する必要があります。 |
|||
| ⚫ | |||
代わりに、[https://registry.hub.docker.com/u/base/archlinux/ docker base/archlinux registry] をチェックして {{ic|mkimage-arch.sh}} リンクをクリックして {{ic|mkimage-arch.sh}} と {{ic|mkimage-arch-pacman.conf}} を同一のフォルダにダウンロードしてください。そして、スクリプトに実行可能属性を付与して実行してください: |
代わりに、[https://registry.hub.docker.com/u/base/archlinux/ docker base/archlinux registry] をチェックして {{ic|mkimage-arch.sh}} リンクをクリックして {{ic|mkimage-arch.sh}} と {{ic|mkimage-arch-pacman.conf}} を同一のフォルダにダウンロードしてください。そして、スクリプトに実行可能属性を付与して実行してください: |
||
| 74行目: | 89行目: | ||
$ sed -i 's/timeout 60/timeout 120/' mkimage-arch.sh |
$ sed -i 's/timeout 60/timeout 120/' mkimage-arch.sh |
||
=== Debian |
=== Debian === |
||
[[AUR]] の {{AUR|debootstrap}} で Debian イメージを作成: |
[[AUR]] の {{AUR|debootstrap}} で Debian イメージを作成: |
||
| 83行目: | 98行目: | ||
# tar cpf - . | docker import - debian |
# tar cpf - . | docker import - debian |
||
# docker run -t -i --rm debian /bin/bash |
# docker run -t -i --rm debian /bin/bash |
||
=== Skype === |
|||
| ⚫ | |||
== 便利なヒント == |
|||
実行中のコンテナの IP アドレスを取得するには: |
|||
{{hc|<nowiki>$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-name OR id> </nowiki>| |
|||
172.17.0.37}} |
|||
== トラブルシューティング == |
== トラブルシューティング == |
||
2015年8月9日 (日) 13:40時点における版
Docker は軽量コンテナとしてあらゆるアプリケーションを詰めて運んで実行できるユーティリティです。
インストール
公式リポジトリにある docker パッケージをインストールして docker.service を有効化してください。i686 アーキテクチャの場合、docker-gitAUR をインストールしてください。動作検証するために、次を実行:
# docker info
docker を通常ユーザーで実行できるようにしたい場合は、ユーザーを docker グループに追加してからログインし直してください:
# gpasswd -a user docker
または、セッションが新しいグループを使うようにするには:
$ newgrp docker
設定
プロキシ
プロキシの設定は2つに分けられます。一つは Docker デーモンのホストの設定で、もうひとつはコンテナからプロキシにアクセスできるようにするための設定です。
デーモンのプロキシの設定
/usr/lib/systemd/system/docker.service を /etc/systemd/system/docker.service にコピーしてください。そして /etc/systemd/system/docker.service を以下のように編集してください、http_proxy はプロキシサーバーに -g <path> は docker のホームに置き換えて下さい。デフォルトのパスは /var/lib/docker です。
[Service] Environment="http_proxy=192.168.1.1:3128"
192.168.1.1 になっています、127.0.0.1 は使わないでください。コンテナの設定
docker.service ファイルの設定はコンテナには換算されません。Dockerfile で ENV 変数を設定する必要があります:
FROM base/archlinux ENV http_proxy="http://192.168.1.1:3128" ENV https_proxy="https://192.168.1.1:3128"
Docker は Dockerfile で ENV を使って設定する方法について詳しい情報を提供しています。
デーモンのソケットの設定
docker デーモンはデフォルトで Unix ソケットを使います。特定のポートで待機させるには、/etc/systemd/system/docker.socket を編集して、ListenStream を使用したいポートに置き換えてください:
[Socket] ListenStream=0.0.0.0:2375
Docker 0.9.0 -- 1.2.x と LXC
バージョン 0.9.0 から Docker は LXC に依存しないでコンテナを起動できる libcontainer という新しい方法を提供しています。
lxc exec ドライバーや -lxc-conf オプションは将来的には削除される可能性があります [1]。
今後、デフォルトで Docker 0.9.0+ で管理されるコンテナで lxc-attach を使用する必要がなくなります。Docker デーモンを実行するには引数として -e lxc が必要です。
/etc/systemd/system/docker.service.d/ 下に lxc.conf という名前のファイルを以下の内容で作成することができます:
[Service] ExecStart= ExecStart=/usr/bin/docker -d -e lxc
イメージ
Arch Linux
x86_64
次のコマンドは x86_64 イメージを取得します:
# docker pull base/archlinux
i686
Docker Registry のデフォルトの Arch Linux イメージは x86_64 だけです。i686 イメージは手動で作成する必要があります。
イメージの作成
代わりに、docker base/archlinux registry をチェックして mkimage-arch.sh リンクをクリックして mkimage-arch.sh と mkimage-arch-pacman.conf を同一のフォルダにダウンロードしてください。そして、スクリプトに実行可能属性を付与して実行してください:
$ chmod +x mkimage-arch.sh $ cp /etc/pacman.conf ./mkimage-arch-pacman.conf # or get a pacman.conf from somewhere else $ LC_ALL=C ./mkimage-arch.sh # LC_ALL=C because the script parses the console output # docker run -t -i --rm archlinux /bin/bash # try it
ネットワーク接続や CPU が遅い場合は、ビルドのタイムアウト時間を伸ばすことができます:
$ sed -i 's/timeout 60/timeout 120/' mkimage-arch.sh
Debian
AUR の debootstrapAUR で Debian イメージを作成:
# mkdir wheezy-chroot # debootstrap wheezy ./wheezy-chroot http://http.debian.net/debian/ # cd wheezy-chroot # tar cpf - . | docker import - debian # docker run -t -i --rm debian /bin/bash
Skype
Skype#Docker を参照してください。
便利なヒント
実行中のコンテナの IP アドレスを取得するには:
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-name OR id>
172.17.0.37
トラブルシューティング
Docker info でエラーが出力される
docker info を実行すると以下のようなエラーが表示される場合:
FATA[0000] Get http:///var/run/docker.sock/v1.17/info: read unix /var/run/docker.sock: connection reset by peer. Are you trying to connect to a TLS-enabled daemon without TLS?
おそらく bridge モジュールがロードされていません。lsmod を実行することで確認できます。ロードされていない場合は、modprobe を実行してロードするか、再起動してみてください (カーネルをアップグレードしたときに、bridge が最新のカーネル用にビルドされていた場合、再起動が必要になります)。
詳しくは GitHub の issue を見てください。