Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

今年の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などが削除されてしまう点。前もって、バックアップを取ることを忘れないように。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした