/// BANGBOO BLOG ///
■23/1/22 4:17PM
竹書房 plotted nibbler
ええ本無いな、ダメな方に誘導しているだけで読まん方がいいよな
 どうでもええ、科学的でも前進が少ない、分かりにくい、本となっていない
 上梓しましたよ~という為だけにある
 レビューも信用ならん
 適当なことを言っているだけ、逆誘導
 逆に生産性が無さそうな批評家、評論の方がええかも

といっても、私も逆誘導だよ~ん
ということで… ベリベリベリ竹書房復活ってdoDow
[Click for image]

/// 支配の構造 国家とメディア――「世論」はいかに操られるか
[Click for image]仏)フランス革命で労働者が団結して職能組合や結社を厳しく制限中間共同体を認めず、ルソーの社会契約論に影響された国家は個人の自由意思に基づく契約により成立、一般意思こそが公の利益を達成する党派、結社は私的団体であり、私的利益誘導するでなく個人になれと実際には党派なのに個人と言い張ることが起こる
米)タウンシップがデモクラシーの下支え地域に根差す自治的な中間共同体、つまり教会中産階級が階級的ではなくフラットな個人として関係性を結ぶ中間共同体が国家権力の防波堤になり、パブリックマインドの教育の場となる行き過ぎた個人主義から共同体を見直す動きも結社としてのメディア=ローカルニュース選挙は神の見えざる手、デモクラシーには見えない神の存在があると思っているのでは

プロテスタントの救済、神の国に行くのは厳格で難しいカトリックは懺悔をすればいいが、Pは大抵の人は救済されないと考えている救済される自分は救済されない堕落した人間とは付き合えないつまりエリートとしての連帯は強く救済される同志

人の間で同時性を認識できると共同体やネーション等の連帯感が現れる同じニュースを見る事、昔は新聞で同時性がありメディアが連帯を近年作りだした昔はどこに巡礼するかで共同体が決まった、共同体から代表2名で伊勢に行ったとかネットはバラバラに小世界を点在させ、相互交流はしない
検閲や強制や弾圧でなく、社会の変化に従って、大衆が自ら忖度し発禁していくだろうちびくろサンボ、アンクルトムの小屋、煙草と肺がん、コロナ、陰謀誰かにとって好ましくないものは何も考えずに燃やしてしまえば平穏無事だ自分の頭で考えているような気になる、動かなくても動いているような感覚になる、ニュースのみをぎっしり詰め込んでやれ

/// 知ってはいけない現代史の正体
[Click for image]waspはもう米国を支配していない
排他的だったwaspは > 同一化 > 多様性 > というメディア世論で没落 > DS
多文化共生を一つの国家で行えない(DSの分断戦略、欺瞞、国家は単一文化が自然)

戦争紛争を利用し利益を収奪
シリアに介入したい(反アサド⇔ISIS(悪者)←育てる/武器を供給)>無政府状態にした後>介入
時に両方に付く、時に片方、だが裏切ることもある

自由と民主主義は国際介入政策を正当化する口実
- 民主化>民営化>グローバル市場化→国民主権の喪失
- グローバリズム→民族文化を破壊し金融で独裁支配する社会主義化


歴代大統領:グローバリズム←影のキングメーカ:国際金融資本家のコントロール下
トランプ:アメリカファースト/ナショナリズム
プーチン:反グローバリズム

中国:共産党独裁国家、超個人主義、中国人に国家観はない(儲かればいい)→世界のリーダになり得ない

/// アンジャッシュ渡部の 大人のための「いい店」選び方の極意
[Click for image]食の楽しみ、開拓の楽しみ
相手の苦手なものを確認、行きたいところを調べて行く
忙しいとか疲れている時こそ食べに行く:充実感でリフレッシュ
予約時:用途を言っておきたい(デートとか接待とか)、個室はテーブルか座敷か、お土産

/// フロイト vs ユング
フロイトが考えたのはこういうことだ。人間は誰しも、自分でも知らない 「心の秘密」をもっている。世の中には、不幸にも、なぜだかわからないうちに心や体の調子が悪くなり、しかもそのせいで周りとの人間関係までぎくしゃくしてしまっているような人がいる。そういう人の多くは、この「心の秘密」のせいで不幸になっている。
フロイトは、この秘密の在りかを「無意識」と呼んだ。
自分にも分からない 「心の秘密」などというものができてしまうの は、もとはといえばこの「話すこと」に原因があるのだと言ってよい。フロイトは、「無意識」をつくる心の働きを「抑圧」と呼んだが、これは「話すこと」を抜きには考えることが できないメカニズムである。つまり、あることを言わずに別のことを言う、ということではじめて、なにかが外へと追い出される、ということになるのである。
ときどき、精神分析 (まがい)の本を読んでいると、人間に心の病をもたらす根本的な問題は 「人間の本能が壊れている」ことだ、などという説明に出会うことがある。こうした考え方 は、精神分析の立場からすると、まったくの的外れだと言わねばならない。人間が「ことば」というものを話すようになった瞬間から、自らの本能的現実とはまったく異なる次元の「現実」に、すなわち、まさに「言語によって生み出される現実」に、捕らえられてしまうということ、そのことこそが重要なのだ。
言語の働きにのっとって話すことが「無意識」をつくり、また逆に「無意識」を探す道すじを与えてくれるのだとすれば、およそ人間の活動の及ぶあらゆる領域において、「無意識」が存在し、「無意識」が探求されうることになる。だからフロイト以後、文学も、人類学も、政治学も、社会学も、文学作品の中にも、未開社会の畑の中にも、政治的言説の中にも、はたまた社会構造そのものの中にも、「無意識」は存在するし探求されるようになった。

フロイト:チェコ、年子、ユダヤ改修派(ユダヤとして被差別、隣国ナチスとの関係)ユング:ゲルマン系スイス、父プロテスタント牧師名士、母シャーマン家系抑圧・トラウマを意識化すると神経症が治る。カタルシス→意識化していない、知らないことは怖い 抑圧>無意識>神経症(神経症だけでなく無意識に入り込む:夢・失錯行為・機知に反映)
心の構造論 イドesリビドー:快感原則 自我ego:健全 超自我super ego:無意識な躾(破ると後悔や罪責感)コンプレックス - Wikipedia:無意識に働く心的内容で複合的な観念、好きだが嫌いとか葛藤とかフェチ的な エディプスコンプレックス:母好き父嫌いな息子 エレクトラコンプレックス:父好きな葉は嫌いな娘
 劣等感を意味するのはコンプの一種でコレ、劣等複合(inferiority complex)
  全ての他人よりも不足している、劣っているという信念から劣等感が生じ、極端な内気、自己隔離、社会的従順などが発生死の欲動・影←対抗するには自我(健全)の強さが必要 駄目男に惹かれる>快感(受動な不快を能動的に置換して和らげようとしている)ヌーメン性:聖性が作用し自身が支配されるニヒリズム:虚無主義、絶対的な価値がなくなる
脳科学の知見 思考)外部を知覚し判断 感情)内的寛容や内的欲求を抑圧し評価 情動)検索、のっとり、恐怖、パニックの少なくとも4つ力動:反対方向に動くエネルギーの葛藤 愛情と攻撃性、欲望と禁転移:患者が分析家に愛情や憎しみ等の感情を向ける、逆に分析家が患者に感情を向けると逆転移解離:ヒステリーから別人格が現れる
 (ヒステリー:強い感情があり意識から追い出されている記憶)自由連想法:自由に話し無意識に閉じ込められた記憶を蘇らせる催眠術:意識は眠らせるが無意識に話し掛け暗示を掛ける、これで支配できる幼児期の性的トラウマが思春期以降にヒステリーとして現れる
夢:願望充足(あくまで無意識の。だがかつて意識から追放された欲望)
 睡眠自体を守る行為の場合もある
 圧縮+移動+抵抗の検閲
 イドとエゴとスーパーエゴが夢を歪めているのを探る
 夢により意識と無意識を近づけたと言える
子供の夢:強い歪曲や検閲がなく、また抑圧や記憶が少なく欲望成就そのままが多い
大人の夢:遠い記憶/複雑な葛藤/幼年期の記憶で圧縮移動されて分かりにくい
現実と欲望の葛藤→間違い/度忘れ/ヒステリー/脅迫神経症/夢で成就
 プライベートで退行し抑圧を解放しバランスを取っている
(フロイト
夢や症状は個人史の中で探られるべき脅迫症状には愛憎の葛藤や性的トラウマがある夢には無意識に抑圧された願望が現れる
無意識は自我が受け入れられないものを放り込むゴミ箱のようなもの
自我は意識の中心、無意識の中に抑圧された衝動や感情が神経症の原因
神経症の原因は幼少期にある
(ユング
夢や症状は集合的無意識に根差す原初的なイメージとも比較対象すべき
物語が重要であり人の苦悩や背景を明らかにする無意識は意識を補償するもので夢は無意識からのメッセージ無意識はもっと創造的で植物にすら通底する将来的な層がある
意識と無意識からなる心の中心には自己(セルフ)がありこれを実現することが人生の目標
神経症の原因は現在にある、神経症の人こそ自己実現の可能性をもつ
(オレ
無意識の願望が幼稚な場合は折り合いがつかず問題だな

夢の定型変形 塔/ペン:ちんこ 鞄/洞窟:おまんちょ 王/王妃:両親 小動物:子供/兄弟言葉遊びで別の言葉に置き変えらる夢を他人に話す前提>転移者(分析家)が夢に含まれている前頭法:頭を叩きながら治療者が語り掛ける自由連想法:頭に浮かんだことをそのまま語らせる 不安=内的、恐怖:外的、体内:楽園不安の原型は出産外傷で分離、孤独、見捨てられ
神経症は無知に押し込まれている暗示法は信頼関係=転移が必要で危険>フロイトは自由連想法に変えた
フロイト=性欲、子供においては愛着・依存が 男女間の結合だけでなく、創造・欲求・生命力の源泉・活力

 人間は性欲を学習するので間違いや失敗が起こりやすい男:エディプスコンプ(母に恋し父を憎む)→去勢を連想→断念し父を真似→超自我→(拗らせ)性同一性女:エディプスコンプ(母を愛す)→ちんこがない→劣っている→母を嫌悪→父に憧れ→他男と恋愛→(拗らせ)変な恋愛、ユング派はエレクトラコンプレックスという
肛門期:トイレ成功/失敗の躾>SMに発展ナルシシズム:性的エネルギーを自己に(自己保全)防衛機制:抑圧(嫌な事は無責任化)、否認(認めない)、分離(感情を切り離し他人事)防衛機制:同一化、反動形成(嫌なのに丁寧)、投射(被害妄想など)、合理化(知性化:言い訳)、昇華(虐めをスポーツ)死への欲動(タナトス):正か生き死に、外部とすると他者攻撃となる、あるいは超自我(躾)生の欲動(エロース): 戦争=攻撃的欲求 宗教=幼児は親に守ってもらいたい欲望(幼児神経症的) 芸術=幼児期に抑圧された性的欲望を形を変え昇華 性欲・攻撃性・エディプスコンプを転換→仕事/スポーツ/絵/戦争/文学
ユング:心がどこへ向かおうとしているか?心は過去から未来へ発達を続けようとするフロイト:過去(幼児期)>性的エネルギーカレン、ホナイ:神経症は性欲でなく文化的要因=対人関係と基底不安(幼児期/孤独で無力)アルフレッドアドラー:権力闘争/体力知力を求める、劣等感が神経症に
子供の人格形成:親は子供の世界に入るべきでない、自分で世界を発見すべき幼児の人格形成:母が外部との緩衝になり、受け取れるものだけ選択し赤ちゃんに返すといい
ラカン: 想像界(鏡像):ナルシシズムと攻撃性で事故や他人を形成する領域 象徴界:人を人と形成する言語の領域=法 現実界:死の欲動の領域
男性の去勢不安、女性のペニス羨望>精神分析治療で乗り越えるのが難しい
自我心理学:自我を強くし適応能力を高める(無意識を長期間分析する必要がなくなる認知行動療法:無意識にアプローチしないプラグマティックなトレーニング療法 例)ゴキブリ怖い>映像を見て慣れる等(パブロフの犬的)ニューロサイエンス:心の現象も脳内化学物質プロセス
心理学 ヴント:要素主義-構成主義-意識内容の考察 ワトソン:行動主義 S(刺激)-R(反応) ヴェルトハイマー:ゲシュタルト心理学=形態(似てるものをグループしがち)
  上の2つの反応観察に反論し全体性に光を当て解明しようとする、心は要素に分解できず部分からは導くことは不可 フロイト:精神分析=======
枢軸 axis/pivot国際関係のうえで親密な友好関係にあり、共同行動をとる国々。ナチス・ドイツ、ファシストのイタリア、軍国主義の日本。ムッソリーニがローマとベルリンを結ぶ垂直線を枢軸として国際関係は転回すると演説して有名に。ひっくり返すの暗喩。 直喩simile:~のような「雪のような肌」
 暗喩=隠喩metaphor:例えが隠されている「檻の中のライオン」
 換喩metonymy:連想できる代替の語「白衣の力で治す」
Comment (0)

■22/9/2 2:54AM
Overtone
音は複数の成分音の集合で、そのうち最も振動数が少なく高さを決定する音を基本音fundamental tone。overtoneは上音、基本音以外の部分音。露光過度。
倍音はharmonic overtone。

2022年、特に感動した・気に入った フリーソフト – GIGA!無料通信 (gigafree.org)
楽器パートに分解、MIDI化、高画質化超解像等のヤツ
2021年、特に感動した・気に入った フリーソフト – GIGA!無料通信 (gigafree.org)
ミキシング、AIに喋らせ

張っ付くパンツか 引っ付くパンツか くっつくパンツか ムカつくパンツか、張っ付くパンツか 引っ付くパンツか くっつくパンツか ムカつくパンツか、パンツかパンツかパンツかパンツか

一拍三拍に手拍子入れて、二拍四拍でもみ手をするというのが日本の伝統的なリズム感
2/4拍はバックビート所謂ウラ、前者のキックか後者のスネアでとるか
なお1ト2ト…のトのところが裏拍
[Click for image]
ゼブラゾーンを走っていても直線優先でAの勝ち(何割かは引かれるが)
ゼブラゾーン(導流帯)の意味。走行・駐車は可能?|チューリッヒ (zurich.co.jp)

[Click for image]
左から、立ち入り禁止部分(オレンジ枠で走行も停止も不可)、安全地帯(オレンジ枠でバス停等で走行も停止も不可)、停止禁止(走行はできるが停止不可)
3歳でクラクションは鳴らせない、ドア解放だと走行中危ないしな
園バスの件、「園バス土足禁止」。 靴が残っていたら絶対に気づく。 費用ゼロですぐ導入可。

■ブラウザの機能拡張を考えようか
誰もが使うべき「YouTube拡張機能」ベスト10 | ライフハッカー・ジャパン (lifehacker.jp)

■秘密のフォント
(1) 菊屋素材@漫画ブラシ・擬音集・などなど (@Kikuya_Sozai) / Twitter
[菊屋素材集]R-18擬音&セリフ ブラシ集 - kick-tyan - BOOTH
あははもじもじ - 無料で使える日本語フォント投稿サイト|フォントフリー (fontfree.me)
あははもじもじフォント - フロップデザインフォント - BOOTH
Comment (0)

■22/7/24 3:46AM
Docker
どこでビルドしてもデプロイしてもImmutableインフラ(不変の)なので変更したい場合はDockerfileの方を変えるコンテナはOS上のDockerEngine上に配置する(コンテナは複数配置できる、Dockerfileさえあれば再現可)
DockerfileでなくてもDockerイメージでもいいが、Dockerは可搬性をもたらすのである なおVMはOSをもシミュレート
1部: はじめに|実践 Docker - ソフトウェアエンジニアの「Docker よくわからない」を終わりにする本 (zenn.dev)
2部: Dockerfile の基礎|実践 Docker - ソフトウェアエンジニアの「Docker よくわからない」を終わりにする本 (zenn.dev)
3部: Docker Compose|実践 Docker - ソフトウェアエンジニアの「Docker よくわからない」を終わりにする本 (zenn.dev)
 Dockerのチュートリアル - とほほのWWW入門 (tohoho-web.com)
 Dockerコマンド - とほほのWWW入門 (tohoho-web.com)
  コンテナ設計方針をまとめてみた - Qiita
  社内のDockerfileのベストプラクティスを公開します│FORCIA CUBE│フォルシア株式会社
  Docker完全に理解した | IIJ Engineers Blog
 ボリュームマウント=DockerEngine上にボリュームを作りコンテナにマウント(操作が面倒で仮使用や永続ファイル用)
 バインドマウント=LinuxOS上のファイルやディレクトリをマウント(ファイル編集が多い場合)
 dockerfile(イメージを作る)、docker compose(yamlで一括でコンテナ/nw/volを作る)
  dockerfile: dockerイメージを作る→runでコンテナ(アプリ)になる
  docker composer: コンテナを作る、NWやボリュームも作る→1台にまとめる
   マニフェスト: k8sを作る→複数台になる
    Dockerfileによるビルド - とほほのWWW入門 (tohoho-web.com)
    Docker Compose - とほほのWWW入門 (tohoho-web.com)

■Dockerインスコ
/// BANGBOO BLOG /// - GCP script ここの下の方に記載あり
docker --versionwho 誰がログインしているかsudo gpasswd -a [ユーザ名] docker dockerグループへ追加?

■Docker Engine起動
sudo systemctl start docker これ要る?

■オプション
-i キーボードを繋ぐ
-t 特殊キーを使用可能にする
-e 環境変数名=値(複数記載可能)
--net=ネットワーク名
-v ${pwd}:/app はOSローカル環境とコンテナ内のディレクトリを同期-p, -public 80:8000 ポートの紐づけ-d, -detach バックグラウンド実行(デタッチ)-rm コンテナ実行後にコンテナを自動削除する(イメージは残る)
-dit  とまとめられる
■操作コマンド
docker images リストdocker tag [イメージID] img_unco:latest 名前がつかない場合docker rmi [イメージID]  削除docker ps -a コンテナ一覧
docker container ls コンテナのステータス確認docker rm [コンテナID] 削除

■起動
httpd3つを1つのイメージで建てられる(以前はdocker runだった)docker container run --name コンテナ名001 -d -p 8081:80 イメージ名httpd
docker container run --name コンテナ名002 -d -p 8082:80 イメージ名httpddocker container run --name コンテナ名003 -d -p 8083:80 イメージ名httpd
■仮想NW
コンテナ間をつなぐ(ネットワークタグ名で紐づける感じ)
1)ブリッジネットワーク(デフォルト 同一の Docker Engine 上のコンテナ が互いに通信をする場合に利用する デフォルト:  全てのコンテナ間をリンクする操作が必要  コンテナ間の通信は IP アドレスで ●(コレ使う)ブリッジネットワークを定義し作成:  相互通信は同じネットワークを割り当てるだけ  コンテナ間でDNS解決される  ネットワークでコンテナは隔離され隔離度が上がる2)オーバーレイネットワーク 異なる Docker Engine 上のコンテナ が互いに通信をする場合に利用

docker network create ネットワーク名net001

docker container run --name mysql001 -dit --net=net001 ~~~ イメージ名mysql
docker container run --name wordpress001 -dit --net=net001 -p 8085:80 -e WORDPRESS_DB_HOST=mysql001 ~~~ イメージ名wordpress

Docker仮想NW一覧docker network ls仮想NWの確認docker network inspect net001

コンテナ間はservice_nemeで通信し、コンテナ名ではないhttp://unco-sv:8000 で通信できる各コンテナで同番ポートを使っていても問題はないdocker info プロキシ等が確認できる.docker/config.json でプロキシやプロキシを使わないnoProxyを設定
■停止
docker stop コンテナ名
docker rm コンテナ名
docker network rm ネットワーク名

■コピー OS⇔コンテナ
docker cp コピー元 コピー先
例)docker cp /home/a.txt コンテナ名:/app/

■ボリュームのマウント
データをコンテナ内に置くとコンテナが消えるとデータも消えてしまう
永続化1)ボリュームマウント:DockerEngine上
永続化2)バインドマウント:OS上
永続化3)一時メモリマウント:(tmpfs)

■バインドマウント
docker volume create ボリューム名vol001
docker run --name コンテナ名httpd001 -d -p 8080:80 -v /home/a:/usr/local/apache/htdocs イメージ名httpd (OS側パス:コンテナ側パス、コンテナ側のパスをどこにすべきかはDockerイメージのドキュメントを見よ)
docker volume inspect vol001 (確認できる)
docker volume rm vol001

ホストディレクトリ共有ともいう
コンテナはrootで動作しているものが多くホスト共有しているDir/Fileにコンテナから変更するとrootで変更しPermissionが変わるそのためホストディレクトリ共有は本番に向かない
■ボリュームマウント
ちょい面倒らしいのでバインドマウントでいいのでは?
docker volume create ボリューム名vol001
docker run --name コンテナ名httpd001 -d -p 8080:80 -v ボリューム名vol001:/usr/local/apache/htdocs イメージ名httpd (OS側パス:コンテナ側パス)docker volume inspect vol001 (確認できる)
docker volume rm vol001

Dockerボリューム共有ともいう
コンテナが削除されても明示的に消さない限り保持される永続化したいパスを指定してマウントできる(通常コンテナ内で作成されたデータは永続化しない)

■揮発的データを退避docker cp コンテナ名:ファイルパス ホスト側退避パス docker cp test-db-a:/opt/test.txt /tmp/config消えるファイルをホスト側に退避したいときのコマンド
■ボリュームマウントの確認やOS側にバックアップ
アプリコンテナとは別のshellコンテナを用意してlsしたりtar.gz等する
Apacheコンテナ <-> vol001 <- Linuxコンテナ -> vol002バックアップ
マウントを2つ(DockerEngine上のマウント、OS上のマウント)
tar.gzコピーでDockerEngine上の指定フォルダにコピーするが其れはOS側にもマウントされている、最後のドットも要る
イメージは軽量Linuxのbusyboxを使用
docker run --rm -v vol001:/usr/local/apache/htdocs -v /home/b:/tmp busybox tar CXvf /tmp/bjk.tar.gz -C /usr/local/apache/htdocs .

■ログdocker logs コンテナ名docker logs -f コンテナ名 追従確認docker exec -t コンテナ名 /bin/bash ログファイル等はこれで入り確認
■Appコンテナ(PHP)
docker container run \    --name app \ コンテナにappと名付る    --rm \ コンテナ停止時に自動削除    --detach \ バックグラウド実行    --interactive \ 対話可能なセッションに    --tty \ コンテナとのTTY接続しコマンド出力可    --mount type=bind,src=$(pwd)/src,dst=/src \ osにバインドマウント    --publish 18000:8000 \ ポートマッピング
    --network docker-sample-network \ 仮想NWに割り当て    docker-php:app \ Dockerイメージの名前とタグ    php -S 0.0.0.0:8000 -t /src コンテナ内で実行するコマンド
※永続化バインドマウントos上ホストマシンのディレクトリをコンテナ内のディレクトリにバインドマウント。ホストマシンのカレントディレクトリ($(pwd))の"src"ディレクトリが、コンテナ内の"/src"ディレクトリにマウントされます
※ポートマッピング-p, --publishがコンテナのポートをホストマシンに公開するオプションホストマシンの18000ポートを通じてコンテナの8000ポートにアクセスさせるブラウザからhttp://localhost:18000 でphpにアクセス

※起動コマンドPHPのビルトインウェブサーバを起動し、IPアドレス "0.0.0.0" およびポート "8000" でリクエストを受け付け、コンテンツを"/src"ディレクトリから提供します

■コンテナの詳細情報の確認
docker container inspect app

■DBコンテナ(MySQL)
docker container run \ --name db \ --rm \ --detach \ --platform linux/amd64 \ --env MYSQL_ROOT_PASSWORD=rootpassword \ --env MYSQL_USER=hoge \ --env MYSQL_PASSWORD=password \ --env MYSQL_DATABASE=event \ --mount type=volume,src=docker-db-volume,dst=/var/lib/mysql \ --mount type=bind,src=$(pwd)/docker/db/init.sql,dst=/docker-entrypoint-initdb.d/init.sql \ --network docker-sample-network \ --network-alias db \ docker-db:db
※仮想NWでのエイリアス名dbと名付ける
■コンテナの疎通の確認$ docker container exec --interactive --tty app ping db -c 3appコンテナがdbに疎通できるかping
■アプリ
/// BANGBOO BLOG /// - GCP script 下の方に記載あり

■Dockerfile
ビルドしてイメージを作成
FROM イメージ名
COPY コピー元パス コピー先パス
RUN Linuxのコマンド

ENTRYPOINT イメージを実行するときのコマンド
CMD コンテナ起動時に実行する規定のコマンドを指定
 例えばこのコマンドを実行するCMDは  $ go run /echo/main.go  ↓空白で分割し配列化しCMD化される  CMD["go", "run", "/echo/main.go"]
 ただCMDは下記のように実行中に上書き指定ができ echo yayの実行となる
  docker container run $(docker image build -q .) echo yayONBUILD ビルドが完了したときに任意の命令を実行する
EXPOSE 通信を想定するポートをイメージの利用者に伝える
VOLUME 永続データが保存される場所をイメージ利用者に伝える
ENV 環境変数を定義するWORKDIR RUN/CMD/ENTRYPOINT/ADD/COPYの際の作業ディレクトリSHELL ビルド時のシェルを指定
LABEL 名前やバージョンや制作者情報等を設定
USER RUN/CMD/ENTRYPOINT実行するユーザやグループを設定ARG docker buildする際に指定できる引数を宣言
STOPSIGNAL docker stopの際にコンテナで実行しているプログラムに対して送信するシグナルを変更する
HEALTHCHECK コンテナの死活確認をするヘルスチェックをカスタマイズする

Dockerセキュリティベストプラクティス トップ20:究極ガイド
社内のDockerfileのベストプラクティスを公開します│FORCIA CUBE│フォルシア株式会社
RUN adduser -D myuser && chown -R myuser /myapp
 (-Dはデフォルト設定で追加している、-Rは指定dir以下を再帰的に所有権変更)USER myuser
 (以降のRUNやENTRYPOINT等のINSTRUCTIONを実行するユーザを指定)
FROM ubuntu:latestRUN mkdir /app# "appuser" という専用のグループとユーザーを作成(ログイン不要のシェル設定)RUN groupadd -r appgroup && useradd -r -s /usr/sbin/nologin -g appgroup appuserWORKDIR /appCOPY . /app# ユーザー権限を変更(アプリケーションディレクトリの所有者を "appuser" に設定)RUN chown -R appuser:appgroup /app# 最小特権ユーザーで実行USER appuser# アプリケーションの実行コマンドCMD ["node", "index.js"]

Dockerfileの作り方を考え直したらすごく効率が上がった。 (zenn.dev)

■ビルドでイメージを作成
Dockerfileや材料ファイルのあるフォルダパスを最後に指定、-tはタグでイメージ名
docker build -t img_httpd001 ./

ビルド後にdocker runが必要docker container run -d --name cnt_httpd001 -v ${pwd}:/app img_httpd001:latest↓これが便利docker container run -rm --name cnt_httpd001 -v ${pwd}:/app img_httpd001:latest

■commitでコンテナからイメージを作成コンテナにexecで幾つかインスコする操作をしてからイメージにする等ができる
docker commit httpd001 img_httpd001

■コンテナ/イメージはDockerEngine上から移動できない
saveするとファイル化され、できるようになる
docker save -o save_img_httpd001.tar img_httpd001
 ファイルからイメージとして取り込みたいときはdocker load
 ファイル化せずにパブリックならDocker hubへ登録してもよい、プライベートレジストリを作ってもよい
  その中にそれぞれリポジトリを持つ > docker push レジストリ/リポジトリ名:バージョン

■コンテナに命令する
2つの方法がある
1)docker exec → docker container execに変わった
起動中のコンテナ内でコマンドを実行するdocker container exec [option] <container> commandファイルを見るdocker container exec ubuntu1 cat ~/hello.txtコンテナに接続してbashを使うdocker container exec --interactive --tty ubuntu1 bash

2)docker run に引数を付ける→ソフトウェア(apache)が動いていない状態になり改めてdocker startが必要
docker exec -it コンテナ名httpd001 /bin/bash
 apt install mysql-server など対話でコンテナにインスコできる
exit 抜ける

■Docker composedocker runコマンドの集合体、コンテナ等作って消すだけ(k8sはコンテナ等を管理する)
以前はdocker-composeコマンドで別ツールだったが今は統合済み
フォルダに1つだけdocker-compose.yml
基本はdocker runを実行せずにdocker composeしたい
手順は、1)Docker run方法で一応の検討>2)docker-compose.ymlの記述>3)docker composeコマンドの実行

docker run~~に対するdocker-compose.ymlとdocker composeコマンド の対比
1)docker run --name cnt_wordpress001 -dit --net=net001 -v wordpress001vol2:/var/www/html -p 8080:80 -e WORDPRESS_DB_HOST=mysql001 -e WORDPRESS_DB_NAME=wpdb001 -e WORDPRESS_DB_USER=wpu001 -e WORDPRESS_DB_PASSWORD=my-secret-pw wordpress
↓2) docker-compose.ymlの記述
version: "3"services:  cnt_wordpress001:    depends_on:      - cnt_mysql001    image: wordpress    networks:      - net001    volumes:      - wordpress001vol2:/var/www/html    ports:      - 8080:80    restart: always    environment:      WORDPRESS_DB_HOST=mysql001      WORDPRESS_DB_NAME=wpdb001      WORDPRESS_DB_USER=wpu001      WORDPRESS_DB_PASSWORD=my-secret-pw
  cnt_mysql001:    image: mysql:5.7    networks:      - net001    volumes:      - mysql001vol1:/var/lib/mysql    restart: always    environment:      MYSQL_ROOT_PASSWORD=my-root-pw      MYSQL_DATABASE=wpdb001      MYSQL_USER=wpu001      MYSQL_PASSWORD=my-secret-pwnetworks:  net001volumes:  mysql001vol1:  wordpress001vol2:
/// restartの設定値(コンテナが停止した時にどうするか?)
no =何もしない
always =必ず再起動する
on-failure =プロセスが0以外のステータスで終了したときは再起動する
unless-stopped =停止していたときは再起動しないがそれ以外は再起動する
 Bashで終了ステータスよる条件分岐 | Codebase Blog
 ※bashは前に実行されたコマンドの終了ステータスは「$?」で取得できるが慣習的にコマンドが正常終了した場合は0を返す

/// その他の定義項目command =起動時の規定コマンドを上書きするentrypoint =起動時のENTRYPOINTを上書きするenv_file =環境設定情報のファイルを読み込む
 他 container_name / dns / eternal_links / extra_hosts / logging / network_mode etc.

3)docker compose コマンド
 up=イメージDL、コンテナ/nw/volの作成・起動
 down=コンテナとnwの停止と削除、volとイメージは残る
 stop=削除せず停止のみ

docker compose -f /home/a/docker-compose.yml up -d
docker compose up -d --scale unco001=3 (コンテナ名はput-folder-name_unco001_1, put-folder-name_unco001_2, put-folder-name_unco001_3になる)
 -f ファイルの場所(省略でカレントパス)
 -d バックグラウンド実行
 --build コンテナ開始前にビルド
 --no-build イメージが見つからなくてもビルドしない
 -t コンテナ停止のタイムアウト(デフォ10S)
 --force-recreate 設定やイメージに変更が無くてもコンテナを再生成 --no-create コンテナが存在していれば再生成しない
 --abort-on-container-exit コンテナが一つでも停止したら全てのコンテナを停止 --remove-orphans 定義ファイルで定義されていないコンテナを削除 --scale 同じコンテナを複数作る
docker compose -f /home/a/docker-compose.yml down --rmi {all | local} 破棄後にイメージも削除、localの時はimageにカスタムタグが無いイメージのみを削除
 -v volumesに記載されているボリュームを削除、但しexternalの指定を除く
 --remove-orphans 定義ファイルで定義されていないコンテナを削除

docker compose -f /home/a/docker-compose.yml stop コンテナを停止
■Docker composeはコンテナ名を勝手につける
docker-compose.yml内は下記の通り、DockerEngine上のコンテナ名は変わるがdocker-compose.yml内のコンテナ名は変わず指定できるservices:
  unco001~
  unco002    depends_on:
      - unco001
    environment:
      WORDPRESS_DB_HOST: unco001

DockerEngine上のコンテナ名は put-folder-name_unco001_1 となる
DockerEngine上で操作したいときは docker ps -a 等で実際の名前を確認して操作する

■コンテナ デバッグ
3部: デバッグノウハウ ( 番外編 )|実践 Docker - ソフトウェアエンジニアの「Docker よくわからない」を終わりにする本 (zenn.dev)

====================
基本はLinuxの機能を使っているnamespaceで分離しファイル構造、ユーザーID、グループID、コマンド、ライブラリなど諸々をラップしコンテナ化し(単一の)プロセスとして動く↓
Dockerがやっている仕事は少ない
区切ってコンテナ
それら仮想ネットワークで繋ぐ
ボリュームの永続化
Dockerfileでイメージからイメージを作成Docker composeでdocker runを記述docker execでコンテナを操作etc.


Comment (0)

Navi: <  9 | 10 | 11 | 12  >
-Home
-Column [133]
-Europe [9]
-Gadget [78]
-Web [137]
-Bike [4]

@/// BANGBOO BLOG ///