Docker Part5
■ このスレッドは過去ログ倉庫に格納されています
DockerはLinuxが持つコンテナ技術を使ったアプリケーション仮想化技術です。
アプリケーションを動かすために必要な各種ライブラリ等を一つのDockerイメージに
まとめることで、さまざまな環境へのデプロイが容易になります。
例えばWindowsやmacOSを使って開発・テストしたDockerイメージを
そのままクラウド上のLinuxの本番環境で使うことができます。
クラウド上の環境が仮想マシンであるため、Dockerは仮想マシンと併用して使うことが多いですが
仮想マシン技術とは無関係の技術です。実際Linux環境において仮想マシンは必須ではありません。
WindowsとmacOSでは仮想マシンを使いますが、これはOSがLinuxではないからです。
Dockerは主にアプリケーションを動かすために設計されているのでデータを保存するのには適していません。
データはDockerイメージの外部、ボリュームを使ってホスト環境に保存するかネットワーク通信で外部サーバーに保存します。
またDockerコンテナは一つのサービスを実行し、複数のサービスが必要な場合はdocker-composeやk8sなどを使って連携させます。
Dockerを仮想マシンの代替として、コンテナ内で複数のサービスを起動しようとすると困難が待ち受けています。
それはDockerの設計方針とあっていないからです。
Dockerイメージ(Dockerfile)はアプリケーション開発者が作成します
動かすのに必要なもの全てがDockerイメージに含まれるので
インフラ担当者はそれを動かすだけ、本来のインフラの作業に集中できるようになります
Dockerは主にウェブ業界でサービスのデプロイの必須技術になりました
情報共有しましょう
http://www.docker.io/
前スレ Docker Part4
https://mao.5ch.net/test/read.cgi/linux/1597591176/
注意 Dockerを仮想マシンの代替として使いたいと考えてる人は、DockerではなくLXCを使いましょう
LXC(Linux Containers)
https://mao.5ch.net/test/read.cgi/linux/1330826939/ >>66
これまで k8s -> dockershim -> docker api -> containerd となっていたのを k8s -> containerd にするっていう話なんだけど、
これのどこに podman が関連するか教えてくれない? >>67
docker要らなくなるな
じゃあpodmanでいいか >>67
その資料にはそうは書いてないな。
今まで:
k8s->dockershim->Dockerで動いていたけど、dockershimは廃止するよ
これから:
でも実はDockerは内部でcontainerdとして動いているから廃止後はk8s->containerdになるから安心だよ。
と言っていて、その背景の情報としてDockerはk8sとネットワークとかVolumeとかの機能が
被っていて邪魔、とかCRIとしてコンテナを動かす技術はdockershimのほかにCRIOやcontaienrd
があって、CRIOの人達は早くからpodman押してるよ、それは何故かと言うとk8sが求めていない余計な
機能は実装していないからだよ、と言っている。
だからこの文脈で>>51といえばそれが正しくて、>>50はお前何いってんの?としか思わない。
少なくとも>>50という感想には絶対にならない。 dockerを開発用に使ってる人
→今まで通り使い続けてOK。k8s上でdockerで作成されたコンテナは実行可能であり続ける。(コンテナのフォーマットは標準化されていて、dockerもそれに従っているから)
k8sのコンテナランタイムとしてdockerを使っている人
→cri-oかcontainerdに移行してください。
猶予は1年
って認識だけどこれでいいんだよね? >>69
まず、前半部分(安心だよ。まで)って何が言いたいんだい?
私が書いた内容を君の言葉で言い直しただけ?
だからこの文脈でって言うけど、話を飛ばしすぎなんだよなぁ
私は最初から昨日の話の流れで podman が出てくるのはおかしいでしょと言ってるだけなんだけど
dockershim が非推奨になります、だから podman に移行しましょうなんて話が公式からありましたか? https://qiita.com/kenkono/items/6221ad12670d1ae8b1dd
これのDockerfileの最後の行のADD . /code/には何の意味がありますか?
その手前でADD /code/してる気がするのですが
なぜ再度ADDする必要があるのでしょうか 個々のDockerfileの意味とか流石に作者に聞けとしか
よく使われるテクニックとかならわかるが dockerユーザーは初心者も多いからこんなもんでしょ
podmanは玄人ユーザーが多いからみんな「わかってる」けど >>74
なるほど
ためしに最後のADD . /code/の行を消してもbuildできてしまったので
どのような目的があったのだろうと疑問だったのですが
まだいまいちピンときていませんがありがとうございました >>71
もういいよ。
お前の脳味噌は相変わらず腐ってる。 >>78
最後のADD削ったら必要なものが入らないだろw
Dockerは上から一行ずつビルドしてるんだから
「最後の一行」を削っていって最終的に最初の一行だけになっても全部ビルドできる
別にこれでもビルドは正しく出来るんだよ
WORKDIR /code
ADD . /code/
RUN pip install -r requirements.txt
ただしこれだと、.(カレントディレクトリ)の内容が変わったときに
pip install -r requirements.txt という時間がかかる
パッケージのインストールを何度もすることになる
一般的に requirements.txt の内容が変わることは少なく
.(カレントディレクトリ)= ソースコードは変化しやすいので
記事の順番でやるとビルドに時間がかからなくなる
これはDockerを本来の目的=自社開発アプリのデプロイとして
使う場合によく使われるテクニック
開発中に何度もソースコードを修正してビルドするからね
他人が作ったアプリをただビルドするだけの人だとこうする理由がわからない >>80
>上から一行ずつビルドしてるんだから
>ただしこれだと、.(カレントディレクトリ)の内容が変わったときに
なるほど まだわからない部分はたくさんありますが
簡単な構成でdocker buildで試し比べてみました
stepそれぞれに(上から順々に依存している?)12文字のハッシュ値があって
最終stepの行がimage idになっているのをみてくしっくりきた感じがしました
ありがとうございました Mirantis to take over support of Kubernetes dockershim
https://www.mirantis.com/blog/mirantis-to-take-over-support-of-kubernetes-dockershim-2/
dockershimはKubernetesの外でメンテ継続するってよ
いずれにせよ独自のKubernetesディストリビューションを自分で作ってるユーザーにしか関係ない話だよねこれ
あるいはKubernetesのWorker Node上でdocker in docker使ってたりとかすれば関係あるけど そりゃ短絡的すぎる
開発ツールとしてのDockerは全く金になってないわけで、実行環境として使われなくなればDocker社は潰れる
まあいずれにせよバイアウトは時間の問題だろうけど、変なところに買われないといいね
MSあたりなら万々歳か ほんとそれだよな
dockershimっていう技術的1要素についてしか見れてない人はちと掘り下げが浅い dockerで作ったのって所有者がrootになってるけど
別にそのままでいいよね ALLOWED_HOSTSをコマンドから引数から書き換えられたらいいのに。。
せっかくdockerで自動で構築できてもそこだけ手動なのか
シェル書くしかないか allowed_hosts=aaa docker run ...
でいいじゃん >>90
settings.pyのALLOWED_HOSTSを切り替えてそれでやってみたけどだめだった Djangoをディージャンゴって音読してしまう癖を矯正するコツを思いついた
限りなくデをジに近づけてデェンゴって発音する ワンピース ねじまき島の冒険(同時収録:ジャンゴのダンスカーニバル)でも見ればいいんじゃないですかね? DockerHubってイメージじゃなくてDockerfileとかダウンロード出来ないの?
今使ってるイメージ微妙に不便なとこあるからPRしようと思ってるんだけどやり方がわからない… どっかにかいてあるだろ
Dockerfileは必須じゃないから
ないこともあるが >>92
いたずらハゲたかジャンゴってスーパーマリオ64にあったよな
>>94
GitHubへのリンクが無くて
探しても分からなかったら諦める >>84
こういうコメントって何なんだ?
薄気味悪い。 Docker 始めたばかりでよくわからないんだけど
docker-compose で複数プロジェクト起動したりするときってみんなどうしてるの?
数少なかったらコンソールから手入力でも行けそうだけど
プロジェクトとかオプションとか多くなるとしんどいですよね
シェルスクリプトとかでがんばるのかな >>99
複数プロジェクトって?
それぞれのプロジェクト?が連携してるのなら
一つのdocker-compose.ymlでやるけど プロジェクトは公式の単語だからドキュメント見てこい >>103
たとえば WordPress と BBS を運用するサーバがあったとして、
両者は連携させないのでそれぞれに docker-compose.yml を書くとするじゃないですか
それでフロントエンドに httpd を置いて、リバースプロキシで振り分けるとして
これも docker-compose.yml を書いて運用するとプロジェクトが3つになります
関連はするので全部まとめて一つにするのが正義かもしれませんが
密に関連するのと比較的疎になってる部分があるのをごちゃまぜにするのがはたしてよいのかどうか
で、こういう場合は大抵どうしてるのかなと思ったのです >>105
もう答え出てるよ?構成管理ツールを使えばいい
Dockerだからといって、急に昔ながらのやり方が変るわけじゃない
K8Sを使わないなら、Dockerなんてただのパッケージングツールでしかない
ビルドして、サーバーにリリースして、起動する
ほら、いつものやつだろ
だったら、いつものやつを使えばいい >>106
ありがとうございます
構成管理ツールを利用している人も多いということですね
検討してみます
K8S はクラスターとかで使うので 1 サーバで運用の場合は用途が違うのかと思ってました
こちらも勉強します 構成管理ツールはサービスを起動するための「構成」を作るだけなので
「サービス起動」自体は自分で書かないといけない
Dockerだからと身構える必要はない
PCを起動した時にサービスを自動起動するのはなにか?
今だとsystemdがよく使われている
systemdを使ってサービスを自動起動させる
その中身がdocker-composeになるだけの話 dockerコンテナ単体なら--restart=alwaysで出来るはずだから
docker-composeでもrestartオプションでなんとかなるんじゃね? オレオレスクリプトよりは良いんじゃないかな
systemdの規則に則って設定が書かれるから引き継ぎしやすいだろう DockerfileでRUN django-admin startproject mysite .するとエラーはでないけど何も作成されない
docker-compose runでやるとなぜか成功する linuxでdocker使うとvolumeでroot以外書き込みできなくなるのにハマるから面倒くさい
windowsで使ったときは天国だった 「イラストでわかるDockerとKubernetes」は完全に良書 - Cloud Penguins
https://b.hatena.ne.jp/entry/s/jaco.udcp.info/entry/2020/12/08/215058
↑
ブクマがすごい増えてるがこのスレの先輩方の意見も聞かせてください ちょろっと立ち読みしたけど概念解説本って感じ
手を動かす類のものではない M1 Mac買ったんだけど、プレビュー版のメールが来ない x86_64のイメージもいい感じにエミュレーションしてくれないのか M1のdockerはarmもx86_64も動くよ
x86_64はqemuかなにかのCPUエミュレーションを使うらしいから相当遅いようだけど
ttps://twitter.com/ogrisel/status/1339508321078939650
docker run --platform linux/amd64
のようにすればx86_64のイメージが動くらしい
ttps://twitter.com/akhenakh/status/1339582893375418379
https://twitter.com/5chan_nel (5ch newer account) docker-compose up -dでサーバを立ち上げたままストを再起動すると
WIndowsだと自動的に立ち上がりませんがUbuntuだと自動的に立ち上がりました。
この挙動の違いはなんか設定があるのでしょうか? >>126
>docker run --platform linux/amd64
>のようにすればx86_64のイメージが動くらしい
これってターミナルをロゼッタで
開くのが必要なやつかな?
https://i.imgur.com/XrDGxYc.jpg djangoのsqliteで日付ソートしたいとき
filterで__range=(start_date, end_date)ってやれば取得できたけど
この日付以降を取得したい、この日付までを取得したい
って場合はどうするの??
end_dateのとこを最新のにするとか
start_dateのとこを0年?にするとかで対応できそうだけど
別の方法はないのだろうか Windows 10 Home 版に、WSL2, Docker を入れた
OS の連続アップデートに、3時間掛かった。
CPU-i3, 8GB メモリを、CPU・電力エコモードで使っているから、コンパイルが遅いのかも
その後、WSL1 から、WSL2への変更。
Windows 10 Home用のDockerのインストール自体は、簡単だった
これで、Windows10 プロ版じゃなくても、Dockerを使える。
Kubernetes も入っていた 最新OSイメージをUSBに焼いてインスコすればアプデすぐ終わるよww とりあえず触ってみたいだけじゃないかな?
Linux用の他の物理PCが無いとか >>133
これって、普段Win使っててもDocker
使うときは別のLinux入ってるPC使わないの?っていう質問なの?
それとも、Docker使うのに何でLinuxじゃなくて、Win10home入れてるの?
ていうこと? >>135
後者
最初から全部Linuxだけでよかないか? ふだん使いにはWindowsのがいいから。
そんなんやからLinuxが普及しないんや。。。 >>1
windowsでffmpegのビルド環境をDockerで構築するのはベターな使い方では無いって感じなんですかね >>138
はい。ベターではありません。
Dockerはffmpegを作るものです。
その仮定でffmpegのビルド環境を作ることになるかもしれませんが
最終的に作るのはffmpegです。ビルド環境は途中の状態に過ぎません。
単体で配布できる動くffmpegバイナリがあれば嬉しいですよね?
Dockerはそれを実現するものです。 exeで配布したかったらLinux立ち上げるかwslでやれって事だな playwithdocker
プログラムは動くけどウェブサーバーだけ503になる?
コードミスったのかとおもったけど前に成功して改変してないやつがダメだし 今やったら復活してた
playwithdockerみたいな感じで試せるとこないかな
有料でも docker-composeでweb制作をしたいと思うのですが、
javascriptのeslintはホストとコンテナどっちにインストールするものなんでしょうか? ホストのファイルシステムをマウントして使うとファイルシステムの通知機能は使えないよね
nodeをコンテナから使うとホットリロードはポーリングでしか出来ない
Unisonみたいの使えばファイルシステムはLinuxのになるから
一応いけると思うけど・・・ 対応していれば使える
Windowsならできるやろ なんでWindowsは調べられてmacは調べられねーんだよw Docker Desktop for Windowsの3.0にアップデートしても大丈夫?
謎の不具合に遭遇したりしない?
昔、家でWSL2バックエンドで使ってたらアプデ後に起動できなくなった事があった
大したデータを入れてないのでリセットしたが、あんまり信用出来ないなと思った
Mac版は自分では使ってないが、メジャーアップデート後から奇妙な不具合が多数報告されてるのは知ってる
一応安定版リリースじゃないのか
Mac版は一応ダウングレード出来るようだ
会社ではWindowsでHyper-Vバックエンド Docker Desktop for Windowsの3.0でもHyper-Vバックエンド対応してるだろ?
WSL2バックエンドは、たぶん俺しか困らないだろうなってバグ
(カーネルの古いAPIの削除による仕様?)があって切り替えれないでいる
バグの内容を言うと、困る人は俺ぐらいだろうなって特定されかねないのでここでは言えないw >>155
カーネルAPIの互換性については弊社でも度々問題になりました。
古いディストリイメージを使う場合はHyper-Vバックエンドが安定しますね。 podmanもっと使ってくれよ
このままrocktみたいに消えるのやだよ 消えないのと普及しないのは違う
もっとRedHatが開発した独自ツールが普及するといいのに dockerエイリアスはpodmanなので自動的に広まるよ 本番クラスタはマネージドK8S
開発環境はDockerCompose
Podmanは…オンプレシングルノード本番専用? ■ このスレッドは過去ログ倉庫に格納されています