Top / Docker / TIPS集

各コンテナのIPアドレスをしる

# docker network inspect bridge

で "Containers": あたりをみると

"IPv4Address": "172.17.0.10/16",

などと書いてあるのが確認出来ます。

任意のポートでWEBサーバを起動するワンライナー

docker run -it ubuntu:14.04  \
 /bin/bash -c 'trap exit INT; while true; do ( echo "HTTP/1.0 200 Ok"; echo; echo "Hello World" ) | \
 nc -l 8080; done'

ubuntuをたてて netcat で任意のポートで待ち受けてみました。

nc コマンドで簡易HTTPサーバ - sonots:blog

Dockerfileで、中のファイルの書き換え

RUN sed -i -e 's/"grunt-stubby": "^0.1.4",/"grunt-stubby": "^0.2.1",/g' package.json

sedで package.json にある grunt-stubbyのバージョンを書き換える例

Photonにdocker-composeをインストール

curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Docker関連のファイル群が置かれている場所を変更したい

デフォルトでは、

/var/lib/docker/

のようですが、サービスの起動オプションで変更できるようです。

# cat /usr/lib/systemd/system/docker.service

... 割愛
ExecStart=/usr/bin/docker daemon $DOCKER_OPTS \
変更前
          --containerd /run/containerd.sock
変更後
          --containerd /run/containerd.sock \
          -g /my_disk
... 割愛

あとはサービスを再起動します。

# mkdir /my_disk
# systemctl stop docker
# systemctl daemon-reload
# systemctl start docker

コレでOKですね。

Photon OSがデフォルトで8GBしかディスクが割り当てられていないので、ディスクをvSphere上で増設してパーティションを作成したあと、Dockerのファイル群をそのパーティションをマウントしたディレクトリに置きたくて、ファイルの置き場所の変更方法を調べていたのでした。コレでうまくいきそうです。

2018/05/29追記
今日時点の新しいPhotonを入れたらやり方が変わってるっぽい。。jsonファイルをつくってゴニョゴニョなど。。。以下を参考にしてください。Docker Root Dir を /var/lib/docker から /foo/bar/docker へ変更する方法 - Qiita

一言でかくと

root@photon-machine [ / ]# systemctl stop docker
root@photon-machine [ / ]# cat /etc/docker/daemon.json
{
    "graph": "/docker"
}
root@photon-machine [ / ]# systemctl start docker
root@photon-machine [ / ]# docker info | grep Root
Docker Root Dir: /docker
root@photon-machine [ / ]#

コレで/var/lib/docker -> /docker になりました。。

ディスクを拡張したい。

vSphereのUI上で、既存の8GBかなんかのディスクをたとえば100GBとかに増設しておきます。

# fdisk -l
GPT PMBR size mismatch (16777215 != 209715199) will be corrected by w(rite).
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
...

# fdisk /dev/sda

Command (m for help): p

Device        Start       End   Sectors Size Type
/dev/sda1      2048      6143      4096   2M BIOS boot
/dev/sda2      6144  16777182  16771039   8G Linux filesystem

Command (m for help): n
Partition number (3-128, default 3):
First sector (16777183-209715166, default 16777216):
Last sector, +sectors or +size{K,M,G,T,P} (16777216-209715166, default 209715166):

Created a new partition 3 of type 'Linux filesystem' and of size 92 GiB.

Command (m for help): p

Device        Start       End   Sectors Size Type
/dev/sda1      2048      6143      4096   2M BIOS boot
/dev/sda2      6144  16777182  16771039   8G Linux filesystem
/dev/sda3  16777216 209715166 192937951  92G Linux filesystem  <- 増えた

Command (m for help): w
GPT PMBR size mismatch (16777215 != 209715199) will be corrected by w(rite).
#

shutdown -r now で再起動しておきます。

# mkfs -t ext4 /dev/sda3
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 24117243 4k blocks and 6029312 inodes
... 割愛
Writing superblocks and filesystem accounting information: done

マウントします

root@photon-machine [ ~ ]# mount /dev/sda3 /my_disk
root@photon-machine [ ~ ]# df -m
Filesystem     1M-blocks  Used Available Use% Mounted on
/dev/sda3          92602    60     87816   1% /my_disk
root@photon-machine [ ~ ]#

マウントされました。

あとは fstabに下記を追記しておけばOKです。

# cat /etc/fstab
...
/dev/sda3 /my_disk ext4 defaults 1 2

ディスク拡張完了です。

Photon OS のマシン自体を固定IPにする

# cat /etc/systemd/network/10-dhcp-en.network
[Match]
Name=e*

[Network]
DHCP=no
Address=192.168.x.xx/24
Gateway=192.168.x.x
DNS=192.168.x.x
# systemctl restart systemd-networkd

Docker Hub へのpush

Docker Hub 上で hogehoge というアカウントを利用していたとして

# docker login

でログインした状態であるにもかかわらず、imageをpushしたら、

unauthorized: authentication required

が発生してしまいました。その際の対処法について。

ちなみに、

# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
myjenkins                  latest              59d580851733        8 weeks ago         714.4 MB

このimage をpushしたいとします。

どうもイメージの名前とアカウント名が異なることが原因のようです。まず

# docker tag myjenkins hogehoge/myjenkins

とtagをつけて、hogehogeというprefixをつけたimageを作成します。

# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
myjenkins                  latest              59d580851733        8 weeks ago         714.4 MB
hogehoge/myjenkins        latest              59d580851733        8 weeks ago         714.4 MB

できました。で、このimageをDocker Hubへpushしてみます。

# docker push hogehoge/myjenkins

こんどはpushできました。

最初、Docker Hubのアカウント名を気にせずimageを作成して、そのまま、

# docker push myjenkins

としようとして、認証エラーが発生していたようです。

[Docker Hub][使い方]unauthorized: authentication required – ADACHIN SERVER Lab このサイトに到達してようやく解消しました。感謝です。

コンテナの全消しワンライナー

# docker ps -a |sed  's/[\t ]\+/\t/g' | cut -f1 | xargs  docker rm

この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Docker / TIPS集

現在のアクセス:486


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-06-04 (月) 00:25:47 (42d)