dockerメモ

docker registryの使い方

2017/11/19 22:37 に 森山誠二郎 が投稿

1.コンテナからexportする
docker export 4d33 |gzip > /tmp/minEDA.tgz
2.ファイルからインポートする
zcat /tmp/minEDA.tgz |docker import - mineda
3.registryに登録する
docker tag mineda localhost:5000/mineda
docker push localhost:5000/mineda
4.registryに登録されたか確認
 Webでアクセスする:https://alb.anagix.com:5000/v2/_catalog


CentOS6でdockerを使う

2017/11/05 21:51 に 森山誠二郎 が投稿

dockerは1.8以降、CentOS7しかサポートしない。RedHatがやる気ないらしい。
なので、古いバージョンを使う
yum install docker-io でインストールできる (yum install dockerで入るのは全然別物みたい)

ミニマルEDAで使ってみて問題があればここに書く。

AWSでのGUIを使っているdockerの復帰

2017/11/05 18:23 に 森山誠二郎 が投稿   [ 2017/11/05 21:47 に更新しました ]

AWS無料枠の1Gメモリーマシーンでは、メモリ不足でフリーズすることがある。その場合、再起動はたいてい効かなくて、停止、起動となる。当然IPアドレスはかわる。
以下、AWSを起動してから、dockerでの作業を復帰する手順。

1.AWSコンソールのEC2の起動を見て、まずはAWSにログイン
2.vncserver -geometry 1280x1024でVNC起動
3.vncの中で端末起動し、docker ps -a でコンテナID(最初の4桁くらいで良い)を調べる
4.コンテナIDを指定して、dockerをスタート
 docker start 4d33
5.コンテナに接続
 docker exec -it 4d33 /bin/bash
 xeyesが動くこと確認し、emacs&
6.ubuntuでXを使えるようにする
cp /root/.Xauthority /home/ubuntu/
chown ubuntu /home/ubuntu/.Xauthority 
su ubuntu
xeyesが動くこと確認し、emacs&

letsencryptのSSL証明書でdocker registryを動かす

2017/10/30 5:31 に 森山誠二郎 が投稿   [ 2017/10/30 5:36 に更新しました ]

SSL証明書が入ったディレクトリ(/etc/letsencrypt/live/alb.anagix.com)で以下を実行する
(これらを入れたスクリプト run-docker-registryを実行してもよい)

cat cert.pem chain.pem > domain.crt
cat privkey.pem > domain.key
docker run -d -p 5000:5000 --restart=always -v /var/opt:/var/lib/registry -v `pwd`:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2

メモ:
 -v /var/opt:/var/lib/registry することにより、registryが、/var/opt/docker/registry以下にパーマメントにつくられる
 証明書の名前は、domain.crt, domain.keyでなくてはならない
 証明書を指定せずにregistryをdocker runした場合、Get https://localhost:5000/v1/_ping: dial localhost:5000: getsockopt: connection refusedのようなエラーが出る。この場合以下のような内容で、/etc/docker/daemon.jsonを作りdockerデーモンを再起動する。
    { "insecure-registries":["localhost:5000", "127.0.0.1:5000", "192.168.0.105:5000"] }

dockerメモ

2017/10/30 5:00 に 森山誠二郎 が投稿

--restart=alwaysでrunしたコンテナを殺す
 docker stop ID
    docker rm ID
で消える

TAGの消し方
 docker rmi で消える。もともとのイメージは消えない。

docker exportとimport

2017/10/30 0:52 に 森山誠二郎 が投稿

1.AWSのコンテナからexportし、CentOS7のdockerでimportする際イメージにした。

docker export f4c6...  > /mnt/work/qflow_docker.tar

tarをgzipし小さくしてリモートコピー

2.zcat /home/anagix/qflow_docker.tgz |docker import - qflow:latest

3.実行するときは、

docker run -it -v /tmp:/tmp -e DISPLAY -v /home/anagix/.Xauthority:/root/.Xauthority --net=host qflow:latest  /bin/bash

Dockerコマンドメモ

2017/10/29 21:31 に 森山誠二郎 が投稿

https://qiita.com/curseoff/items/a9e64ad01d673abb6866 (2017年05月05日に更新)からのパクリです:


index.docker.ioから指定したイメージを取り込む

docker pull REPOSITORY[:TAG]
docker image pull REPOSITORY[:TAG]

イメージ一覧を得る

docker images
docker image list

イメージからコンテナを起動する

docker run -itd IMAGE
docker container run -itd IMAGE

イメージからコンテナを起動して、接続する。コンテナに名前をつける

docker run -it IMAGE bash
docker container run -it IMAGE bash

docker run -it --name NAME IMAGE bash
docker container run -it --name NAME IMAGE bash

ホストの/var/wwwを、コンテナ内の/var/htmlからアクセスできるように共有する

docker run -it -v /var/www:/var/html IMAGE bash
docker container run -it -v /var/www:/var/html IMAGE bash

ホスト8080番portへの通信をコンテナ80番portへ転送する

docker run -it -p 8080:80 IMAGE bash
docker container run -it -p 8080:80 IMAGE bash

ゲストのPRIVATE_PORTに指定したPortがホストのどのPortにポートフォワードしてるかを調べる

docker port CONTAINER
docker container port CONTAINER

docker port CONTAINER PRIVATE_PORT
docker container port CONTAINER PRIVATE_PORT

イメージからコンテナを作る

docker create IMAGE
docker container create IMAGE


docker create IMAGE
docker container create --name NAME IMAGE

コンテナを起動する

docker start CONTAINER
docker container start CONTAINER

コンテナを停止する

docker stop CONTAINER
docker container stop CONTAINER

コンテナを再起動する

docker restart CONTAINER
docker container restart CONTAINER

コンテナを削除する

docker rm CONTAINER [CONTAINER...]
docker CONTAINER rm CONTAINER [CONTAINER...]

コンテナをすべて削除する

docker rm $(docker ps -aq)

イメージを削除する

docker rmi IMAGE [IMAGE...]

タグなしのイメージをすべて削除する

docker rmi $(docker images | grep '<none>' | awk '{print$3}')

起動しているコンテナに接続する

# exitするとコンテナが終了してしまう
# コンテナを終了せずに抜ける「Ctrl + p, Ctrl + q」
docker attach CONTAINER

# exitしてもコンテナは終了しない
docker exec -it CONTAINER /bin/bash

リポジトリにタグを貼る(:TAGを省略すると、latestになる)

docker tag IMAGE REPOSITORY[:TAG]

./にあるDockerfileをビルドして、イメージを作成する

docker build  ./
docker build -t REPOSITORY[:TAG] ./

ビルドを最初からやりなおす

docker build --no-cache .

起動中のコンテナ一覧を得る

docker ps
docker container list

停止中のコンテナも含めすべての一覧を得る

docker ps -a
docker container list -a

コンテナのハッシュリストを得る

docker ps -aq
docker container list -aq

index.docker.ioからイメージを検索する

docker search TERM

イメージをビルドした際のコマンドリストを得る。Dockerfileに記述したもののみ

docker history IMAGE

イメージをファイル出力する

docker save IMAGE > filename.tar

ファイルをイメージとして取り込む

docker load < filename.tar

コンテナをファイル出力する

docker export CONTAINER > filename.tar

コンテナからイメージを作成する

docker commit CONTAINER REPOSITORY[:TAG]

URLを指定してイメージを取り込む

docker import url REPOSITORY[:TAG]

ファイルからイメージを取り込む

cat filename.tar | docker import - REPOSITORY[:TAG]

コンテナの標準出力を見る

docker logs CONTAINER

コンテナ内のファイルをホストにコピーする

docker cp CONTAINER:filename ./

イメージがコンテナ化されてから変更されたファイル差分を得る

docker diff CONTAINER

URLのファイルをイメージ内のPATHに生成する

docker insert IMAGE URL PATH

コンテナの実行中のプロセス一覧を見る

docker top CONTAINER

dockerの現在インストールしているバージョンと最新のバージョンを得る

docker version

コンテナ内のイベントを監視する(コンテナが作られた、起動した、停止したなど)

docker events

コンテナの詳細な情報を得る。formatオプションで情報の絞り込みができる

docker inspect CONTAINER
docker inspect  --format="{{.NetworkSettings.IPAddress}}" CONTAINER

コンテナ内でコマンドを実行する

docker exec CONTAINER コマンド

コンテナ内でコマンドを対話式に実行する

docker exec -it CONTAINER コマンド

dockerでkicadを動かす

2016/05/09 21:33 に 森山誠二郎 が投稿

dockerイメージは、jerivas/kicadをfetchした。
起動方法

docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY では、can't open displayになる
Running GUI apps with Dockerのコメントに書かれているように

docker run -it -v /tmp:/tmp -e DISPLAY -v /home/seijirom/.Xauthority:/home/kicad/.Xauthority --net=host kicad
のように .Xauhorityと--net=host を指定する必要がある

iptables: No chain/target/match by that name.というエラー

2016/05/03 8:25 に 森山誠二郎 が投稿   [ 2016/05/03 8:25 に更新しました ]

dockerでgitlabをアップデートし、再起動したところ以下のエラーが出た
# docker run --detach --hostname gitlab.example.com --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
0750b357a699b2834dc267c6c783f9fcaca8d4abccfc8fb1f35d8483be7e8e76
Error response from daemon: Cannot start container 0750b357a699b2834dc267c6c783f9fcaca8d4abccfc8fb1f35d8483be7e8e76: iptables failed: iptables -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.9 --dport 443 -j ACCEPT: iptables: No chain/target/match by that name.
 (exit status 1)

対策: iptablesを止めるだけではダメで、一度 docker serviceをstopし、再度start。あらためて、docker runを実行する。

CentOS6.7にGitlabをインストール

2016/02/17 18:37 に 森山誠二郎 が投稿   [ 2017/04/05 22:13 に更新しました ]

1.curl -fsSL https://get.docker.com/|sh で、dockerインストール
2.service docker start
3.GitLab Documentationにしたがって、以下のコマンドでGitlabインストール&起動
sudo docker run --detach \
    --hostname gitlab.example.com \
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest
4.22番ポートが使われていてエラーになるので、service sshd stopでsshdを止める
5.GitLabのメール通知をGmailで送る にしたがってメール設定を行う

注意: Centos 7.2のdockerの場合、Running Gitlab Dockerに書かれている通り
/var/log/gitlab/reconfigure
を、手動で作成する必要があった
追記:(2017/3/21)
  updateはめちゃ簡単でした。動いているgitlabを、docker stopで止め、docker rm。
 docker pull gitlab/gitlab-ce するだけ。
追記:(2017/4/6)
 yum installも簡単だった。
yum remove gitlab-ce-8.17.4-ce.0.el7.x86_64
yum install gitlab-ce
gitlab-ctl reconfigure
gitlab-ctl restart



1-10 of 10