DRYな備忘録

Don't Repeat Yourself.

Debian wheezyで、はじめてのDocker

ちょっと古いけど、これがとても参考になります

f:id:otiai10:20151019224153j:plain

つまったとこ

There is no public key available for the following key IDs:

apt-get update時にW: There is no public key available for the following key IDs:というエラーが出る。

解決: How to fix no public key available for the following key IDs in debian – DEVGET.NET

% sudo apt-get install debian-keyring debian-archive-keyring

Depends: init-system-helpers (>= 1.18~) but it is not installable

apt-get install docker-engine時にDepends: init-system-helpers (>= 1.18~) but it is not installableというエラーが出る。

init-system-helpers をインストールしようにも

% sudo apt-get install init-system-helpers
E: Package 'init-system-helpers' has no installation candidate

となる。

解決: Linux Kernel 3.8 以上にする

Unable to locate package linux-headers-amd64

上記の通りlinux kernelを3.8以上にしようとして、apt-get install linux-header-amd64するとUnable to locate package linux-headers-amd64というエラーが出る。

解決: Install linux-headers on debian unable to locate package - Stack Overflow

% apt-cache search linux-header
% sudo apt-get install linux-headers-amd64

だった。これにてrebootする。

Failed to fetch http://get.docker.io/ubuntu/dists/docker/main/binary-amd64/Packages 301 Moved Permanently

apt-get updateするときに上記のエラーが出る。

解決: https://docs.docker.com/installation/debian/

init.d/docker.listに書かれてるパッケージへの参照が古い。リンクの通り、以下に書き換える。

# Debian Wheezy
deb https://apt.dockerproject.org/repo debian-wheezy main

あらためてsudo apt-get update

Package ‘lxc-docker’ has no installation candidate

apt-get install lxc-dockerをするとPackage 'lxc-docker' has no installation candidateというエラーが出る。

パッケージ名が古い。今はdocker-engine

dockerインストールできた

% sudo apt-get install docker-engine
# 略
Setting up cgroupfs-mount (1.1~bpo70+1) ...
[ ok ] Mounting cgroupfs hierarchy.
Setting up init-system-helpers (1.18~bpo70+1) ...
Setting up libapparmor1 (2.7.103-4) ...
Setting up docker-engine (1.8.3-0~wheezy) ...
[ ok ] Starting Docker: docker.
% which docker
/usr/bin/docker
% docker version

sudo なしで docker

ひととおり見る

% docker help
  1. docker search {なんか} して、pull可能なimagesを探す
  2. めあてのimageをdocker pullする
  3. docker createでコンテナをつくる
  4. docker startでコンテナを起動する
  5. docker runやdocker attachなどでstartしたコンテナでいろいろする
  6. docker stopでコンテナを止める
  7. もはや使われないコンテナはdocker rmで削除する

という感じだろうか

docker search

とりあえずhostと同じdebianにしてみる

% docker search debian
NAME                                  DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                                Ubuntu is a Debian-based Linux operating s...   2443      [OK]
debian                                Debian is a Linux distribution that's comp...   801       [OK]
google/debian                                                                         47                   [OK]
neurodebian                           NeuroDebian provides neuroscience research...   13        [OK]
armbuild/debian                       ARMHF port of debian                            4                    [OK]
jesselang/debian-vagrant              Stock Debian Images made Vagrant-friendly ...   4                    [OK]

debian、でいいかな

docker pull

% docker pull debian
# 略
Status: Downloaded newer image for debian:latest
% docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
debian              latest              3d88cbf54477        10 days ago         125.2 MB

おk

docker create

上記のimageを指定してcreateする

% docker create -i --name=oppai debian
WARNING: Your kernel does not support memory swappiness capabilities, memory swappiness discarded.

おっぱいという名前のコンテナをつくった。メモリスワップができないらしい。まあよい。

できたか確認

% docker stats oppai

docker start

% docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
% docker start oppai
oppai
% docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
0ca0410d118c        debian              "/bin/bash"         3 minutes ago       Up 1 seconds                            oppai

ふむ、立ったっぽい。

docker attach

% docker attach oppai
root@0ca0410d118c:/#
root@0ca0410d118c:/# pwd
/
root@0ca0410d118c:/# cd
root@0ca0410d118c:~# pwd
/root
root@0ca0410d118c:~#

仮想マシン(って言ったら怒られるのかな)に入れたっぽい

docker stop

なんかコンソールをexitしたときにすでにstopしてたっぽい

% docker ps

などで確認。

docker rm

startしていないコンテナもぜんぶpsしたい

% docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
0ca0410d118c        debian              "/bin/bash"         7 minutes ago       Exited (0) 2 minutes ago                       oppai

さようならおっぱい

% docker rm oppai
oppai
% docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

次は

Dockerfileを使った起動

DRYな備忘録として