Linuxが持つコンテナ技術を使った、仮想マシン必要ないアプリケーション仮想化技術で
アプリケーションのデプロイが用意になります
Docker(アプリ仮想化)は仮想マシンと併用して使うことで最も効果を発揮し
開発・テストで使ったDockerイメージと全く同じものを本番環境で使えます
さらにWindowsとmacOSでも同じDockerイメージが動きます。
(Linuxは仮想マシンが不要ですが、WindowsとmacOSは仮想マシン技術を併用して実現しています。)
Dockerイメージ(Dockerfile)はアプリケーション開発者が作成します
動かすのに必要なもの全てがDockerイメージに含まれるので
インフラ担当者はそれを動かすだけ、本来のインフラの作業に集中できるようになります
Dockerは主にウェブ業界でサービスのデプロイの必須技術になりました
情報共有しましょう
http://www.docker.io/
前スレ
Docker Part3
https://mao.5ch.net/test/read.cgi/linux/1552023620/
注意 同じコンテナ技術を使うが異なるアプローチで仮想マシンの
代替を目指しているのがLXC。目的が全く異なるので注意
LXC(Linux Containers)
https://mao.5ch.net/test/read.cgi/linux/1330826939/
Docker Part4
■ このスレッドは過去ログ倉庫に格納されています
2020/08/17(月) 00:19:36.93ID:PKLBL3Xf
2020/10/17(土) 04:27:57.99ID:ZuG7iJvZ
>>570
dockerイメージ=プログラム(exeファイル)と考えればいいんだよ。
exeファイルの中に消えたらいけないデータを保存するかい?しないだろ?
つまり保存するデータはdockerイメージの外に保存するんだよ。
それがボリューム。ボリュームっていうのはdockerイメージを起動するときに割り当てる。
例えば任意のディレクトリをボリュームとして使うことができる。
exeファイルを実行するときにデータディレクトリを指定しているようなもんだ
こうやってdockerイメージの外のリソースを起動時に割り当てることで
dockerイメージ内部からはどこで動かしても同じように見えるようになるわけ
ちなみにデータと設定ファイル(アプリ実行中に保存しないもの)は別な。
設定ファイルはdockerイメージに埋め込んでいい(場合によっては外に出すこともある)
dockerイメージ=プログラム(exeファイル)と考えればいいんだよ。
exeファイルの中に消えたらいけないデータを保存するかい?しないだろ?
つまり保存するデータはdockerイメージの外に保存するんだよ。
それがボリューム。ボリュームっていうのはdockerイメージを起動するときに割り当てる。
例えば任意のディレクトリをボリュームとして使うことができる。
exeファイルを実行するときにデータディレクトリを指定しているようなもんだ
こうやってdockerイメージの外のリソースを起動時に割り当てることで
dockerイメージ内部からはどこで動かしても同じように見えるようになるわけ
ちなみにデータと設定ファイル(アプリ実行中に保存しないもの)は別な。
設定ファイルはdockerイメージに埋め込んでいい(場合によっては外に出すこともある)
2020/10/17(土) 04:58:28.34ID:o45tI0TJ
>>571
>dockerイメージ=プログラム(exeファイル)と
なるほどそういうことなんですね
>任意のディレクトリをボリュームとして使うことができる。
容量に余裕のあるHDDを指定して永続的に保存なんてこともできるのですね
アプリの設定を変えたあとその設定も他の環境でも共有したいとなると
イメージまるごと共有するか
クラウドに設定を保存するとか
ですかね
(chromeブラウザとかだとログインすればすぐ同期されていい感じなのですが)
ありがとうございました
>dockerイメージ=プログラム(exeファイル)と
なるほどそういうことなんですね
>任意のディレクトリをボリュームとして使うことができる。
容量に余裕のあるHDDを指定して永続的に保存なんてこともできるのですね
アプリの設定を変えたあとその設定も他の環境でも共有したいとなると
イメージまるごと共有するか
クラウドに設定を保存するとか
ですかね
(chromeブラウザとかだとログインすればすぐ同期されていい感じなのですが)
ありがとうございました
2020/10/17(土) 17:19:50.34
そんなゴリゴリに使い倒すつもりはないからホストPCのシステムディスクって250GB(SSD)もあれば十分だよね・・?
2020/10/17(土) 22:15:33.31ID:DLL24/S3
575login:Penguin
2020/10/24(土) 16:40:06.56ID:xxGzDPrd Docker Hub Image Retention Policy Delayed, Subscription Updates
https://www.docker.com/blog/docker-hub-image-retention-policy-delayed-and-subscription-updates/
Docker Hubのイメージ削除は2021年半ばまで延期するってよ・・・
リソース消費量ベースのサブスクリプションにどう対応したら良いかとか
そもそも現在のリソース消費量は?とかよく分からないからってフィードバックが寄せられたっぽい
https://www.docker.com/blog/docker-hub-image-retention-policy-delayed-and-subscription-updates/
Docker Hubのイメージ削除は2021年半ばまで延期するってよ・・・
リソース消費量ベースのサブスクリプションにどう対応したら良いかとか
そもそも現在のリソース消費量は?とかよく分からないからってフィードバックが寄せられたっぽい
2020/10/25(日) 11:54:59.14ID:8aW1oLHx
dockerhubの方針はよくわからないからgithubでいいや
2020/10/26(月) 01:04:34.96ID:AY57YqY6
imageを共有すること自体がないから
docker-compose.ymlの共有はするけど
docker-compose.ymlの共有はするけど
2020/10/26(月) 23:53:29.78ID:h3ceCoJ5
このご時世にvmみたいな使い方してしまった
はぁ
はぁ
2020/10/29(木) 03:10:38.44ID:PcZHu1+a
イメージ作成したときにダウンロードしてきたイメージはどこに保存されているの?
イメージ作成前後でボリュームのサイズ調べてもサイズが増減しない・・見間違えてるだけかな
イメージ作成前後でボリュームのサイズ調べてもサイズが増減しない・・見間違えてるだけかな
2020/10/29(木) 03:53:45.99ID:Hs3h4quA
最初にイメージの格納場所のサイズを設定するだろ。
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.rawとか。
docker system df -v
で確認。
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.rawとか。
docker system df -v
で確認。
581login:Penguin
2020/10/29(木) 14:00:29.61ID:rXwaKjQ8 Ready for pull rate limits? Docker outlines 'next chapter' as Google tells customers how to dodge subscriptions
https://www.theregister.com/2020/10/28/docker_pull_rate_limit_1_november/
The issue is worse for users of private GKE clusters since "all image pulls will be routed via a single NAT gateway".
Winser warned that "any service that relies on container images may be affected, including Cloud Build, Cloud Run, App Engine etc."
11月からNATゲートウェイ経由かつ匿名ユーザーだと
全くpull出来なくなる感じ?
ヤバくね?
https://www.theregister.com/2020/10/28/docker_pull_rate_limit_1_november/
The issue is worse for users of private GKE clusters since "all image pulls will be routed via a single NAT gateway".
Winser warned that "any service that relies on container images may be affected, including Cloud Build, Cloud Run, App Engine etc."
11月からNATゲートウェイ経由かつ匿名ユーザーだと
全くpull出来なくなる感じ?
ヤバくね?
2020/10/29(木) 18:00:59.00ID:jMkOFc/w
必要なイメージをプライベートレジストリに確保するだけ
2020/10/30(金) 21:51:31.58
https://labs.play-with-docker.com/
でボリュームのマウントがうまく行かない
$ cat test.txt
$ docker run -it -v /my/:/var/my ubuntu
コンテナの端末に入って/var/myに移動してもtest.txt無し
ローカルのPCでは成功したのになあ
でボリュームのマウントがうまく行かない
$ cat test.txt
$ docker run -it -v /my/:/var/my ubuntu
コンテナの端末に入って/var/myに移動してもtest.txt無し
ローカルのPCでは成功したのになあ
2020/10/30(金) 22:54:14.38
補足
test.txtはmyディレクトリに作ってある
test.txtはmyディレクトリに作ってある
2020/10/30(金) 22:56:41.22
たぶん/my/のパスが間違ってるってことだよね
ほんとは
/なんたら/かんたら/うんたら/my
ってパスなんだろうけど
ほんとは
/なんたら/かんたら/うんたら/my
ってパスなんだろうけど
586583
2020/10/30(金) 23:06:02.09 改めてやってみたら
/my:/var/my
じゃなく
/root/my:
でやったらできた!
/my:/var/my
じゃなく
/root/my:
でやったらできた!
2020/10/30(金) 23:57:29.93ID:dHpXX+dB
python使いたいだけなのに886MBって重くない?
2020/10/31(土) 00:15:50.02ID:Vfwi3dRZ
うそ!?私のPython 41.09MB!
589login:Penguin
2020/10/31(土) 09:33:06.67ID:4qiE9XbQ alpineベースのPythonは扱いが難しい
特にCライブラリを使うパッケージが必要なプログラムの場合、ソースからビルドされて遅かったり
alpineにコンパイル済みのがあってもバージョンが古かったり
たまにglibcとmuslの違いから起きる互換性の問題がある
alpineよりslimの方がオヌヌメ
alpineよりは大きいがまだ小さめ
特にCライブラリを使うパッケージが必要なプログラムの場合、ソースからビルドされて遅かったり
alpineにコンパイル済みのがあってもバージョンが古かったり
たまにglibcとmuslの違いから起きる互換性の問題がある
alpineよりslimの方がオヌヌメ
alpineよりは大きいがまだ小さめ
2020/10/31(土) 13:31:17.31ID:nDrTm0nA
python:3.7-slim
で-alpineとか-slimつけるだけでいけた�d
で-alpineとか-slimつけるだけでいけた�d
2020/10/31(土) 13:40:42.84ID:Vfwi3dRZ
つけるだけでいけたの前にdocker-hubくらい見ようよ
2020/10/31(土) 14:12:19.71ID:nDrTm0nA
ん dockerhubみたら
python:<version>-slim
って書いてあったよ
python:<version>-slim
って書いてあったよ
2020/10/31(土) 14:34:33.75ID:oeYVChnG
Docker Hubを見るのも当然だし、大元のDovkerfileを読もうよ。
594login:Penguin
2020/11/01(日) 17:44:44.70ID:M5iteKem 謎の現象に苦しんでいます。
CentOS 7で、yumでdockerを導入しました。
docker volume creteで、vol_etcと、vol_varを作成し、docker runのオプションで、次のようにボリュームを指定のディレクトリにマウントしました。
--mount source=vol_etc,target=/etc --mount source=vol_var,target=/var
このコンテナはimageから起動しているので、オリジナルの/etcと/varとが、それぞれボリュームにコピーされるはずです。
オリジナル/etcの内容は全てボリュームにコピーされたようです。
しかし、/varの一部のディレクトリの内容が、なぜかボリュームにコピーされません。
そのため、そのディレクトリの内容のみ空っぽになってしまいます。
(具体的には、/var/spool/hylafaxというディレクトリが空になります。/var/spool/の他のサブディレクトリについては中身がコピーされています。)
念の為、ボリュームをマウントせずにコンテナを起動すると、問題のディレクトリも中身が入っていることが確認されます。
原因として何が考えられるでしょうか。お手上げ状態です。
CentOS 7で、yumでdockerを導入しました。
docker volume creteで、vol_etcと、vol_varを作成し、docker runのオプションで、次のようにボリュームを指定のディレクトリにマウントしました。
--mount source=vol_etc,target=/etc --mount source=vol_var,target=/var
このコンテナはimageから起動しているので、オリジナルの/etcと/varとが、それぞれボリュームにコピーされるはずです。
オリジナル/etcの内容は全てボリュームにコピーされたようです。
しかし、/varの一部のディレクトリの内容が、なぜかボリュームにコピーされません。
そのため、そのディレクトリの内容のみ空っぽになってしまいます。
(具体的には、/var/spool/hylafaxというディレクトリが空になります。/var/spool/の他のサブディレクトリについては中身がコピーされています。)
念の為、ボリュームをマウントせずにコンテナを起動すると、問題のディレクトリも中身が入っていることが確認されます。
原因として何が考えられるでしょうか。お手上げ状態です。
2020/11/01(日) 17:56:10.61ID:M5iteKem
>>594
自己レスです。
オリジナルの/var/spool/hylafax 内に、pipeファイルがあります。
prw------- 1 uucp uucp 0 Sep 19 2018 FIFO
これが原因で、ボリュームにサブディレクトリも含めてコピーがされない可能性はあるでしょうか。
自己レスです。
オリジナルの/var/spool/hylafax 内に、pipeファイルがあります。
prw------- 1 uucp uucp 0 Sep 19 2018 FIFO
これが原因で、ボリュームにサブディレクトリも含めてコピーがされない可能性はあるでしょうか。
2020/11/01(日) 18:14:02.39ID:RPHXCdM8
pipeを削除したイメージを作ってやってみれば原因かどうかわかるんじゃないの
2020/11/01(日) 19:30:01.48ID:6Gl5tSwg
2020/11/01(日) 19:32:30.47ID:6Gl5tSwg
/etc や /var 以下の必要なものだけをマウントする場合はギリOKです。
そのDockerイメージは何の機能をコンテナ化したものですか?
その機能に必要なものだけをマウントしてください
そのDockerイメージは何の機能をコンテナ化したものですか?
その機能に必要なものだけをマウントしてください
2020/11/01(日) 19:33:45.60ID:6Gl5tSwg
ついでに言っておくと/etcや/varなんかをDockerコンテナに
割り当てたりなんかしたら最悪ホストシステムが破壊されます。
割り当てたりなんかしたら最悪ホストシステムが破壊されます。
2020/11/01(日) 19:41:34.60ID:lesnXEzs
アプリ屋くん今日も大暴走
2020/11/01(日) 20:10:35.55ID:w/PjhgBB
>>594
>― mount source=vol_etc,target=/etc --mount source=vol_var,target=/var
なんで、こうするのか、理解に苦しむわ…。
とくに、 /var をなぜVolumeにする?
意味がわからない。
>― mount source=vol_etc,target=/etc --mount source=vol_var,target=/var
なんで、こうするのか、理解に苦しむわ…。
とくに、 /var をなぜVolumeにする?
意味がわからない。
2020/11/02(月) 00:03:07.68ID:BCpQPJWu
Dockerを仮想マシンか何かだと思ってるんだろ
/etcや/varを共有してDockerコンテナの中で作業しようとしてる
/etcや/varを共有してDockerコンテナの中で作業しようとしてる
603login:Penguin
2020/11/02(月) 00:51:55.56ID:FrveCY20 仮想マシンでvar とかetcの共有なんてしないけどね。
2020/11/02(月) 00:55:50.11ID:BCpQPJWu
だから仮想マシンとしてログイン(?)して使いたいけど
/etcや/varを共有したいって思ったんでしょ?
アプリ専用コンテナとして考えれば
必要なものだけを共有するという発想になる
そんな広い範囲のディレクトリを参照するってことは
そのコンテナでいろんな作業をしたいってことだろう
/etcが見れればいろんなアプリ何も設定しなくても動くと勘違いしちゃうもんねw
/etcや/varを共有したいって思ったんでしょ?
アプリ専用コンテナとして考えれば
必要なものだけを共有するという発想になる
そんな広い範囲のディレクトリを参照するってことは
そのコンテナでいろんな作業をしたいってことだろう
/etcが見れればいろんなアプリ何も設定しなくても動くと勘違いしちゃうもんねw
2020/11/02(月) 01:02:37.86ID:4g2Afrsx
もうめちゃくちゃだなこいつ
質問者はホストと共有するなんて言ってねえし
質問者はホストと共有するなんて言ってねえし
2020/11/02(月) 01:14:54.26ID:BCpQPJWu
?
ボリュームってなんのことか知ってますか?
ボリュームってなんのことか知ってますか?
607login:Penguin
2020/11/02(月) 04:24:32.64ID:FrveCY20 >>594
Dockerのmountとかvolumeってのは、システムの可変の部分を定義することね。
/var/www/html 配下をマウントして、中身はプライベートなgithub/gitlabとかからpullするとか。
或いは/etc/nginx/conf.d配下だけをマウントして独自の定義ファイル置くとか。
例えホストと同等のゲストを作りたいと思ったとしてもホストのetcとゲスト(コンテナ)のetc全く別物w
/etc/とか/var/直下をゲストがマウントしたいとか、多分Dockerの作者も仰天の利用方法だと思うわ。
Dockerのmountとかvolumeってのは、システムの可変の部分を定義することね。
/var/www/html 配下をマウントして、中身はプライベートなgithub/gitlabとかからpullするとか。
或いは/etc/nginx/conf.d配下だけをマウントして独自の定義ファイル置くとか。
例えホストと同等のゲストを作りたいと思ったとしてもホストのetcとゲスト(コンテナ)のetc全く別物w
/etc/とか/var/直下をゲストがマウントしたいとか、多分Dockerの作者も仰天の利用方法だと思うわ。
2020/11/02(月) 08:57:26.54ID:EcOPmiOb
こいつvolumeとbind mountの区別ついてなさそうだな
2020/11/03(火) 16:30:43.03ID:6B3+AB0D
DOCKER_CONTENT_TRUSTって設定するべきでしょうか?
2020/11/03(火) 17:19:49.85ID:fVpH/w23
してもいいししなくてもいい
2020/11/03(火) 17:37:57.63
DockerfileでRUNするたびにdocker imagesの一覧が増えていくんだけどなんで
2020/11/03(火) 20:10:29.81ID:6B3+AB0D
>>610
設定しておくことにしました
設定しておくことにしました
613login:Penguin
2020/11/03(火) 20:55:06.23ID:ZfhIPw1B Use GitHub Actions to deploy your application to IBM Cloud Kubernetes Service
https://youtu.be/r5hyAmuNHyE
https://youtu.be/r5hyAmuNHyE
2020/11/03(火) 21:01:25.70ID:3zNCbq6k
2020/11/03(火) 21:13:57.95ID:SU13O3bL
>>601
使用するアプリが、/var/spool/app以下に設定ファイルをいろいろと自動作成するんですよ。
それから/var/spoolは、postfixも作業領域を持つので、
varまるごとボリューム化しておけば便利だと思いました。
使用するアプリが、/var/spool/app以下に設定ファイルをいろいろと自動作成するんですよ。
それから/var/spoolは、postfixも作業領域を持つので、
varまるごとボリューム化しておけば便利だと思いました。
2020/11/03(火) 21:15:55.55ID:SU13O3bL
2020/11/03(火) 21:17:53.87ID:SU13O3bL
2020/11/03(火) 21:18:50.16ID:SU13O3bL
2020/11/03(火) 21:20:18.59ID:SU13O3bL
2020/11/03(火) 21:23:58.03ID:SU13O3bL
コンテナをprivilegeで動作させて、sshログインできるように設定しました。
リモートでコンテナ内に入ってから、yumで必要なパッケージを導入して、
アプリ環境を整えました。その後、commitしてイメージに固めました。
/etcや、/var/spoolは、コンテナ内での作業内容が保存されるので、
永続化のためにボリュームに切り出しておきます。
こんな使い方便利すぎて、どこが悪い?
リモートでコンテナ内に入ってから、yumで必要なパッケージを導入して、
アプリ環境を整えました。その後、commitしてイメージに固めました。
/etcや、/var/spoolは、コンテナ内での作業内容が保存されるので、
永続化のためにボリュームに切り出しておきます。
こんな使い方便利すぎて、どこが悪い?
2020/11/03(火) 21:34:39.97ID:mxkbANnQ
そういう運用したいならLXCのほうがいいよ
2020/11/03(火) 22:16:22.40ID:M5SiUIu9
むしろVMの方が楽まである
623login:Penguin
2020/11/03(火) 23:10:38.94ID:SU13O3bL624login:Penguin
2020/11/03(火) 23:14:12.57ID:SU13O3bL >>621
CentOS7イメージだとprivilegeコンテナにすれば仮想マシンぽく運用できた。
でも、CentOS6イメージだとそういうわけには行かなかった。
こういう場合には、LXCというのを使うのが良いのかなと思っています。
CentOS7イメージだとprivilegeコンテナにすれば仮想マシンぽく運用できた。
でも、CentOS6イメージだとそういうわけには行かなかった。
こういう場合には、LXCというのを使うのが良いのかなと思っています。
2020/11/04(水) 00:26:19.21ID:5EaF6Elr
Dockerのマウント3種類についてわかったことをまとめる
https://qiita.com/y518gaku/items/456f34c317a65a9dae86
Volumes、bind mounts、tmpfs mounts について
https://qiita.com/y518gaku/items/456f34c317a65a9dae86
Volumes、bind mounts、tmpfs mounts について
626login:Penguin
2020/11/04(水) 00:46:11.05ID:8vCtX8KM ホストディレクトリをコンテナにマウントする場合も、Dockerボリュームを複数コンテナで共有する場合も、排他同時アクセス機能はないんでしょ?
それができたら、ファイルサーバ機能を別コンテナに切り分けたりできるのになあ。
それができたら、ファイルサーバ機能を別コンテナに切り分けたりできるのになあ。
2020/11/04(水) 01:03:12.04ID:8GrlF7V6
誰かDocker Certified Associate受けたことある人おらん?
英語あんまり自信ないんだが、問題文の英語どのくらいの難易度か教えて欲しい
英語あんまり自信ないんだが、問題文の英語どのくらいの難易度か教えて欲しい
628login:Penguin
2020/11/04(水) 01:10:20.49ID:7tuD0WTP >>620
便利なんだろうけどIaaCとは全然違うような?
メモリ、ストレージは節約できるだろうけどインフラの構築手順をコード化
して共有するという、コンテナ化の元の理念は死んでる気がする。
別に原理主義ではないけどな。属人化の部分が解消されない気はする。
便利なんだろうけどIaaCとは全然違うような?
メモリ、ストレージは節約できるだろうけどインフラの構築手順をコード化
して共有するという、コンテナ化の元の理念は死んでる気がする。
別に原理主義ではないけどな。属人化の部分が解消されない気はする。
629login:Penguin
2020/11/04(水) 01:23:13.41ID:aRkKqxcc Linuxのシェル変数$USERを
Dockerfileの中でのみ使う方法を教えてください
${USER}とか$USERでは取れませんでした
ARG USER=$USER
とか
ARG USER=${USER}
もだめでした
Dockerfileの中でのみ使う方法を教えてください
${USER}とか$USERでは取れませんでした
ARG USER=$USER
とか
ARG USER=${USER}
もだめでした
630login:Penguin
2020/11/04(水) 01:37:00.44ID:7tuD0WTP2020/11/04(水) 01:37:41.85ID:aRkKqxcc
>>630
ホスト側です
ホスト側です
632login:Penguin
2020/11/04(水) 01:46:40.22ID:7tuD0WTP2020/11/04(水) 03:46:47.92ID:QtKCHGIC
そういうこと。仮想マシンがあるのに
わざわざDockerでやる必要がない
わざわざDockerでやる必要がない
2020/11/04(水) 03:47:05.33ID:QtKCHGIC
DockerはDockerの目的にために利用するのがいい
2020/11/04(水) 03:57:36.50ID:UuvmniCF
でもDockerの方がGUI無い分軽いじゃん
636login:Penguin
2020/11/04(水) 04:10:56.90ID:7tuD0WTP >>620
あと、この使い方は最初の一発目位は良いけど、運用が進むとそのうちexportされたetcやvarに
依存するようになって、ホストAで動いていたものがホストBでpullすると動かないとか、
コンテナの最大のウリだった可搬性も消えてなくなる気がする。
・・・まあ、VMで運用してメモリ食うことが問題なら、メモリ増やすことが解決策であって
privilegeにしてシステム全体をリスクに晒してまでコンテナ化して解決しよう、というのは
ちょっと理解し難いな。
あと、この使い方は最初の一発目位は良いけど、運用が進むとそのうちexportされたetcやvarに
依存するようになって、ホストAで動いていたものがホストBでpullすると動かないとか、
コンテナの最大のウリだった可搬性も消えてなくなる気がする。
・・・まあ、VMで運用してメモリ食うことが問題なら、メモリ増やすことが解決策であって
privilegeにしてシステム全体をリスクに晒してまでコンテナ化して解決しよう、というのは
ちょっと理解し難いな。
2020/11/04(水) 08:25:33.86ID:8vCtX8KM
>>628
>インフラの構築手順をコード化して共有するという、コンテナ化の元の理念
コード化するということは、意図したとおりにエラーなく進行するかいわばデバッグが必要になると思う。
おっしゃるとおりそれを共有するなら一回のデバッグの努力に意義があるけど、
自分でコンテナとそのイメージを構築するだけなら、
sshログインしてコンテナ内で直接構築作業すれば楽に思う。
共有しない構築手順のコード作成は労力がめんどうくさくなる。
>インフラの構築手順をコード化して共有するという、コンテナ化の元の理念
コード化するということは、意図したとおりにエラーなく進行するかいわばデバッグが必要になると思う。
おっしゃるとおりそれを共有するなら一回のデバッグの努力に意義があるけど、
自分でコンテナとそのイメージを構築するだけなら、
sshログインしてコンテナ内で直接構築作業すれば楽に思う。
共有しない構築手順のコード作成は労力がめんどうくさくなる。
2020/11/04(水) 08:30:52.94ID:8vCtX8KM
>>636
>運用が進むとそのうちexportされたetcやvarに依存するようになって、ホストAで動いていたものがホストBでpullすると動かない
運用が進む前から、最初から、ボリュームに逃したetcやvarに依存しているよ。
もちろん、別のホストでコンテナを動作させるには、そのコンテナのイメージと、ボリューム内容、そしてrunするためのワンライナーが必要になる。
それでも、ホストマシンに直にシステム構築するよりもはるかに可搬性が高いと思う。
万人向けに共有する場合であればおっしゃるとおり、可搬性は悪いと言えると思うけどね。
コンテナを削除しても残り続けるボリュームという概念が存在するとは、
Dockerはボリュームに逃した内容(etc,varなど)に依存するコンテナがあっても仕方ないと考えているのではないかと思う。
>運用が進むとそのうちexportされたetcやvarに依存するようになって、ホストAで動いていたものがホストBでpullすると動かない
運用が進む前から、最初から、ボリュームに逃したetcやvarに依存しているよ。
もちろん、別のホストでコンテナを動作させるには、そのコンテナのイメージと、ボリューム内容、そしてrunするためのワンライナーが必要になる。
それでも、ホストマシンに直にシステム構築するよりもはるかに可搬性が高いと思う。
万人向けに共有する場合であればおっしゃるとおり、可搬性は悪いと言えると思うけどね。
コンテナを削除しても残り続けるボリュームという概念が存在するとは、
Dockerはボリュームに逃した内容(etc,varなど)に依存するコンテナがあっても仕方ないと考えているのではないかと思う。
2020/11/04(水) 08:33:48.04ID:8vCtX8KM
2020/11/04(水) 08:38:36.55ID:8vCtX8KM
641login:Penguin
2020/11/04(水) 09:25:01.57ID:1buxXrD8 IaC全くしてないレガシーなPHPのシステムをDocker+ECSに移行なら昔やった
でも、本番でバインドマウントしてるのはアップロードされたファイルだけだな
設定は環境変数から取得するようにして
アップロードされたファイルなど一部だけをバインドマウント経由でEFSに保存する
他は全てnginxやphpのイメージに予め入れておく
ログは標準出力経由で全てコンテナのログへ
DBは元から別サーバー
ローカル開発環境ではUnisonでphpファイルを同期
開発機のphp入ってるディレクトリを丸ごとマウントでも良いか、このシステムは肥大化してて遅いのでUnisonを使用
でも、本番でバインドマウントしてるのはアップロードされたファイルだけだな
設定は環境変数から取得するようにして
アップロードされたファイルなど一部だけをバインドマウント経由でEFSに保存する
他は全てnginxやphpのイメージに予め入れておく
ログは標準出力経由で全てコンテナのログへ
DBは元から別サーバー
ローカル開発環境ではUnisonでphpファイルを同期
開発機のphp入ってるディレクトリを丸ごとマウントでも良いか、このシステムは肥大化してて遅いのでUnisonを使用
2020/11/04(水) 09:29:46.18ID:sMNwaZ5l
俺は横着なのでDockerfileが構築手順書がわりになる方が便利
それがなけりゃlxc使う(かつては使ってた)
docker runも--rm付けて毎回クリーンに起動するのが性に合う
無論ログやdbファイルはボリュームで外部化するけど
それがなけりゃlxc使う(かつては使ってた)
docker runも--rm付けて毎回クリーンに起動するのが性に合う
無論ログやdbファイルはボリュームで外部化するけど
2020/11/04(水) 10:03:23.77ID:eFolKj+u
>>626
直接マウントするのはハードウェア1つにつきコンテナ1つだけ
マウントしてるコンテナが他のコンテナにサービスとしてファイルアクセスを提供する
排他制御とかもその1つのコンテナが全部引き受ける
直接マウントするのはハードウェア1つにつきコンテナ1つだけ
マウントしてるコンテナが他のコンテナにサービスとしてファイルアクセスを提供する
排他制御とかもその1つのコンテナが全部引き受ける
2020/11/04(水) 10:13:53.42ID:c69K63Cq
>>636
dockerに限らずIasCって必ずしもコストパフォーマンスがいいとも限らんからな
自動化の制御が複雑になるなら手作業で設定してコミットしちゃったほうが簡単だって考え方は十分ありだと思うよ
IasCに疲弊してる企業が、よくよく考えたら本当に欲しかったものはサーバーの状態をexp impする機能だった
dockerに限らずIasCって必ずしもコストパフォーマンスがいいとも限らんからな
自動化の制御が複雑になるなら手作業で設定してコミットしちゃったほうが簡単だって考え方は十分ありだと思うよ
IasCに疲弊してる企業が、よくよく考えたら本当に欲しかったものはサーバーの状態をexp impする機能だった
2020/11/04(水) 11:06:14.87ID:8vCtX8KM
>>643
ホストディレクトリをマウントしているコンテナが、
他のコンテナにサービスとしてファイルアクセスを提供するには、
XFSとか、Sambaとか、排他制御ができるというオンラインファイル共有サービスを公開するということですか。
なるほど、じゃあ、ボリュームをマウントしたコンテナが、
それらの共有サービスを公開すれば、他のコンテナでもボリューム内容を共有できますね。
ホストディレクトリをマウントしているコンテナが、
他のコンテナにサービスとしてファイルアクセスを提供するには、
XFSとか、Sambaとか、排他制御ができるというオンラインファイル共有サービスを公開するということですか。
なるほど、じゃあ、ボリュームをマウントしたコンテナが、
それらの共有サービスを公開すれば、他のコンテナでもボリューム内容を共有できますね。
2020/11/04(水) 11:10:18.58ID:8vCtX8KM
2020/11/04(水) 11:13:28.47ID:QtKCHGIC
2020/11/04(水) 11:14:58.00ID:QtKCHGIC
>>646
それはあなたの感想であって、意見や主張は何も含まれてないですね
それはあなたの感想であって、意見や主張は何も含まれてないですね
649login:Penguin
2020/11/04(水) 11:38:17.56ID:g/DLzKYE 最初からDocker前提で書いてればそんな難しくはない
レガシーなシステムを大量に抱えてたら大変
レガシーなシステムを大量に抱えてたら大変
650login:Penguin
2020/11/04(水) 12:24:20.61ID:8vCtX8KM >>647
でも、データベースの場合は、SQLコマンドのやり取りだけなので、データベースのデータファイルを直接オンラインストレージサービスで共有する必要はないよな。
排他制御を行うためにストレージサービス(XFS, samba)を使う場合は、ファイルレベルでの取り扱いが必要な場合だけだよね。
でも、データベースの場合は、SQLコマンドのやり取りだけなので、データベースのデータファイルを直接オンラインストレージサービスで共有する必要はないよな。
排他制御を行うためにストレージサービス(XFS, samba)を使う場合は、ファイルレベルでの取り扱いが必要な場合だけだよね。
2020/11/04(水) 12:25:28.53ID:mkPVUBW6
レガシーの移行はいっぺんにやろうとするな
VM、LXC、systemdコンテナ、Ansible、Chefなどを使って段階的に移行すべし
そもそもdockerに移行する意味があるのかはよく考えたほうがいい
VM、LXC、systemdコンテナ、Ansible、Chefなどを使って段階的に移行すべし
そもそもdockerに移行する意味があるのかはよく考えたほうがいい
652login:Penguin
2020/11/04(水) 12:31:03.62ID:8vCtX8KM >>647
でも、そもそもどうしてコンテナには1サービスしかおいたら駄目なのか?
例えば、名前解決させるのにdnsmasqデーモンが別途必要だとすると、これで複数サービスになってしまう。
アプリケーションという概念は、様々なサービスの組み合わせが本質だから、可搬性を考えても、それらをワンコンテナに組み込むのが自然だと思う。
即ち、データベースとwebサービスは同一コンテナにしてもよいでしょということになる。
でも、そもそもどうしてコンテナには1サービスしかおいたら駄目なのか?
例えば、名前解決させるのにdnsmasqデーモンが別途必要だとすると、これで複数サービスになってしまう。
アプリケーションという概念は、様々なサービスの組み合わせが本質だから、可搬性を考えても、それらをワンコンテナに組み込むのが自然だと思う。
即ち、データベースとwebサービスは同一コンテナにしてもよいでしょということになる。
653login:Penguin
2020/11/04(水) 12:34:52.88ID:8vCtX8KM2020/11/04(水) 12:38:00.10ID:3mo/cajL
2020/11/04(水) 12:41:03.59ID:5mpefc2R
>>652
その考え方で概ね正しいよ
好例としてGitlabのオフィシャルコンテナも1コンテナにすべてのサービスを詰め込んで1コンテナ:マルチサービスで動かしている
そして内部的な構成管理ツールとしてChefを使っている
これは1コンテナ:1プロセスという無意味なプラクティスには反するが現実として非常にうまくいってる
ただしこの構成だと特定のコンテキストやレイヤーを抜き出してそれだけスケールアウトするのが難しくなる
デメリットはせいぜいそれぐらいしかない
その考え方で概ね正しいよ
好例としてGitlabのオフィシャルコンテナも1コンテナにすべてのサービスを詰め込んで1コンテナ:マルチサービスで動かしている
そして内部的な構成管理ツールとしてChefを使っている
これは1コンテナ:1プロセスという無意味なプラクティスには反するが現実として非常にうまくいってる
ただしこの構成だと特定のコンテキストやレイヤーを抜き出してそれだけスケールアウトするのが難しくなる
デメリットはせいぜいそれぐらいしかない
2020/11/04(水) 12:45:25.28ID:3mo/cajL
よく言われるのは1プロセスじゃなく1サービスだろ
WebとDBで完結して1サービスと見なせるなら分ける必要ないよ
Webを複数にして負荷分散等する予定があるとか
DBをデータマート的に多目的に使う奈良分けた方が柔軟だろうが
WebとDBで完結して1サービスと見なせるなら分ける必要ないよ
Webを複数にして負荷分散等する予定があるとか
DBをデータマート的に多目的に使う奈良分けた方が柔軟だろうが
657login:Penguin
2020/11/04(水) 13:10:06.70ID:g/DLzKYE mysqlとかphpmyadminとか既存のDockerイメージあるじゃん?
なのにわざわざ苦労して手動インストールして
1つの複雑なDockerイメージにする理由がない
なのにわざわざ苦労して手動インストールして
1つの複雑なDockerイメージにする理由がない
2020/11/04(水) 13:26:36.97ID:QtKCHGIC
>>652
> 即ち、データベースとwebサービスは同一コンテナにしてもよいでしょということになる。
する理由がない
複数コンテナを結合できるのに、一体化させる理由がないんだよね
複数コンテナをつなげるのは簡単だが、一つになってるものは分離できない
> 即ち、データベースとwebサービスは同一コンテナにしてもよいでしょということになる。
する理由がない
複数コンテナを結合できるのに、一体化させる理由がないんだよね
複数コンテナをつなげるのは簡単だが、一つになってるものは分離できない
2020/11/04(水) 14:17:42.89ID:5mpefc2R
・複数のコンテナをオーケストレーションしないと使えないサービス
・コンテナ1個動かせばOKなサービス
どっちが楽なのかは自明だろ
・コンテナ1個動かせばOKなサービス
どっちが楽なのかは自明だろ
2020/11/04(水) 14:18:38.55ID:5mpefc2R
更に既存資産があれば作るのも楽々だ
わざわざ労力をかけてDockerfileに書き直す?
ハァト…無駄な努力
わざわざ労力をかけてDockerfileに書き直す?
ハァト…無駄な努力
661login:Penguin
2020/11/04(水) 14:21:20.57ID:1buxXrD8 >>659
docker -composeも使えない猿未満の方?
docker -composeも使えない猿未満の方?
662login:Penguin
2020/11/04(水) 14:31:08.78ID:1buxXrD8 DBは本番だと別サーバーな事も多い
メインのDockerイメージに含まれてても容量が大きくなって邪魔なだけ
DBは自分で用意するから余計なお節介はやめろ
DBだけAWS RDS使いたければ、
元から別コンテナだったら本番で構成に含めなければ済む話
なぜsupervisordとか使って複雑にする必要がある?
メインのDockerイメージに含まれてても容量が大きくなって邪魔なだけ
DBは自分で用意するから余計なお節介はやめろ
DBだけAWS RDS使いたければ、
元から別コンテナだったら本番で構成に含めなければ済む話
なぜsupervisordとか使って複雑にする必要がある?
2020/11/04(水) 16:03:30.21ID:ZKU6KPhr
流行ってるからでぇ〜すwww
たいがいこんなもんだろ
たいがいこんなもんだろ
2020/11/04(水) 17:44:02.78ID:5mpefc2R
>>661
なぜ使える使えないという個人のスキルの話に脱線するのか意味不明だよ君
dockercomposeを使わなくても簡単に動かせるならそちらのほうがいい
より簡単な方はどっちなのか?
答えは誰でもわかる、単一コンテナのほうが簡単
なぜ使える使えないという個人のスキルの話に脱線するのか意味不明だよ君
dockercomposeを使わなくても簡単に動かせるならそちらのほうがいい
より簡単な方はどっちなのか?
答えは誰でもわかる、単一コンテナのほうが簡単
2020/11/04(水) 17:46:32.48ID:5mpefc2R
2020/11/04(水) 17:49:51.64ID:YAhpIihL
2020/11/04(水) 17:50:49.68ID:YAhpIihL
>>665
分割したほうが再利用しやすいという話だ
分割したほうが再利用しやすいという話だ
2020/11/04(水) 17:54:01.59ID:5mpefc2R
>>666
いやいや
同じ機能が手に入るなら簡単であればあるほどいい
難しい構成が許されるのはそれに見合う目的が必要
つまりデフォルトは限りなくシンプルに簡単に
細かくチューンナップしたいなら難しい構成を許可する
という順番がある
最初から難しい構成を押し付けるのはクソ製品
いやいや
同じ機能が手に入るなら簡単であればあるほどいい
難しい構成が許されるのはそれに見合う目的が必要
つまりデフォルトは限りなくシンプルに簡単に
細かくチューンナップしたいなら難しい構成を許可する
という順番がある
最初から難しい構成を押し付けるのはクソ製品
2020/11/04(水) 17:55:15.65ID:YAhpIihL
> 同じ機能が手に入るなら簡単であればあるほどいい
自分で答え言っちゃってるわなw
「同じ機能が手に入らない」ので
言ってることが論理的ではない
自分で答え言っちゃってるわなw
「同じ機能が手に入らない」ので
言ってることが論理的ではない
2020/11/04(水) 17:57:50.83ID:5mpefc2R
>>667
そうとも限らない
Gitlabコンテナは世界中で再利用されている
再利用するのにまったく困ることがない
もし仮にGitlabコンテナを構成するサービスが別のコンテナになっていたらオーケストレーション構成を考えるのが面倒で再利用に余計な手間がかかってしまう
そうとも限らない
Gitlabコンテナは世界中で再利用されている
再利用するのにまったく困ることがない
もし仮にGitlabコンテナを構成するサービスが別のコンテナになっていたらオーケストレーション構成を考えるのが面倒で再利用に余計な手間がかかってしまう
2020/11/04(水) 17:59:06.99ID:YAhpIihL
× Gitlabコンテナは世界中で再利用されている
○ GitLabサービスは世界中で利用されている
一番簡単なのは GitLabサービスなのだ
○ GitLabサービスは世界中で利用されている
一番簡単なのは GitLabサービスなのだ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市総理「日米は非常に強い絆で結ばれた同盟国」 トランプ大統領の“中国は同盟国だった”発言受け [首都圏の虎★]
- 「暗い未来に子供を産みたくない…」それでも左派よりも右派の方が「たくさん子供を産む」のはなぜか【米研究】 [首都圏の虎★]
- 【野球】広島東洋カープの矢野雅哉・前川誠太選手を書類送検 ゾンビたばこを巡る容疑 広島県警 [Ailuropoda melanoleuca★]
- パナソニックが市販カーナビ生産終了へ 30年以上の歴史に幕、スマホナビの普及など受け [少考さん★]
- 【速報】 高市首相 「円の過小評価は問題だ」 ★4 [お断り★]
- 【野球】落合博満氏 ピッチクロック導入に「オレなんかは絶対ダメだった」「球場からしたら大打撃。飲み物の売り上げが減るじゃない」 [冬月記者★]
- 【悲報】トランプ、キンペーと11月に再会談へ [834922174]
- 女性「たのしいピクニック女は、男は好きでも女が見るとめっちゃ不安になる。生きる力がない女なのよ。それが分からないの?」 [592058334]
- 【高市悲報】ヤフーの雨雲レーダー見たらあと1時間ぐらいで印旛沼周辺が大雨予想になっててワロタw [616817505]
- ずっとダブパンでいいのに。👊😅👊🏡
- 最近のゲーム、全部つまらなくないか・・・?全然やりたいものがない・・・ [514851239]
- 連休特別企画