LoginSignup
31
32

More than 5 years have passed since last update.

オレオレ /etc/default/docker の設定

Last updated at Posted at 2014-12-22

はじめに

今年の4月にdocker meetup #2で、LTをさせて頂きました。
Docker地雷n本勝負
※「docker 地雷」で検索すると一番上に出てきます笑

そこでもお話したのですが、自分の環境ではdockerのデフォルト設定ですと、ディスク容量などで何かと問題がありましたので、その解決策を書いておきます。
以下はdockerインストール後、自分が行う設定です。

環境

  • OS: ubuntu14.04
  • docker version: 1.4.1

設定

/etc/default/docker
# Docker Upstart and SysVinit configuration file

# Customize location of Docker binary (especially for development testing).
#DOCKER="/usr/local/bin/docker"

# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
DOCKER_OPTS="-g /mnt/docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock --insecure-registry [DOCKER_PRIVATE_REGISTRY]:5000"

# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy="http://127.0.0.1:3128/"

# This is also a handy place to tweak where Docker's temporary files go.
#export TMPDIR="/mnt/bigdrive/docker-tmp"
export TMPDIR="/mnt/docker-tmp"

デフォルト設定から変更しているのは下記の点です。
※[DOCKER_PRIVATE_REGISTRY]の箇所は適宜変更して下さい。

  • DOCKER_OPTS
    • -g /mnt/docker
    • -H tcp://0.0.0.0:4243
    • -H unix:///var/run/docker.sock
    • --insecure-registry [DOCKER_PRIVATE_REGISTRY]:5000
  • export TMPDIR="/mnt/docker-tmp"

説明

DOCKER_OPTS="-g /mnt/docker"

dockerのrootディレクトリである /var/lib/docker の位置を変更するオプションです。
自分はrootパーティションが少ないのもあって、容量に余裕のある /mnt/docker にしています。

DOCKER_OPTS="-H tcp://0.0.0.0:4243"

これはtcpにてdocker APIを叩けるようにする設定です。

DOCKER_OPTS="-H unix:///var/run/docker.sock"

docker APIだけならば、上記の設定で良いのですが、それだけだとローカルでdockerコマンドを打つときに下記のようにする必要があります。

$ sudo docker -H=tcp://localhost:4243 version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): linux/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8

毎回このコマンドを書くのは億劫ですので、docker.sockも設定しておきます。
設定すると、通常通りのdockerコマンドが使用できます。

$ sudo docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): linux/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8

DOCKER_OPTS="--insecure-registry [DOCKER_PRIVATE_REGISTRY]:5000"

これは private docker registry を未使用の方は書かなくても良いものです。
最近(?)になって、docker private registry がセキュアになったようで、以前までの使用方法(docker run -p 5000:5000 registry)だとイメージpush時にエラーが出力されます。
そのエラーを回避するために、普通は証明書を発行した方が良いのですが、とりあえず使いたい場合などはこの設定を使うと有効です。

export TMPDIR="/mnt/docker-tmp"

これは地雷の頃の名残です…。dockerはイメージ生成の際に /tmp で作業を行います。rootディレクトリがかつかつな場合は、イメージ生成中、ディスクフルになりかねないため、余裕のある場所にしています。
※docker-tmpは予め作成しておき、適切なパーミッションの設定を行って下さい。

設定の反映と確認

$ ls /mnt
docker-tmp
$ sudo service docker restart
$ ls /mnt
docker docker-tmp

おわりに

以前と違って、dockerのインストールが随分簡単になりましたね。ubuntu14.04の場合、下記のコマンドでインストールができてしまいます。

$ curl -sSL https://get.docker.com/ubuntu/ | sudo sh

追記

[2015/08/31] centos7イメージ での yum update エラーに関して

  • 環境
    • Ubuntu 14.04 LTS
    • docker 1.8.1
$ sudo docker pull centos:centos7

上記で取得したイメージにて、yum updateを行ったところ、docker build時にエラーが発生した。解決策は下記のようになる。(参考:cap_set_file not permitted on aufs storage driver only #6980

sudo service docker stop

sudo vim /etc/default/docker
DOCKER_OPTS="-s devicemapper"

sudo service docker start

注意点としては、devicemapperに切り替わるためか、これまでのdocker imageなどが削除されてしまう点。前もって、バックアップを取ることを忘れないように。

31
32
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
31
32