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

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


/// 支配の構造 国家とメディア――「世論」はいかに操られるか
[Click for image]ああああ
Comment (0)

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

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

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

[Click for image]
ゼブラゾーンを走っていても直線優先でAの勝ち(何割かは引かれるが)
ゼブラゾーン(導流帯)の意味。走行・駐車は可能?|チューリッヒ (zurich.co.jp)

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

■ブラウザの機能拡張を考えようか
誰もが使うべき「YouTube拡張機能」ベスト10 | ライフハッカー・ジャパン (lifehacker.jp)
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 80:8000 ポートの紐づけ-d バックグラウンド実行(デタッチ)-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
コンテナ間をつなぐ(タグ名で紐づける感じ)
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 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

■ボリュームマウント
ちょい面倒らしいのでバインドマウントでいいのでは?
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

■ボリュームマウントの確認や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 .

■アプリ
/// BANGBOO BLOG /// - GCP script 下の方に記載あり

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

ENTRYPOINT イメージを実行するときのコマンド
CMD コンテナ起動時に実行する規定のコマンドを指定
ONBUILD ビルドが完了したときに任意の命令を実行する
EXPOSE 通信を想定するポートをイメージの利用者に伝える
VOLUME 永続データが保存される場所をイメージ利用者に伝える
ENV 環境変数を定義するWORKDIR RUN/CMD/ENTRYPOINT/ADD/COPYの際の作業ディレクトリSHELL ビルド時のシェルを指定
LABEL 名前やバージョンや制作者情報等を設定
USER RUN/CMD/ENTRYPOINT実行するユーザやグループを設定ARG docker buildする際に指定できる引数を宣言
STOPSIGNAL docker stopの際にコンテナで実行しているプログラムに対して送信するシグナルを変更する
HEALTHCHECK コンテナの死活確認をするヘルスチェックをカスタマイズする

社内のDockerfileのベストプラクティスを公開します│FORCIA CUBE│フォルシア株式会社
RUN adduser -D myuser && chown -R myuser /myapp
 (-Dはデフォルト設定で追加している、-Rは指定dir以下を再帰的に所有権変更)USER myuser
 (以降のRUNやENTRYPOINT等のINSTRUCTIONを実行するユーザを指定)Dockerセキュリティベストプラクティス トップ20:究極ガイド

■ビルドでイメージを作成
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
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 等で実際の名前を確認して操作する

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


Comment (0)

Navi: 1 | 2 | 3 | 4  >
-Home
-Column [124]
-Europe [9]
-Gadget [73]
-Web [120]
-Bike [3]

@/// BANGBOO BLOG ///