73
Help us understand the problem. What are the problem?

Docker上のみでシステムを作るときの構成

参加記事です。

優秀賞 をいただきました。ありがとうございます。

Qiita エンジニアフェスタ 2021 プレゼント企画結果発表

Qiita 10周年記念イベント 「10年前の自分に伝えたい、勉強しておきたかった技術」

参加記事の、

データサイエンティストの気づき「勉強だけして仕事に役立てない人。大嫌い!」。『それ自分かも!』ってなった。

で参照させていただいています。そちらもLGTM(Look Good To Me=いいね)よろしく。

dockerは保育園、幼稚園のお子様にお勧め。

むつかしい導入手順を踏まなくても、導入結果がすぐに利用できます。

同様に、高齢者の方にもお勧め。

65歳からのプログラミング入門。docker(126)転職(16)

環境

普段, dockerを使っている環境は、
macOSHigh Sierra ver. 10.13.6
メモリ16GB, intel Core i5
HDD 250GB, 空 6 20GB (空きが少なくてtwitterが動かなくなった。増やしました)です。

ディスクの空きが少ないのは危険です。良い子は真似しないでください。

自分でdockerfile, docker-composeを作ったり、積極的に使っていません。ごめんなさい。

資料集 [あなたもdocker私もdocker一覧] docker(0)

に140ほど記事を書いています。また、下の機械学習のdocker上での実験一覧など、合計で300近い記事を書いているような気がします。タグを順次追記するようにします。

dockerで実現したいことが似ている場合は、それらを参照くださると幸いです。

#表題「あなたもdocker, 私もdocker。」について

「あなたもdocker」のあなたとは、下で紹介しているgccのクロスコンパイラの環境を構築してくださった斉藤直希さんのことです。
dockerfileを作り、docker-composeをしています。

「私もdocker」の私は、@kaizen_nagoyaのことです。斉藤直希さんはじめ、何人かの方がお造りになられたdockerfileとdocker-composeの成果を利用させていただいて、結果をdocker hubに登録させていただいています。「Docker上のみでシステムを作るときの構成」の趣旨どおり、私の作業は、docker run, docker commit, docker push以外は、すべてdockerのみでの作業です。

そこで、私が登録したdocker hubの内容を利用してくださるあなたを、「私」として記載しようとしています。あなたもdockerを利用してくださるなら、「私もdocker」と思ってくださいねっていう願いを込めて。

20210731編集 docker hubのダウンロードの多い記事の順番に項目を並べ直しました。

1. jq

自分のdocker hubでダウンロードが圧倒的に多いのがjq.

Web系の資料を少し充実すると、ダウンロード数が急増しそうな気配。
これから1年は、dockerでjsonを10記事目標で書きます。
jqだけでいい場合は、

bash
$  docker run -it ubuntu /bin/bash

dockerのubuntuが起動したら。

bsh
# apt update; apt -y upgrade; apt install -y curl jq vim sudo

2. python

dockerの使い道の2つ目は、python.

機械学習の教育の助手を担当した。自宅または仕事場のWindowsにpytohnを導入するのに失敗した人たちが大勢いた。演習の落ちこぼれの原因がpython導入であることがわかった。

M.S.WindowsにPython3 (Anaconda3) を導入する(7つの罠)

自分のQiitaの記事で、viewsが圧倒的に一番で、161,987 viewsある。
二番目が
プログラマが知っているとよい色使い(JIS安全色)

の82,114 viewsだから約2倍。

その後、dockerにPythonを導入してもらう方が楽かなって思うようになった。

docker(18) なぜdockerでpython/Rを使って機械学習するか 書籍・ソース一覧作成中 (目標100)

dockerに書籍のソースコードを読み込んで、動かす実験を順次してきた。

python 学習

pythonの言語教育を担当することになり、python のいろいろな版を利用するには、dockerが最適であると感じた。

pyenvなど、いろいろなpythonの複数の版を切り替える方法は面倒くさいだけでなく、python 初心者に使い方を教える時間が無駄だと感じた。

bash
$ docker run -it continuumio/anaconda3 /bin/bash

言語処理100本ノックは、こちらの記事から参考にしてみてください。

言語処理100本ノック 2015(python) 落ち穂拾い 第1章: 準備運動

言語処理100本ノックをdockerで。python覚えるのに最適。docker(19) python(1)

3. gcc

dockerの使い道の最初は、gccのクロスコンパイル.
macOSでgccのクロスコンパイラをコンパイルしようとして1日かけてもうまく行かず、斉藤直希さんに相談し、docker上でgccクロスコンパイラを構築してもらった。

Dockerをどっかーらどうやって使えばいいんでしょう。TOPPERS/FMP on RaspberryPi with Macintosh編 5つの関門「名古屋のIoTは名古屋のOSで」docker (37)

gccだけ使いたい場合は、

bash
$  docker run -it gcc /bin/bash

例えば、
Misra Example Suite at docker コンパイル完了までの道のり。docker(200)

4. COBOL

どんな言語でも、簡単に構築することができる。上位16に出てくる次はCOBOL

他のシステムは、いろいろなライブラリをいっぱい入れている。
cobolは、ライブラリをあまり入れてない。私のdocker hubから利用することをお勧めしたいかも。

bash
$ docker run -it kaizenjapan/cobol /bin/bash

COBOLを40年ぶりにうごかしてみた:dockerでcobol。プログラムちょい替え(4)

5. R

Raspberry PIのRaspbianでもRは使えた。
dockerで動かして結果確認などをしている。

bash
$ docker run -it kazienjapan/r-master /bin/bash

dockerでR 難関いくつ? docker(125) dockerで機械学習(104) 環境構築(4)

「入門 機械学習」Drew Conway, John Myles White 著。dockerで機械学習(71) with R (1)
https://qiita.com/kaizen_nagoya/items/e3722c04ae35e82ecca2
データサイエンスのための統計学入門 ―予測、分類、統計モデリング、統計的機械学習とRプログラミング」Peter Bruce、Andrew Bruce 著。dockerで機械学習(72) with R (2)「
https://qiita.com/kaizen_nagoya/items/479e3283a2d030726254
RとKerasによるディープラーニング」François Chollet、J. J. Allaire著。dockerで機械学習(73) with R (3)「
https://qiita.com/kaizen_nagoya/items/57b0d84b3ce4f754485d
Introduction to Machine Learning with R By Scott Burger著。dockerで機械学習(74) with R (4)
https://qiita.com/kaizen_nagoya/items/be23896636af7a7b014d
「R Deep Learning Cookbook」 Philippe Remy著。dockerで機械学習(75) with R(5)
https://qiita.com/kaizen_nagoya/items/4d6d4b5d9739bcffbf02
Mastering Machine Learning with R 」Cory Lesmeister著。dockerで機械学習(76) with R (6)「
https://qiita.com/kaizen_nagoya/items/c3d51cdd3b811dac4d26
「「Rによる機械学習」の勉強履歴(1)」後追い: dockerで機械学習(77) with R (7)
https://qiita.com/kaizen_nagoya/items/68170a86b1b3dd5e596b
Machine-Learning-with-R-Cookbook-Second-Edition-master。dockerで機械学習(78) with R (8)
https://qiita.com/kaizen_nagoya/items/cbbed4d49ebb9c479816

6. FORTRAN

FORTANもCOBOL同様簡単に導入できる。
ここではdocker hubからの利用を勧めてみる。

bash
$ docker run -it kazienjapan/fortran /bin/bash

プログラムちょい替え(11) Fortran 多次元配列のアクセス順序による計算時間の違い

連立微分方程式のPade近似解法 Fortran手による最適化とコンパイラの最適化、誤差の評価

7. ruby

rubyのちいちゃいやつがmruby

bash
$ docker run -it kaizenjapan/mruby /bin/bash

mruby/cをdocker hubにあげた。要点5つ課題6つ。docker(129)

8. 英語辞書作成

dockerの使い道の3つ目は、英語の文献を読んで単語帳を作る時。

「量子アニーリングの基礎」を読む勉強会を開催した。

「量子アニーリングの基礎」を読む

で参考文献の半分以上が英語論文だった。順次単語帳を作った。

プログラムちょい替え(10)英語(14) 単語帳作成 dockerで(文字コード対応)量子計算機 arXiv掲載 西森 秀稔 論文(shell, awk), docker(82)

この時は、素のubuntuから始める。

bash
$  docker run -it ubuntu /bin/bash

dockerが起動したら

bash
# apt install -y poppler-utils vim

一覧

docker hubの登録が100を超え、保守作業をはじめました。docker(122)

http://hub.docker.com/u/kaizenjapan/
のダウンロード上位16。

Qiitaの記事は、1対1対応ではないが、なるべく最初にそのdocker hubに登録した記事を示すように検索中です。

no. name star downloads language Qiita
1 jq 0 481 jq docker で jq。docker(47) https://qiita.com/kaizen_nagoya/items/8b35775c354cac36093b
2 anaconda-deep-1 0 121 python ゼロから作るDeep Learning - Pythonで学ぶディープラーニングの理論と実装」斎藤 康毅 著。dockerで機械学習(1) with anaconda(1)「https://qiita.com/kaizen_nagoya/items/a7e94ef6dca128d035ab
3 anaconda-keras 0 102 python 「直感Deep Learning」Antonio Gulli、Sujit Pal著。dockerで機械学習(3) with anaconda(3) https://qiita.com/kaizen_nagoya/items/483ae708c71c88419c32
4 anaconda-deep 0 90 python
5 anaconda-keras-ten 0 58 python dockerで機械学習(9) with anaconda(9)「pythonではじめる機械学習」Andreas C. Muller, Sarah Guido 著 https://qiita.com/kaizen_nagoya/items/0960a286b61d50381925
6 anaconda-handson 0 52 python
7 anaconda-francois 0 49 python dockerで機械学習(17) with anaconda(17)「PythonとKerasによるディープラーニング」 :Francois Chollet著 https://qiita.com/kaizen_nagoya/items/bce4fa73560370733ea2 {
8 dockertoppersfmprpi64_fmp 0 48 gcc Dockerをどっかーらどうやって使えばいいんでしょう。TOPPERS/FMP on RaspberryPi with Macintosh編 5つの関門「名古屋のIoTは名古屋のOSで」docker (37)https://qiita.com/kaizen_nagoya/items/9c46c6da8ceb64d2d7af
9 cobol 0 47 cobol COBOLを40年ぶりにうごかしてみた:dockerでcobol, docker(81)プログラムちょい替え(4)https://qiita.com/kaizen_nagoya/items/9d9a216ce1b7b05dbb43
10 100pon 0 44 python 言語処理100本ノックをdockerで。python覚えるのに最適。docker(19) python(1) https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4
11 conda3-amueller 0 41 python dockerで機械学習(9) with anaconda(9)「pythonではじめる機械学習」Andreas C. Muller, Sarah Guido 著 https://qiita.com/kaizen_nagoya/items/0960a286b61d50381925
12 r-master 0 41 r @kazuo_reve「「Rによる機械学習」の勉強履歴(1)」後追い: dockerで機械学習(77) with R (7) https://qiita.com/kaizen_nagoya/items/68170a86b1b3dd5e596b
13 docker-ubuntu10-ndev 0 38 python dockerで機械学習(105)環境構築(5)docker関連ファイルの管理 https://qiita.com/kaizen_nagoya/items/4f03df9a42c923087b5d
14 anaconda-nikhil 0 37 python dockerで機械学習(31) with anaconda(31)「Fundamentals of Deep Learning」 By Nikhil Buduma https://qiita.com/kaizen_nagoya/items/4d9e037aef317b00be10
15 fortran 0 37 fortran Fortran 多次元配列のアクセス順序による計算時間の違い。プログラムちょい替え(11) https://qiita.com/kaizen_nagoya/items/3d657649d74fdd753bad
16 mrubyc 0 36 ruby mruby/cをdocker hubにあげた。要点5つ課題6つ。docker(129) https://qiita.com/kaizen_nagoya/items/b908c594ff9d829683b5

kerasの導入少し手間取りました。保存もうまくいかなかったこともある。

100本ノックの全部を保存したものは、エラーがでちゃうようで現在調査中です。

更新

どの場合も、dockerが立ち上がったら、

bash
# apt update; apt -y upgrade apt; 

をまずしよう。

全部で300くらいdockerを使った記事を書いているような気がする。

エラーがあった時に、エラーメッセージで検索する場合、 docker kaizen_nagoyaの文字を入れるとずばりヒットするかも。docker関連のエラーをなるべく記事にしています。

ディスクの共有

オープンソースじゃないソースのコンパイルをしようとするときは、
ディスクの内容を公開せずに作業ができる。

bash
$  docker run -v /tmp/fortran:/tmp/fortran -it  kazienjapan/fortran /bin/bash

あらかじめ、dockerを起動するシステムに/tmp/fortranというフォルダがあり、
そこにソースコードを入れておけば、起動したdockerでも、/tmp/fortranという
フォルダのソースをコンパイルできる。作業後に、そのフォルダは exitすれば
docker hub側に残ることはない。

docker hubへの保存。

例:jq
docker commit してdocker pushする。
dockerを起動したコマンドプロンプトで実行する。
dockerの中では実行できない。

bash
$ docker commit d48bcf70b686 kaizenjapan/jq
$ docker push kaizenjapan/jq

16進数文字列は、dockerのコマンドに現れているやつ。

port利用

$ docker run -it -p 8888:8888  kaizenjapan/anaconda-alice /bin/bash 

docker -p, 画面表示 。docker(3)
https://qiita.com/kaizen_nagoya/items/a353862ec69fccce8bc2

困りごと

1. loginできない。

アプリは起動し、メニューからloginしているはずなのに、
dockerコマンド打つと、loginしてないと怒られることがある。

コマンドで、docker login し直すといいことがある。

それでも駄目な時は、OSを再起動して、dockerアプリでログインし、
コマンドでもloginするといいことがある。MS Windowsでも類似の経験あります。

docker(80)「DockerでPHP7.0×Apacheの環境を構築する@kurkuru」IT業界新人利用時の16の壁(mac mini編)
https://qiita.com/kaizen_nagoya/items/315e8d05a6eef00b56d1

2. run, pushできない

自分の経験では綴りがちがっていることが一番多い。
anaconda3ではだめで、continuumio/anaconda3じゃないといけないみたいに全部指定しないと駄目なことがある。
その次には、同じ名前で作業していたりとか。

docker(17) docker入門の入門 5つの壁
https://qiita.com/kaizen_nagoya/items/e73ceab051a5556a652c

3. ブラウザで確認したい。

今回の趣旨とは少しずれるかもしれないが、
dockerで動作させたものを、ブラウザで確認したいことがしばしばある。

python でjupiter notebookを使うときや、
javascript, PHPなどで作ったソフトを確かめる時など。

4. HDD等の空きがない。

dockerをいっぱい立ち上げてrm, rmiするといいかも。

docker(9) rmiのための順番
https://qiita.com/kaizen_nagoya/items/0bc05d08cf18af4a8801

5. メモリが足りない

機械学習などをしているとdockerに10GB以上割り当ててないと、処理が進まないことがある。本体を32GBメモリにしてdockerに24GB割り当てると結構楽かも。

この作業のエラー

今日のdocker error :Error response from daemon: conflict: unable to delete 解決
https://qiita.com/kaizen_nagoya/items/a486385d6af636c98f0a

新人

新人の方によく展開している有益な情報

マネージャ・リーダーの私にとって有益な知見が得られた書籍

新人(学生)を指導するよりも新人(学生)に指導してもらった方が効率的。仮説・検証(139)

#参考資料(reference)

第11回 TOPPERS活用アイデア・アプリケーション開発コンテスト

ひょっとしたら、この部門への投稿の表題を変えて、コンテストに応募するのも手かも。

TOPPERS のAUTOSARへの貢献(更新中), AUTOSAR(15)

AUTOSARとSimulink: Adaptive Platform, Classic Platformとマルチコア対応を含めた共通化を目指して

TOPPERS の AUTOSAR への貢献 II (改定中)

人生で影響を受けた本100冊。Youtube(3)

今まで書いてよかった技術書を紹介しよう!

docker入門の入門 9つの壁。docker(17)

docker 入門。docker(2)

プログラミング言語教育のXYZ。Youtube(1) 仮説・検証(52)

技術士 設計側としての情報工学・電気・電子と、設計対象としての全分野

開発環境を豊かにする開発事例 過去・現在・未来
https://qiita.com/kaizen_nagoya/items/d9bf0c2c671fe7f1c749
Microsoftとの歴史 Cコンパイラを中心に
https://qiita.com/kaizen_nagoya/items/d7c0cc257e99de0573cf
Qiitaエンジニアフェスタ_ブラウザ選手権
https://qiita.com/kaizen_nagoya/items/98c4c7f911aa47465087
Qiitaエンジニアフェスタ_StaticWebApps に参加するまで
https://qiita.com/kaizen_nagoya/items/1a1f53926325d872821f
TOPPERS ソースを積み上げよう
https://qiita.com/kaizen_nagoya/items/65c15aed086f2da0928d
技術書「Rubyソースコード完全解説」 と 「docker で ruby」構築
https://qiita.com/kaizen_nagoya/items/a00fec16fb43e6e9071d
会計と技術 工業簿記、原価計算に加えて
https://qiita.com/kaizen_nagoya/items/66b0c57d99b689acbb8d
UMLモデリングの本質
https://qiita.com/kaizen_nagoya/items/bc6ac386af27530eb78a
Code Complete:goto論争の終焉
https://qiita.com/kaizen_nagoya/items/82c7939f442cbd5fce37
RTL設計スタイルガイド Verilog HDL編
https://qiita.com/kaizen_nagoya/items/c883b9aab40c53c1d259
定量分析の教科書
https://qiita.com/kaizen_nagoya/items/c79b7b2356032f3817e3
Githubで開発環境構築から教育環境構築、教材作成へ
https://qiita.com/kaizen_nagoya/items/493bdd22c7d318402fe2

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

#文書履歴(document history)
ver. 0.01 初稿 20210724
ver. 0.02 一覧追記 20210725
ver. 0.03 順番入れ替え、参考URL追記 20210731 午後4時
ver. 0.04 ディスク共有 追記 20210731 午後5時
ver. 0.05 R 追記 20210731 午後6時
ver. 0.06 参考資料追記 20210808
ver. 0.07 参考資料追記 20210809
ver. 0.08 斉藤直希さんが読んだであろう箇所の表現を補足 20210817
ver. 0.09 編集 20210902
ver. 0.10 Qiita エンジニアフェスタ 2021 優秀賞 をいただきました。ありがとうございます。20210914
ver. 0.11 「データサイエンティストの気づき「勉強だけして仕事に役立てない人。大嫌い!」。『それ自分かも!』ってなった。」参照追記 20210921
ver. 0.12 言語処理100本ノックをdockerで。python覚えるのに最適。docker(19) python(1) 追記 20211212
ver. 0.13 URL追記 20211218
ver. 0.14 dockerは保育園、幼稚園のお子様にお勧め。20220202

このエントリーをはてなブックマークに追加

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
73
Help us understand the problem. What are the problem?