Edited at

Docker メモ

More than 5 years have passed since last update.


概要

やりたい事が出来るかどうか、皆がどうやって使ってるのかのメモ


コマンド


コンテナ起動してログイン

-i と - t をつけて bash を実行することでコンテナにログインする

$ docker run -i -t base /bin/bash


コンテナ起動時に CPU 相対的使用率を指定する

$ docker run -c 200 -i -t base /bin/bash

-c を使う事で CPU の相対的な割合を決められます。詳細は cgroup の cpu.shares を参照して下さい。

たとえば -c 100 と -c 200 であれば -c 100 よりも 2 倍の CPU 時間が提供されることになります。


参考


コンテナ起動時にメモリを指定する

$ docker run -m 512m -i -t base /bin/bash

-m を使う事でメモリ容量を指定出来ます。単位は b,k,m,g です。上記例では 512メガバイトを割り当てています。


コンテナバックグラウンド起動

$ docker run -i -t -d base /bin/bash


コンテナにログイン

$ docker attach {{ CONTAINER-ID }}


コンテナを起動してログイン

-a を付けると attach する

$ docker start -a <CONTAINER-ID>


コンテナ一覧

$ docker ps -a


コンテナ全て削除

$ docker rm $(docker ps -a -q)


イメージの一覧

$ docker images


イメージの削除

$ docker rmi {{ IMAGE-ID }}


ubuntu イメージの 12.04 タグを指定してダウンロード

: でタグを指定可能

$ docker pull ubuntu:12.04


ubuntu コンテナの 13.10 タグを指定して実行

$ docker run ubuntu:13.10 /bin/echo hello world


Docker Remote API を有効にする

/etc/default/docker に以下を追記して再起動します。

DOCKER_OPTS="-H unix:///var/run/docker.sock${DOCKER_OPTS}" DOCKER_OPTS="-H tcp://0.0.0.0:4243 ${DOCKER_OPTS}"

Unix Domain Socket と TCP を有効にしています。

$ curl -X GET http://127.0.0.1:4243/v1.10/images/json

[{"Created":1397068284,"Id":"25593492b938f072b2d1194f987bb62807afa8a259875ba86616a7d08d1c5852","ParentId":"d0732e6ce5634e940c924d8646f8081a0fb95c18bf31e978e77fc3396fea6b9a","RepoTags":["ubuntu:13.10","ubuntu:saucy"],"Size":10621789,"VirtualSize":192747614}
,{"Created":1397068120,"Id":"c0fe63f9a4c182d87029fcb87fe88c7eac448226b245926b99ba3d3d082ca468","ParentId":"79fdb1362c848d06252eb2cb466fe196d1f852b11d8c4532b21dfd9c64cfa632","RepoTags":["ubuntu:12.04","ubuntu:latest","ubuntu:precise"],"Size":26366127,"VirtualSize":231071128}


docker コンテナに ssh で繋ぐ

docker run で起動したコンテナで sshd を立てて ssh で繋ぐ

まずは ubuntu:13.10 を起動して openssh-server をインストールする

$ docker run -i -t ubuntu:13.10 /bin/bash

root@b9da36681214:/# apt-get update
root@b9da36681214:/# apt-get install openssh-server
root@b9da36681214:/# mkdir /var/run/sshd
root@b9da36681214:/# /usr/sbin/sshd
root@b9da36681214:/# passwd root
root@b9da36681214:/# exit

docker commit で openssh-server がインストールされたコンテナを image に変換する

docker images で voluntas/ubuntu-sshd がある事を確認する

$ docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b9da36681214 ubuntu:13.10 /bin/bash 4 minutes ago Exit 0 backstabbing_babbage
$ docker commit b9da36681214 voluntas/ubuntu-sshd
7e9192a4e1293790d6ff1577485eff8d1915fae5b96174dc86e2124923b7530d
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
voluntas/ubuntu-sshd latest 7e9192a4e129 38 seconds ago 225.5 MB
ubuntu 13.10 9f676bd305a4 8 weeks ago 182.1 MB
ubuntu saucy 9f676bd305a4 8 weeks ago 182.1 MB
ubuntu 12.04 9cd978db300e 8 weeks ago 204.7 MB

docker run で voluntas/ubuntu-sshd コンテナを使って /usr/sbin/sshd をデーモンで起動する

22 番のポートをフォワードする

$ docker run  -d -p 22 voluntas/ubuntu-sshd /usr/sbin/sshd -D

cc529bb34bbe3134d47ee73f86c734c175d0ba28322e818654d4ec6327aca443
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc529bb34bbe voluntas/ubuntu-sshd:latest /usr/sbin/sshd -D 21 seconds ago Up 20 seconds 0.0.0.0:49154->22/tcp stoic_hawking
b9da36681214 ubuntu:13.10 /bin/bash 6 minutes ago Exit 0 backstabbing_babbage

コンテナ ID cc529bb34bbe の 22 番ポートがローカルのどのポートにマッピングされているのかを確認する

$ docker port cc529bb34bbe 22

0.0.0.0:49154

$ ssh root@127.0.0.1 -p 49154

The authenticity of host '[127.0.0.1]:49154 ([127.0.0.1]:49154)' can't be established.
RSA key fingerprint is 0b:2b:63:fe:ca:b9:ca:6f:e2:f9:0e:3f:29:7c:2d:2f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[127.0.0.1]:49154' (RSA) to the list of known hosts.
root@127.0.0.1's password:
Welcome to Ubuntu 13.10 (GNU/Linux 3.10.25-gentoo x86_64)

* Documentation: https://help.ubuntu.com/

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

root@cc529bb34bbe:~#


Tips


  • 終了したコンテナは /var/lib/docker/containers/ に残る


デプロイ


参考


ようへいの日々精進

自分がやりたい事ほとんどやっててとても参考になる