flagflag  
25: 2021-07-11 (Sun) 23:00:09 iseki source Cur: 2023-05-05 (Fri) 10:17:58 iseki source
Line 1: Line 1:
*Docker 備忘録 [#y5b36a8f] *Docker 備忘録 [#y5b36a8f]
*** see also [#i9ed634e] *** see also [#i9ed634e]
--- [[Docker]] +- [[Docker]] 
--- [[Docker Compose]] +- [[Docker Compose]] 
--- [[Docker Network]] +- [[Docker Network]] 
--- [[Docker Swarm]] +- [[Docker Swarm]] 
--- [[Kubernetes]]+- [[Kubernetes]] 
 +- [[Podman]]
#br #br
Line 27: Line 28:
** Install [#db912155] ** Install [#db912155]
 +*** CentOS 8 (2021 7/25) [#e8e9cdfb]
 + # dnf config-manager --add-repo https://download.docker.com/linux/centos​/docker-ce.repo
 + # dnf -y install docker-ce docker-ce-cli containerd.io --nobest --allowerasing
 +#br
*** CentOS8 入れ直し(21 7/3) [#q7821cf8] *** CentOS8 入れ直し(21 7/3) [#q7821cf8]
Line 34: Line 39:
-- 依存関係が複雑なので,dnf を使う -- 依存関係が複雑なので,dnf を使う
- # dnf erase containerd.io-1.2.6 - # dnf erase containerd.io-1.2.6
-#br + 
-- # dnf config-manager --add-repo https://download.docker.com/linux/centos​/docker-ce.repo + # dnf config-manager --add-repo https://download.docker.com/linux/centos​/docker-ce.repo 
-- # dnf -y install docker-ce docker-ce-cli containerd.io+ # dnf -y install docker-ce docker-ce-cli containerd.io
#br #br
Line 59: Line 64:
 # rpm -e toolbox  # rpm -e toolbox
 # rpm -e podman  # rpm -e podman
 + # rpm -e containers-common-1-2.module_el8.5.0+890​+6b136101.noarch  (必要なら)
 # rpm -e runc  # rpm -e runc
 # rpm -ihv containerd.io-1.2.6-3.3.el7.x86_64.rpm  # rpm -ihv containerd.io-1.2.6-3.3.el7.x86_64.rpm
- Install & Getting Start へ - Install & Getting Start へ
 + #br
 +
 +**** 2023 1/17 CentOS8 の update で Docker が動かなくなったので上記の方法で入れ直し.(containerd.io が runc と競合する場合) [#hee294de]
 +
#br #br
 +
**** もし podman が必要なら containerd.io をインストール後に,入れ直す. [#y6d1a036] **** もし podman が必要なら containerd.io をインストール後に,入れ直す. [#y6d1a036]
 # yum install podman -y  # yum install podman -y
Line 82: Line 93:
 # systemctl start docker  # systemctl start docker
 # docker run hello-world  # docker run hello-world
 +#br
 +
 +*** CentOS6 [#za65a6da]
 +- yum install https://get.docker.com/rpm/1.7.1/centos-​6/RPMS/x86_64/docker-engine-1.7.1-1.el6.​x86_64.rpm
 +-- chkconfig --level 3 docker on
 +
 +- 注)ipv6 が OFF だと bridge.ko の読み込みで,シンボル(ipv6_dev_get_saddr)未定義のエラーを起こす.
 +-- Error starting daemon: Error initializing network controller: Error creating default \"bridge\" network: package not installed
 +-- NSLでは  /etc/modprobe.d/dist.conf の最終行をチェック <-- ここで ipv6 を止めている.
#br #br
** Getting Start [#fedb2239] ** Getting Start [#fedb2239]
-*** CentOSを使ってみる [#e8e57f9e]+ 
 +*** 使ってみる [#fbf5e0d3] 
 + 
 +**** Hello World [#u91eb055] 
 + # docker run hello-world 
 +#br 
 + 
 +**** CentOSを使ってみる [#e8e57f9e]
 # docker pull centos  # docker pull centos
 # docker images  # docker images
 # docker run -i -t centos /bin/bash  # docker run -i -t centos /bin/bash
 (DockerBash)#  (DockerBash)#
 +#br
 +
 +**** CentOSを使ってみる2 [#m1ae3f38]
 + # docker pull centos:centos7
 + # docker run -ti -d --name centos7 centos:centos7
 + # docker exec -it centos7 /bin/bash
 + [root@fbd5aeb4046a /]#
 +#br
 +
 +** [[Local Registry>./Registry]] [#jc169974]
#br #br
** コマンド [#f867895b] ** コマンド [#f867895b]
 +
*** 操作 [#p0316f54] *** 操作 [#p0316f54]
**** コンテナ [#o6820680] **** コンテナ [#o6820680]
Line 127: Line 165:
- イメージ一覧 - イメージ一覧
-- docker images -- docker images
 +- ダウンロード または 更新
 +-- docker pull イメージ名(:TAG)
 +
- イメージ削除 - イメージ削除
-- docker rmi イメージ名 -- docker rmi イメージ名
Line 133: Line 174:
-- # docker rmi A -- # docker rmi A
- イメージを保存 - イメージを保存
--- コンテナを止めて +-- docker stop コンテナ名 
--- docker commit コンテナ名 イメージ名+-- docker commit イメージ名 
#br #br
Line 153: Line 195:
-- tar 形式のイメージを標準入力から入力 -- tar 形式のイメージを標準入力から入力
-- 例)tar -C rootfs -c . | docker load -- 例)tar -C rootfs -c . | docker load
 +#br
 +**** 使用していない(孤立した)リソースの削除 [#z50def7b]
 +- システム: docker system prune
 +- イメージ: docker image prune
 +- コンテナ: docker container prune --filter "until=24h"
 +- ボリューム: docker volume prune --filter "label!=keep"
#br #br
** Tips [#bc9ce347] ** Tips [#bc9ce347]
 +*** ファイル(Volume)共有 [#u078f1a8]
 +- volume :  /var/lib/docker/volumes
 +-- Podman :  /var/lib/containers/storage/volumes
 +
 +- DB: /var/lib/docker/volumes/metadata.db (PC毎に持つ必要がある)
 +-- POdman(特殊ファイル): /var/lib/containers/storage/volumes/back​ingFsBlockDev  特に処理する必要はない(と思う)
 +#br
 +
 +*** none タグのイメージの名前(表示)を消す. [#e82b979d]
 +- 同じ名前のタグ付きイメージ名を作成し,それを消す.
 + docker tag  7fe93d9d7854  jupyterhub/singleuser:del    (jupyterhub/singleuser:<none> の場合)
 + docker rmi jupyterhub/singleuser:del
 +#br
 +- 名前も none の場合は,docker tag で指定する名前は何でもよい.
 +#br
 +
 +*** 現在の環境が Docker のコンテナなのかを確認する. [#gd6a458a]
 +- '' /.dockerenv'' の存在をチェックする.
 +#br
 +
*** cockpit-docker [#wae1c7a6] *** cockpit-docker [#wae1c7a6]
- https://pkgs.org/download/cockpit-docker​ - https://pkgs.org/download/cockpit-docker​
Line 165: Line 233:
 rm -r /var/lib/docker/network/files/*  rm -r /var/lib/docker/network/files/*
 systemctl restart docker  systemctl restart docker
 +#br
 +
 +*** Dockerデーモン(dockerd) のリモート操作 [#zb6259d4]
 +**** 最善策 [#bd380800]
 +- リモートとローカルの unix ソケットファイルを ssh でつなぐ.
 +-- Docker の動いているマシンで,グループ docker に属するユーザを作成(例えば docker).
 +--- パスワードを設定しておく.起動シェルは要らない.
 +---- # adduser docker -u 105 -g docker -d /var/lib/docker -s /sbin/nologin
 +---- # asswd docker
 +-- ローカルマシンで以下のコマンドを実行.
 +--- ssh -fNL /var/run/mdlds.sock:/var/run/docker.sock​ docker@202.26.150.55
 +--- chgrp apache /var/run/mdlds.sock
 +--- chmod g+rw  /var/run/mdlds.sock
 +--- コマンド実行時は DOCKER_HOST=unix:///var/run/xxx.sock または docker -H unix:///var/run/mdlds.sock ps
 +--- [[docker_rsock.sh>./docker_rsock.sh]]
 +#br
 +
 +***** ''ボツ'' %%SSH ポートフォワードを使用する.%%  [#h0ef173d]
 +- 202.26.150.55で動いている場合
 + # ssh -fNL localhost:9099:/var/run/docker.sock root@202.26.150.55   (rootログインがセキュリティ的に弱い)
 + # export DOCKER_HOST=localhost:9099
 + # docker volume ls
 +- %%Docker の実効ユーザを root 以外にしておく.%% ムリポ. Rootlessモードは何か違う.
 +- ローカルマシンでは,Dockerデーモンは不要.クライアントのみで可.
 +
 +- ログイン相手を docker グループのユーザにする.
 +-- でもローカルポートにアクセス可能なら,結局''やばい状況になる''..ネ.
 +#br
 +
 +*****  ''ボツ''  %%docker の通信機能を使用する%% [#g41b437e]
 +- /usr/lib/systemd/system/docker.service
 +-- ex.) ExecStart=/usr/bin/dockerd -H fd:// -H tcp://202.26.150.55:9099 --containerd=/run/containerd/containerd.​sock
 +-- systemctl daemon-reload
 +-- systemctl  restart docker
 +- ssh:// を指定するとエラー.man でも -H に ssh は載っていない.
 +- よく考えれば,リモートからは無条件でコマンドを受け入れる.''やばいです''.
#br #br
Line 178: Line 282:
#br #br
-** Trouble Shooting [#gfc999c1]+** Jupyter [#u471de3a] 
 +*** Docker Images [#uf21b4ef] 
 +**** jupyterhub/singleuser [#k5b135c9] 
 +- https://hub.docker.com/r/jupyterhub/sing​leuser/ 
 +#br 
 + 
 +**** jupyter/datascience-notebook [#rabcf16e] 
 +- https://hub.docker.com/r/jupyter/datasci​ence-notebook/ 
 +#br 
 + 
 +**** jupyter/tensorflow-notebook [#h63a2e3c] 
 +- https://hub.docker.com/r/jupyter/tensorf​low-notebook/ 
 +#br 
 + 
 +**** rattydave/jupyterhub [#p536b876] 
 +- C++, Java, Python, Tensorflow, Julia, SQL, NodeJS, Bash and more 
 +- https://hub.docker.com/r/rattydave/jupyt​erhub 
 +- 重い(10G).非力マシンではタイムアウト(30s)する. 
 +#br 
 + 
 +**** joequant/bitstation:latest [#m40761fc] 
 +- C++ 
 +- https://hub.docker.com/r/joequant/bitsta​tion/tags?page=1&ordering=last_updated 
 +- これもタイムアウト 
 +#br 
 + 
 +*** jupyterhub/singleuser [#k62bfe82] 
 + /opt/conda/bin/conda update --prefix /opt/conda --all -y 
 + apt-get update -y 
 + apt-get upgrade -y 
 + apt-get install vim -y 
 + apt-get install subversion -y 
 + apt-get install make -y 
 + apt-get install automake -y 
 + apt-get install gcc -y 
 + apt-get install zlib1g-dev -y 
 + apt-get install mlocate -y 
 + 
 +*** docker commit すると,起動時のオプション(arguments)まで保存する. [#v7d65576] 
 +- 次回起動すると,オプションが 2重になる.なんてこったい! docker build では大丈夫(そもそも起動していない) 
 +- 起動時のオプションは,イメージ(/var/lib/docker/image/overlay2/imagedb/.​...)に Cmd[ ] に値として保存されている. 
 +- イメージファイルはテキスト(!?)なので,Cmd[ ] に何が書いてあるかわかる. 
 +-- "Cmd":["start-notebook.sh","--ip=0.0.0.0","--port=8888","--notebook-dir=/home/teacher/iseki/jupyt​er","--SingleUserNotebookApp.default_url=/lab​"] 
 +--- しっかりコマンドが入っている. 
 +-- 流石に直接編集するのは躊躇われる.(一回やってみる?) 
 +--- エディタで直接編集したら,Docker から見えなくなった.まあ予想通り. 
 + 
 +- ちゃんと動くやつの Cmd[ ] を確認して,docker commit 起動時に -C オプションで変更可! 
 +-- jupyter の場合:'' docker commit -c 'CMD ["start-notebook.sh"]' jupyter_old jupyter_new'' 
 +--- /etc/passwd と /etc/group も元に戻しておく 
 + 
 +#br 
 + 
 +*** Trouble [#k8d6e393]
**** Jupyter で色々やっていたらコンテナが続々と自動生成->消滅 を繰り返している [#x94b45ca] **** Jupyter で色々やっていたらコンテナが続々と自動生成->消滅 を繰り返している [#x94b45ca]
- 何をどうやってもコマンドレベルでは停止しない - 何をどうやってもコマンドレベルでは停止しない
Line 187: Line 344:
 # docker swarm leave --force  # docker swarm leave --force
#br #br
 +
 +** Trouble Shooting [#gfc999c1]
 +*** 良く分かっていなかった頃のエラーなので,勘違いしているかもしれない [#te98f8c5]
**** docker run実行時のiptablesエラー [#y95fbc1b] **** docker run実行時のiptablesエラー [#y95fbc1b]
Line 193: Line 353:
 # systemctl restart docker  # systemctl restart docker
#br #br
 +
**** Dockerfile による RUNで,pipがNewConnectionError を出す. [#y7ea0619] **** Dockerfile による RUNで,pipがNewConnectionError を出す. [#y7ea0619]
- CentOS8 固有のエラーらしい.CentOS8 は Docker 未サポートだからな~ - CentOS8 固有のエラーらしい.CentOS8 は Docker 未サポートだからな~


Front page   New List of Pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)

Site Search

Login

Username:

Password:


Lost Password?
Register now!!

Sub Menu

mini Calendar

Last MonthMay 2024Next Month
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today

Who's Online

22 user(s) are online (2 user(s) are browsing xpwiki)

Members: 0
Guests: 22

more...

Access Counter

Today : 1721172117211721
Yesterday : 6459645964596459
Total : 2367774123677741236777412367774123677741236777412367774123677741
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com