LXCを使った軽量仮想環境。
これからの動向が気になるところ。
情報共有しましょう。
http://www.docker.io/
前スレ
Docker
http://mao.2ch.net/test/read.cgi/linux/1374861492/
Docker Part2©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/09/28(木) 14:00:45.18ID:/4TtIqGt
2017/12/13(水) 16:46:00.16ID:4HtuxJmh
>>21
docker自体は日進月歩すぎるところがあるので、OSは枯れたモノを使うというのがベストプラクティス
fedoraでdocker運用するのって、fedoraのカーネル自体が不安定すぎて、コンテナ上げすぎると落ちたりするよ
docker自体は日進月歩すぎるところがあるので、OSは枯れたモノを使うというのがベストプラクティス
fedoraでdocker運用するのって、fedoraのカーネル自体が不安定すぎて、コンテナ上げすぎると落ちたりするよ
2017/12/13(水) 23:30:05.47ID:CbAdTCk+
>>21-22
枯れたOSでよく話が通じるな?
対応OS書いてあるんだから、それ使うだけじゃん
https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/
Artful 17.10 (Docker CE 17.11 Edge only)
Zesty 17.04
Xenial 16.04 (LTS)
Trusty 14.04 (LTS)
https://docs.docker.com/engine/installation/linux/docker-ce/debian/
Buster 10 (Docker CE 17.11 Edge only)
Stretch 9 (stable) / Raspbian Stretch
Jessie 8 (LTS) / Raspbian Jessie
Wheezy 7.7 (LTS)
https://docs.docker.com/engine/installation/linux/docker-ce/centos/
To install Docker CE, you need a maintained version of CentOS 7. Archived versions aren’t supported or tested.
https://docs.docker.com/engine/installation/linux/docker-ce/fedora/
25
26
https://docs.docker.com/engine/installation/linux/docker-ee/rhel/#prerequisites
To install Docker EE, you need the 64-bit version of Red Hat Enterprise Linux 7 running on an x86 hardware platform, or s390x (IBM Z) architecture.
Dockerの古いバージョンならもう少し古いディストリでも動くかもな
枯れたOSでよく話が通じるな?
対応OS書いてあるんだから、それ使うだけじゃん
https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/
Artful 17.10 (Docker CE 17.11 Edge only)
Zesty 17.04
Xenial 16.04 (LTS)
Trusty 14.04 (LTS)
https://docs.docker.com/engine/installation/linux/docker-ce/debian/
Buster 10 (Docker CE 17.11 Edge only)
Stretch 9 (stable) / Raspbian Stretch
Jessie 8 (LTS) / Raspbian Jessie
Wheezy 7.7 (LTS)
https://docs.docker.com/engine/installation/linux/docker-ce/centos/
To install Docker CE, you need a maintained version of CentOS 7. Archived versions aren’t supported or tested.
https://docs.docker.com/engine/installation/linux/docker-ce/fedora/
25
26
https://docs.docker.com/engine/installation/linux/docker-ee/rhel/#prerequisites
To install Docker EE, you need the 64-bit version of Red Hat Enterprise Linux 7 running on an x86 hardware platform, or s390x (IBM Z) architecture.
Dockerの古いバージョンならもう少し古いディストリでも動くかもな
2017/12/14(木) 02:05:22.37ID:j6ffG0Yu
俺、OpenSuseで使ってる変態。
2017/12/14(木) 09:58:33.91ID:RtRhmnJE
Redhat/CentOSはカーネル古いから新しいバージョンのdocker composeが使えないよ
2017/12/14(木) 13:39:44.17ID:A3qqyatV
2017/12/14(木) 16:57:21.98ID:c0bTjVEo
GUIいらないからホストOSも軽くて無駄がないalpineにするのが好き
ほとんど何もできないから逆に後腐れなく気軽に捨てて新しくできるし!
ほとんど何もできないから逆に後腐れなく気軽に捨てて新しくできるし!
2017/12/14(木) 18:00:17.09ID:mi3pWGl2
俺はホストにはfedora atomic使ってるぞ
2017/12/14(木) 19:26:56.48ID:xIrkk8hS
なんかlinuxがいいものになったかのような錯覚をおこすわ
2017/12/14(木) 22:49:08.96ID:j6ffG0Yu
coreosで使ってるっていう生粋のドッカーはいないのか?
2017/12/15(金) 00:48:35.66ID:1RLgszdT
CoreOSはもうねぇだろ
2017/12/15(金) 05:01:05.33ID:gXJiZmqG
coreOSってalpine以上に使いにくくて何が良いの?って感じなんだけど何か取り柄はあるのかね
2017/12/15(金) 10:47:11.13ID:pk6RU5gE
RancherOSが出たときコレは来るかと思ったがそうでもなかった
2017/12/15(金) 11:38:23.07ID:Goys0rX2
雨後の筍のようにポコポコ出てくるな
はやく収斂してくれ
はやく収斂してくれ
2017/12/15(金) 21:13:24.95ID:QXRMWfvA
そいつらがいずれ、どうにもつまらない理由で内輪もめを起こしてまとまらなくなり
あの機能はそちらにしかない、その機能はあちらにしかない、なんて状況となってる間に
OracleやMSに持っていかれる、というところまでがテンプレ
あの機能はそちらにしかない、その機能はあちらにしかない、なんて状況となってる間に
OracleやMSに持っていかれる、というところまでがテンプレ
2017/12/15(金) 22:20:10.00ID:7toohCc2
誰かが早く僕の考えた最強Linuxを発表しないとな。
え、それが乱立してるって?
え、それが乱立してるって?
2017/12/17(日) 02:54:12.57ID:fi9E8CtD
BargeっていうのがDockerホスト用で最軽量・高速ブートをうたってるけど
これVirtualBox専用でノートPCとかには直接インスコできないのかな?
更新頻度は高いみたいだから物理マシンでも動けば最強候補じゃないかコレ
これVirtualBox専用でノートPCとかには直接インスコできないのかな?
更新頻度は高いみたいだから物理マシンでも動けば最強候補じゃないかコレ
2017/12/17(日) 03:00:59.83ID:FdcUbRUW
それ完全にvagrant用では?
2017/12/18(月) 00:14:34.47ID:V88qic40
RaspberryPiで使えますみたいなことは書いてあるね
普通には使えないっぽいのは何か残念だな
普通には使えないっぽいのは何か残念だな
40login:Penguin
2017/12/18(月) 08:24:13.84ID:5bGVyFGG やっぱubuntu + kubernetesがいいのかな
2017/12/19(火) 12:43:18.15ID:Unb97h+7
これからはなんでもかんでもコンテナって時代になるのですかね?
自前でリポジトリをシコシコ築いてきたディストリベンダーも
もはややる意義を失っちゃったりするんですかね?
自前でリポジトリをシコシコ築いてきたディストリベンダーも
もはややる意義を失っちゃったりするんですかね?
2017/12/19(火) 15:47:37.58ID:mHmneXcK
未だにコンテナとchrootの違いが理解できない
2017/12/19(火) 18:27:38.96ID:JOmZ8i6e
chはchangeの頭文字から取っているから
rootの変更って意味だろう
コンテナはOS内にあるけど完全に独立しているから
例えばある家族の家の中で、
親がroot
子供がchroot
ホームスティしてきた外国人娘がコンテナだ
rootの変更って意味だろう
コンテナはOS内にあるけど完全に独立しているから
例えばある家族の家の中で、
親がroot
子供がchroot
ホームスティしてきた外国人娘がコンテナだ
2017/12/19(火) 21:21:37.08ID:qjPggouG
>>41
コンテナ使い出すと便利すぎてディストリあれこれこだわってたのが笑えてくるほどだね
そして指摘の通り、独自にバグ潰しとかやってる一番活発なリポジトリ持ってるところと
逆に古いツールを保守し続けてるところはもてはやされてるが、それ以外が意気消沈してる
二極化だな
コンテナ使い出すと便利すぎてディストリあれこれこだわってたのが笑えてくるほどだね
そして指摘の通り、独自にバグ潰しとかやってる一番活発なリポジトリ持ってるところと
逆に古いツールを保守し続けてるところはもてはやされてるが、それ以外が意気消沈してる
二極化だな
2017/12/19(火) 21:29:10.23ID:qsrDOXqO
リソースが集中するのはいいことではあると思う
2017/12/20(水) 01:46:37.73ID:W5Cyms8a
パッケージ管理ツールをLSB前提でpythonやperlで書いてたところは
それが原因でコンテナイメージのサイズをある一定以下に削減できなくてイーッてなってた
かと言ってパッケージマネージャーは各ディストリのシステムに根深く食い込んでるから
切り離そうにも切り離せない・・・最近じゃsystemdの呪縛もあるだろうし
でもまさかパッケージを単品ごとにインスコする日が来るとは誰も思ってなかったんだよな結局は
それが原因でコンテナイメージのサイズをある一定以下に削減できなくてイーッてなってた
かと言ってパッケージマネージャーは各ディストリのシステムに根深く食い込んでるから
切り離そうにも切り離せない・・・最近じゃsystemdの呪縛もあるだろうし
でもまさかパッケージを単品ごとにインスコする日が来るとは誰も思ってなかったんだよな結局は
2017/12/20(水) 08:11:34.55ID:XbCsAUuJ
コンテナってもっと早く登場しても良かった気がするんだが
技術的にはホスト型ハイパーバイザ型の仮想化よりも簡単なんじゃないの?
技術的にはホスト型ハイパーバイザ型の仮想化よりも簡単なんじゃないの?
2017/12/20(水) 09:16:28.83ID:G/qWb3nN
そりゃ日本での常識だな、
日本は金持ちだから高性能コンピューターが当たり前だけど
世界的にはようやく高性能コンピューターが普及してきた
ようやっとOS内にOSをおいても通常に使えるぐらいのPCが普及してきたんだ
日本は金持ちだから高性能コンピューターが当たり前だけど
世界的にはようやく高性能コンピューターが普及してきた
ようやっとOS内にOSをおいても通常に使えるぐらいのPCが普及してきたんだ
2017/12/20(水) 11:24:05.90ID:XXomYUaW
それはひょっとしてギャグで言ってんのか
2017/12/20(水) 15:46:11.75ID:ZRehS3G5
コンテナは昔からあっただろ
Linuxに来るのが遅かっただけで
Linuxに来るのが遅かっただけで
2017/12/21(木) 07:55:01.09ID:9tWXeT0T
user mode linuxはコンテナに入りますか?
2017/12/21(木) 20:10:57.04ID:K3jlwK7o
コンテナ内のプロセスがしんで終了しても自動でコンテナ再起動してくれるオプションがあった
コレ使えばわざわざプロセス死活監視用ツール起動しなくて良くなるのか
ちょっとスゴ杉ない?
コレ使えばわざわざプロセス死活監視用ツール起動しなくて良くなるのか
ちょっとスゴ杉ない?
2017/12/21(木) 20:41:31.20ID:dn2463i7
そんなもんsystemdに標準搭載されてる機能だろ
2017/12/24(日) 22:37:12.09ID:rLGBbeuy
dockerコンテナってホストOSのカーネル使ってるの?
どこもそう説明してるんだけど、ベースイメージにlinuxつかってその上にmysqlとか載せてイメージ化してるって認識だったんだが。
どこもそう説明してるんだけど、ベースイメージにlinuxつかってその上にmysqlとか載せてイメージ化してるって認識だったんだが。
2017/12/24(日) 22:40:54.12ID:BfGqUwPY
ホストのカーネルを使っているという説明で合っているよカーネルの上で動かすカーネルとかもうそれVMじゃん
2017/12/24(日) 22:58:36.30ID:rLGBbeuy
>>55
ありがと。
そうなるとwindowsだとdockerインストール出来るけど、エンジンとかに工夫してあるのか
ttps://www.slideshare.net/zembutsu/docker-images-containers-and-lifecycle
ここの19ページめに、ベースイメージにイメージ層を載っけていくて記載あるけど、
これは間違ってるの?
ありがと。
そうなるとwindowsだとdockerインストール出来るけど、エンジンとかに工夫してあるのか
ttps://www.slideshare.net/zembutsu/docker-images-containers-and-lifecycle
ここの19ページめに、ベースイメージにイメージ層を載っけていくて記載あるけど、
これは間違ってるの?
2017/12/24(日) 23:14:23.88ID:jQND+IMW
2017/12/24(日) 23:22:26.32ID:rLGBbeuy
>>57
https://github.com/docker-library/mysql/blob/6c414e7f38c2079c7193beae5dc7c34ee46cd6e7/8.0/Dockerfile
mysqlのdockerfileだと FROM debian:jessie ってあるけど、
これはどうなの??
何かこんがらがってきた。
sshで入れるし、やっぱ根底はlinux立ち上がってるのか?
https://github.com/docker-library/mysql/blob/6c414e7f38c2079c7193beae5dc7c34ee46cd6e7/8.0/Dockerfile
mysqlのdockerfileだと FROM debian:jessie ってあるけど、
これはどうなの??
何かこんがらがってきた。
sshで入れるし、やっぱ根底はlinux立ち上がってるのか?
2017/12/24(日) 23:52:48.02ID:FG7A/gM3
おい、素人同士で勝手に話をすすめるなw
>>55
> カーネルの上で動かすカーネルとかもうそれVMじゃん
VM=仮想マシン=マシン(ハードウェア)を仮想化してないならVMにはならない
>>54
> dockerコンテナってホストOSのカーネル使ってるの?
そもそもホストとかゲストとかいうものがない
Linuxっていうのはカーネル(https://www.kernel.org/ で配布しているやつ)に
DebianやらUbuntuやらRedhatなんかが、いろんなアプリをセットにして配布してる
カーネルは基本的に汎用。だから同じカーネルを使っても
DebianやCentOSなんていう別のディストリが作れる
さてパソコンにDebianをインストールしたとする。そこにはカーネルといろんなアプリが有るわけだが
Dockerで作ったDockerコンテナはこのうちカーネルだけを利用する。
例えばFROM debian:jessieであれば、debian:jessieのディスクイメージを使うと考える
そのディスクイメージにはもしかしたらカーネルのバイナリも含まれてるかもしれないがそれは使わない。
パソコンにインストールしてあるカーネル + FROMの元になったディスクイメージ を使ってアプリを動かす
そんなもんだから、Debianをインストールしていたとしても、UbuntuやCentOSのディスクイメージを使うこともできる
>>55
> カーネルの上で動かすカーネルとかもうそれVMじゃん
VM=仮想マシン=マシン(ハードウェア)を仮想化してないならVMにはならない
>>54
> dockerコンテナってホストOSのカーネル使ってるの?
そもそもホストとかゲストとかいうものがない
Linuxっていうのはカーネル(https://www.kernel.org/ で配布しているやつ)に
DebianやらUbuntuやらRedhatなんかが、いろんなアプリをセットにして配布してる
カーネルは基本的に汎用。だから同じカーネルを使っても
DebianやCentOSなんていう別のディストリが作れる
さてパソコンにDebianをインストールしたとする。そこにはカーネルといろんなアプリが有るわけだが
Dockerで作ったDockerコンテナはこのうちカーネルだけを利用する。
例えばFROM debian:jessieであれば、debian:jessieのディスクイメージを使うと考える
そのディスクイメージにはもしかしたらカーネルのバイナリも含まれてるかもしれないがそれは使わない。
パソコンにインストールしてあるカーネル + FROMの元になったディスクイメージ を使ってアプリを動かす
そんなもんだから、Debianをインストールしていたとしても、UbuntuやCentOSのディスクイメージを使うこともできる
2017/12/24(日) 23:57:01.81ID:FG7A/gM3
パソコンにインストールしたカーネルを使う。
そこで疑問になるかもしれない。
幾つものDockerコンテナが同じカーネルを使っているとしたら
psコマンドでプロセス見た時、他のコンテナのプロセスまで見えてしまわないのか?と
そこで出てくるのがLinuxカーネルに搭載されたコンテナ機能
この機能によって各コンテナは別々に隔離されることになる
同じカーネルを使っているというのに、それぞれ別々の環境を持っているようにみえる
ファイルシステム空間を分離したり、プロセス空間を分離したり、
メモリ空間を分離したり、ネットワーク空間を分離したり
ありとあらゆるものを分離して独立した環境を作り出している
それが大変な作業だった
そこで疑問になるかもしれない。
幾つものDockerコンテナが同じカーネルを使っているとしたら
psコマンドでプロセス見た時、他のコンテナのプロセスまで見えてしまわないのか?と
そこで出てくるのがLinuxカーネルに搭載されたコンテナ機能
この機能によって各コンテナは別々に隔離されることになる
同じカーネルを使っているというのに、それぞれ別々の環境を持っているようにみえる
ファイルシステム空間を分離したり、プロセス空間を分離したり、
メモリ空間を分離したり、ネットワーク空間を分離したり
ありとあらゆるものを分離して独立した環境を作り出している
それが大変な作業だった
2017/12/25(月) 00:07:51.54ID:132x0Uuj
さて、ここまではパソコンにインストールされたものがLinuxの場合だけど
WindowsやMacOSはどうなっているのか?
コンテナ機能っていうのはLinuxカーネルが持っている機能だが
WindowsやMacOSはLinuxではない。
どうやってLinuxのカーネルの機能を使っているのか?
答えを言ってしまえばあたり前のことだが、WindowsやMacOSでは
裏で仮想マシンが起動していてLinuxがインストールされている
ちょっと前までの、Docker Toolboxと呼ばれていた時代はVirtualBoxを使っていた。
今のDocker for Windows および Docker for Macでは
WindowsではWindows標準のHyperVを
MacOSではMacOS標準のHypervisor Frameworkを利用したHyperKitを使っている
仮想マシンを使っていると言ってもDockerに最適化されており
Windows もしくは MacOS のCUIからdockerコマンドを動かすとちゃんと
使えるように構成されており、まるでLinuxと同じようにOSの上に直接dockerが
起動しているようにみえる。だけど実際は仮想マシン上で動いているので
Dockerの設定画面にはメモリをどれだけ仮想マシンに割り当てるかなどという設定が存在する
WindowsやMacOSはどうなっているのか?
コンテナ機能っていうのはLinuxカーネルが持っている機能だが
WindowsやMacOSはLinuxではない。
どうやってLinuxのカーネルの機能を使っているのか?
答えを言ってしまえばあたり前のことだが、WindowsやMacOSでは
裏で仮想マシンが起動していてLinuxがインストールされている
ちょっと前までの、Docker Toolboxと呼ばれていた時代はVirtualBoxを使っていた。
今のDocker for Windows および Docker for Macでは
WindowsではWindows標準のHyperVを
MacOSではMacOS標準のHypervisor Frameworkを利用したHyperKitを使っている
仮想マシンを使っていると言ってもDockerに最適化されており
Windows もしくは MacOS のCUIからdockerコマンドを動かすとちゃんと
使えるように構成されており、まるでLinuxと同じようにOSの上に直接dockerが
起動しているようにみえる。だけど実際は仮想マシン上で動いているので
Dockerの設定画面にはメモリをどれだけ仮想マシンに割り当てるかなどという設定が存在する
2017/12/25(月) 00:11:59.89ID:132x0Uuj
余談だがWindows 10ではWSLという仕組みによって
LinuxカーネルをNTカーネルでエミュレートしている
今ではLinuxカーネルを使っていないのにUbuntuが
Windows上で動作するようになっている。
もしこのWSLがコンテナ機能までエミュレートする完璧なものになったら
その時はWindowsでHyperVを使わずにDockerが動くようになるだろう
LinuxカーネルをNTカーネルでエミュレートしている
今ではLinuxカーネルを使っていないのにUbuntuが
Windows上で動作するようになっている。
もしこのWSLがコンテナ機能までエミュレートする完璧なものになったら
その時はWindowsでHyperVを使わずにDockerが動くようになるだろう
2017/12/25(月) 11:30:09.88ID:+uvKLng+
2017/12/25(月) 15:39:08.55ID:h9oxS0er
>もしこのWSLがコンテナ機能までエミュレートする完璧なものになったら
なるのかね?
最近MSがLinuxに擦り寄ってて気持ち悪い
なるのかね?
最近MSがLinuxに擦り寄ってて気持ち悪い
2017/12/25(月) 23:01:24.32ID:gZwRVfZh
>>62
帰ってきたらすごい丁寧なレス来てたっ
ありがとうございます
> 例えばFROM debian:jessieであれば、debian:jessieのディスクイメージを使うと考える
> そのディスクイメージにはもしかしたらカーネルのバイナリも含まれてるかもしれないがそれは使わない。
ttps://github.com/aws/amazon-linux-docker-images/blob/10641478ad16c6f44b691dc41acfc221c7a7594f/Dockerfile
たしかにamazon linuxの中見ると、コマンドとかは設置してるけど/boot のカーネルとかは置いてなかったわ
windows, macも結局裏では仮想化されてたのね
色々わからなかった所が一遍にわかったわ!
帰ってきたらすごい丁寧なレス来てたっ
ありがとうございます
> 例えばFROM debian:jessieであれば、debian:jessieのディスクイメージを使うと考える
> そのディスクイメージにはもしかしたらカーネルのバイナリも含まれてるかもしれないがそれは使わない。
ttps://github.com/aws/amazon-linux-docker-images/blob/10641478ad16c6f44b691dc41acfc221c7a7594f/Dockerfile
たしかにamazon linuxの中見ると、コマンドとかは設置してるけど/boot のカーネルとかは置いてなかったわ
windows, macも結局裏では仮想化されてたのね
色々わからなかった所が一遍にわかったわ!
2017/12/26(火) 01:41:07.93ID:SZApAg+E
>>59-62
これは永久保存レベル
Github上のissueでもWSLだけでLinuxコンテナ動かしたいって要望はかなり挙げられてて
MSスタッフからみんなの期待は認識してますってレスも付いてた
もしホントに実現したら世界が変わる!みたいな投稿もあって大げさだけどちょっと同意しちゃう
これは永久保存レベル
Github上のissueでもWSLだけでLinuxコンテナ動かしたいって要望はかなり挙げられてて
MSスタッフからみんなの期待は認識してますってレスも付いてた
もしホントに実現したら世界が変わる!みたいな投稿もあって大げさだけどちょっと同意しちゃう
2017/12/26(火) 03:02:30.31ID:+n8uGZb5
>>59-62を書いた本人だけど、なんでこんなに喜ばれてるんだろう?w
WindowsやMacOSでDocker使ってる人にとっては常識だと思ったんだけどね
最近MacOSでDocker使ってる人なのかな?
昔はVirtualBoxのインストールが必要だし
今もWindowsならHyperVの有効化が必要
仮想マシンが使われてるのはすぐにわかると思ったんだけど
あと仮想化という言い方は良くない
色んな意味の仮想化があるから
WindowsやMacOSでDocker使ってる人にとっては常識だと思ったんだけどね
最近MacOSでDocker使ってる人なのかな?
昔はVirtualBoxのインストールが必要だし
今もWindowsならHyperVの有効化が必要
仮想マシンが使われてるのはすぐにわかると思ったんだけど
あと仮想化という言い方は良くない
色んな意味の仮想化があるから
2017/12/26(火) 03:07:47.91ID:+n8uGZb5
WindowsやMacOSで使った時のDockerのボリュームって謎だよね
例えばWindowsでdockerコマンド使った時、Windowsのディレクトリを
ボリュームとして指定すれば、dockerコンテナの中から見える
Linuxでは当たり前の動作だけど、WindowsやMacOSでは仮想マシンで
dockerが動いてるのだから、単純に考えれば仮想マシンの中にボリュームができるはず
まあホストOSのディレクトリを仮想マシンのディレクトリにマッピングしてるんだろうけど
Docker for WindowsやDocker for Macではそういうことを感じさせない作りになってる
例えばWindowsでdockerコマンド使った時、Windowsのディレクトリを
ボリュームとして指定すれば、dockerコンテナの中から見える
Linuxでは当たり前の動作だけど、WindowsやMacOSでは仮想マシンで
dockerが動いてるのだから、単純に考えれば仮想マシンの中にボリュームができるはず
まあホストOSのディレクトリを仮想マシンのディレクトリにマッピングしてるんだろうけど
Docker for WindowsやDocker for Macではそういうことを感じさせない作りになってる
2017/12/26(火) 10:06:07.39ID:4aRFRiu5
vagrant入れて色々弄ってた後にdockerやったから全然気付かなかった
職場macで家はwindowsで、両方vagrant入れてたしね
ネットで調べても、その手の情報全然見なかったよ
本読んで勉強しろって話なのかな?
職場macで家はwindowsで、両方vagrant入れてたしね
ネットで調べても、その手の情報全然見なかったよ
本読んで勉強しろって話なのかな?
2017/12/26(火) 11:22:56.05ID:pkkjJJya
2017/12/26(火) 12:31:53.02ID:KRPyxQju
俺も最近、Docker for Windows入れてみてたばかりなんで、HyperVが必要な理由とかが分かって参考になった
2017/12/26(火) 23:42:23.56ID:+n8uGZb5
> ネットで調べても、その手の情報全然見なかったよ
> 本読んで勉強しろって話なのかな?
そうなんか? じゃあなんで俺知ってるんだろう?w
もう3年ぐらい前から触ってるからなぁ。当時はWindows使っていたし(今はMacOS)
まあ普通DockerってLinuxで使うもんな。Dockerの解説といったら普通Linux上の話だし
WindowsやMacOSでどうやって使えるようにしているのかまでは関係ないか
じゃあおまけでもう少し仕組みの話を。
> 本読んで勉強しろって話なのかな?
そうなんか? じゃあなんで俺知ってるんだろう?w
もう3年ぐらい前から触ってるからなぁ。当時はWindows使っていたし(今はMacOS)
まあ普通DockerってLinuxで使うもんな。Dockerの解説といったら普通Linux上の話だし
WindowsやMacOSでどうやって使えるようにしているのかまでは関係ないか
じゃあおまけでもう少し仕組みの話を。
2017/12/26(火) 23:58:14.94ID:+n8uGZb5
Dockerっていうのはクライアント・サーバー型の設計になってる
つまり通常端末から実行しているdockerコマンドとサービスとして実行する
dockerサーバーが存在する(紛らわしいことにどちらもdockerコマンド)
サーバーの方のdockerは説明したとおりWindowsやMacOSでは仮想マシンなしには動かない
だけどクライアントはWindowsやMacOSでも動く
(dockerはgoで作られておりマルチプラットフォームになってる)
クライアントーサーバー型ということは、ようするにdockerサーバーを
リモートのLinuxで動かしていて、手元のWindowsでdockerコマンドを叩いて
接続するということができる。ちなみにdocker buildを実行すると手元のDockerfileやDockerfileと
同じディレクトリにあるファイルを全てリモートに送信してDockerイメージをビルドしている
(なので手元にごみファイルがあると遅くなるよ = dockerignoreの話につながるが省略)
使い方の一つとしてあちこちのLinuxサーバーでDockerサービスが動いていて
手元から接続先を切り替えて操作するというものがある
この時に使うのがdocker-machineで環境変数DOCKER_HOSTなどを管理する機能がある
Linuxでローカルのdockerサーバーに接続するときはsocket経由で接続するんだが
Docker Toolboxの時代ではTCPで接続するためにWindowsやMacOSXではdocker-machineが必要だった
でも最新のDocker for WindowsやDocker for Macではdocker-machineが必要なくなっている
どういう仕組みになってるんだろうね?w
少し前の手順を見るとdocker-machineがでてくると思うがローカルのDockerに接続するだけなら忘れていい
今はWindowsでもMacOSでも、ローカルのDockerに接続するときはTCP通信を使っていない(はず)だけど
WSL(Linux用Dockerサーバーは動かない)環境から、dockerクライアントのLinux用バイナリを使って
HyperV上で動いているDockerサーバーに接続するときは、TCPでつなぐ必要がある。その時に必要になるのが
「Expose daemon on tcp://localhost:2375 without TLS」というやつ。詳しくはぐぐってくれ
もう一つ思い出したが、Docker for WindowsはHyperVで動いているのでVirtualbBoxとは同居できない
vagrantを使うのならVagrant+VirtualBoxではなくVagrant+HyperVで使う必要がある
つまり通常端末から実行しているdockerコマンドとサービスとして実行する
dockerサーバーが存在する(紛らわしいことにどちらもdockerコマンド)
サーバーの方のdockerは説明したとおりWindowsやMacOSでは仮想マシンなしには動かない
だけどクライアントはWindowsやMacOSでも動く
(dockerはgoで作られておりマルチプラットフォームになってる)
クライアントーサーバー型ということは、ようするにdockerサーバーを
リモートのLinuxで動かしていて、手元のWindowsでdockerコマンドを叩いて
接続するということができる。ちなみにdocker buildを実行すると手元のDockerfileやDockerfileと
同じディレクトリにあるファイルを全てリモートに送信してDockerイメージをビルドしている
(なので手元にごみファイルがあると遅くなるよ = dockerignoreの話につながるが省略)
使い方の一つとしてあちこちのLinuxサーバーでDockerサービスが動いていて
手元から接続先を切り替えて操作するというものがある
この時に使うのがdocker-machineで環境変数DOCKER_HOSTなどを管理する機能がある
Linuxでローカルのdockerサーバーに接続するときはsocket経由で接続するんだが
Docker Toolboxの時代ではTCPで接続するためにWindowsやMacOSXではdocker-machineが必要だった
でも最新のDocker for WindowsやDocker for Macではdocker-machineが必要なくなっている
どういう仕組みになってるんだろうね?w
少し前の手順を見るとdocker-machineがでてくると思うがローカルのDockerに接続するだけなら忘れていい
今はWindowsでもMacOSでも、ローカルのDockerに接続するときはTCP通信を使っていない(はず)だけど
WSL(Linux用Dockerサーバーは動かない)環境から、dockerクライアントのLinux用バイナリを使って
HyperV上で動いているDockerサーバーに接続するときは、TCPでつなぐ必要がある。その時に必要になるのが
「Expose daemon on tcp://localhost:2375 without TLS」というやつ。詳しくはぐぐってくれ
もう一つ思い出したが、Docker for WindowsはHyperVで動いているのでVirtualbBoxとは同居できない
vagrantを使うのならVagrant+VirtualBoxではなくVagrant+HyperVで使う必要がある
2017/12/28(木) 15:12:36.60ID:LWC+fC47
2017/12/28(木) 17:00:45.45ID:+qKarqEU
dockerとkubernetes使いこなせないと時代遅れになるぞって言われたけど
一般の開発者がkubernetesを必要とするシーンってどのくらいあるのかな
dockerは問答無用で便利だけど
一般の開発者がkubernetesを必要とするシーンってどのくらいあるのかな
dockerは問答無用で便利だけど
2017/12/28(木) 23:05:22.59ID:BIGMxhMF
dockerとkubernetesの間にクラウド(aws、gcp等)があるね
クラウドを使わなければkubernetesはでてこないだろう
ローカルでのサービス開発用途であればdocker-composeで十分だし
kubernetesはなんかクラウドの上でクラウドを作ってる感じで、
将来的には、いろんなクラウド会社の共通インターフェースに
なるんじゃないかって思ってるけど、今は各社のクラウドのサービスに
kubernetesが対応しきれない感じ。だって自社のGCPすら完璧にコントロールできないもの
例えばオートスケールしたいならkubernetesを使わないで直接クラウドの
機能のオートスケールとかした方がいいんじゃないかな
なぜならkubernetesの場合コンテナのオートスケールになるわけだけど
起動しているVMの中でコンテナをオートスケールするだけなので
VMの数もオートスケールしないとコストは下げられないから
kubernetesを使っても頑張ればコストを下げられるオートスケールは
実現できるんだろうけど、コンテナとVMの二重のオートスケールが実行されて
少数のコンテナだと多分不安定になりそう。何十台レベルで常時コンテナが
起動してる状態じゃないと安定させられないんじゃないかな?
それが将来はコンテナのオートスケール = VMのオートスケールになるんじゃないかって思ってる
で最終的にはVMを使う=裏で勝手にkubernetesが動いてる時代になるんじゃないかな
そうなってくるとkubernetesは確かに必須。だけど意識しない状態になってると思う
でも個人的にはkubernetesの方向じゃなくて、クラウド自体がコンテナに
直接対応してくれる方を望んでるけどw(例えばGCEは起動するコンテナをデプロイできるようになった)
kubernetesはバージョンが勝手にアップグレードする(GCPの場合)ことを考慮しないといけないのと
kubernetesを動かすだけで各VMで1.5GB以上のメモリを使用するのが気に入らない
クラウドを使わなければkubernetesはでてこないだろう
ローカルでのサービス開発用途であればdocker-composeで十分だし
kubernetesはなんかクラウドの上でクラウドを作ってる感じで、
将来的には、いろんなクラウド会社の共通インターフェースに
なるんじゃないかって思ってるけど、今は各社のクラウドのサービスに
kubernetesが対応しきれない感じ。だって自社のGCPすら完璧にコントロールできないもの
例えばオートスケールしたいならkubernetesを使わないで直接クラウドの
機能のオートスケールとかした方がいいんじゃないかな
なぜならkubernetesの場合コンテナのオートスケールになるわけだけど
起動しているVMの中でコンテナをオートスケールするだけなので
VMの数もオートスケールしないとコストは下げられないから
kubernetesを使っても頑張ればコストを下げられるオートスケールは
実現できるんだろうけど、コンテナとVMの二重のオートスケールが実行されて
少数のコンテナだと多分不安定になりそう。何十台レベルで常時コンテナが
起動してる状態じゃないと安定させられないんじゃないかな?
それが将来はコンテナのオートスケール = VMのオートスケールになるんじゃないかって思ってる
で最終的にはVMを使う=裏で勝手にkubernetesが動いてる時代になるんじゃないかな
そうなってくるとkubernetesは確かに必須。だけど意識しない状態になってると思う
でも個人的にはkubernetesの方向じゃなくて、クラウド自体がコンテナに
直接対応してくれる方を望んでるけどw(例えばGCEは起動するコンテナをデプロイできるようになった)
kubernetesはバージョンが勝手にアップグレードする(GCPの場合)ことを考慮しないといけないのと
kubernetesを動かすだけで各VMで1.5GB以上のメモリを使用するのが気に入らない
77login:Penguin
2017/12/29(金) 12:41:26.85ID:S/CsVkMC 誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
PTHNS6LLYQ
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
PTHNS6LLYQ
2017/12/30(土) 19:21:43.13ID:kIwYFCo/
kubernetesはほぼ全部の業界大手が参画してるけど
そんでもコケるってことあるんかな
いやまぁ莫大な金が動くインフラ業界だからねぇ
そんでもコケるってことあるんかな
いやまぁ莫大な金が動くインフラ業界だからねぇ
2017/12/30(土) 21:07:01.76ID:/wpJUWvV
Docker swarmが本命じゃないの?
2017/12/30(土) 23:02:49.87ID:R3GCT2Hw
>>79
もうフェードアウトフェーズだよw
DockerもついにKubernetesをネイティブでサポート、Swarmの併用も可能
http://jp.techcrunch.com/2017/10/19/20171017docker-gives-into-invevitable-and-offers-native-kubernetes-support/
しばらくはswarmでもできる!とかやるだろうけど
次第にフェードアウト
もうフェードアウトフェーズだよw
DockerもついにKubernetesをネイティブでサポート、Swarmの併用も可能
http://jp.techcrunch.com/2017/10/19/20171017docker-gives-into-invevitable-and-offers-native-kubernetes-support/
しばらくはswarmでもできる!とかやるだろうけど
次第にフェードアウト
2017/12/30(土) 23:41:06.85ID:4E+qMbRD
小規模ではdocker-compose一択って事でおk?
2017/12/31(日) 03:26:38.05ID:AHTq9Vf1
小規模っていうか、1台のマシンの場合って考えてるよ
開発用メインでdocker runのオプションを指定するのが
面倒になった時w
開発用メインでdocker runのオプションを指定するのが
面倒になった時w
83login:Penguin
2018/01/18(木) 10:27:56.69ID:edyLm1wn Docker toolboxの最新版(18.01.0-ce)を入れたら何故かdockerのデーモンに接続できなくなったけど
VirtualBoxのGUIから仮想マシンを止めたら直った
docker-machine restartは効果がなかった
VirtualBoxのGUIから仮想マシンを止めたら直った
docker-machine restartは効果がなかった
2018/01/18(木) 17:40:21.34ID:G+DL28hG
なんでvirtualbox?
2018/01/18(木) 18:22:49.70ID:HcoLdHLc
Docker toolboxってwin/mac上にlinux走らせてその上で更にdockerしてるからね
86login:Penguin
2018/01/18(木) 21:17:36.99ID:ZKzLgYJR いつの話?
2018/01/18(木) 23:21:47.35ID:oYgm6+gm
誰もがWindows Proを使えるわけじゃないからなぁ
VirtualboxベースのDocker toolboxはまだ必要意義は大きい
VirtualboxベースのDocker toolboxはまだ必要意義は大きい
2018/01/30(火) 15:24:33.94ID:qZpjgluz
Hyper-VはProfessional以上必須なのか。
リモートデスクトップサーバ使いたいから、"わざわざ"Professionalのライセンス
にしてるけど、Docker for Windows (Hyper-V)を使うために必要ってのは微妙。
リモートデスクトップサーバ使いたいから、"わざわざ"Professionalのライセンス
にしてるけど、Docker for Windows (Hyper-V)を使うために必要ってのは微妙。
2018/01/30(火) 16:34:53.53ID:VSfpjLUl
Docker使ってるとKubernetesしたくなってきてKubernetes on Atomic Host on Hyper-Vとか組みたくなるしへーきへーき
2018/01/31(水) 02:46:07.43ID:Y/TJiD1T
>>88
そういう人のためにDocker Toolboxというのがある
そういう人のためにDocker Toolboxというのがある
2018/02/01(木) 04:43:55.93ID:oMuXW2h/
coreOSがRedHatに買収された
2018/02/02(金) 08:59:37.20ID:yFWv8+qQ
CoreOSはDocker利用を想定してたけどコレジャナイ残念OSだったので次はRancherOSあたりに期待してる
2018/02/03(土) 13:01:31.67ID:3HQCIEUi
>>91
ヤフーの記事が、港のコンテナヤードの画像使ってて混乱したわw
ヤフーの記事が、港のコンテナヤードの画像使ってて混乱したわw
2018/02/03(土) 15:14:06.84ID:TzIPoha8
クジラの方のコンテナって言えば通じる
2018/02/05(月) 13:34:29.22ID:k5aVtYPL
コンテナをビルドするとき Dockerfile 内で
RUN yum list
した結果を、ホスト側に残したいんだけど、なんか良い方法ないかな?
RUN yum list
した結果を、ホスト側に残したいんだけど、なんか良い方法ないかな?
2018/02/07(水) 01:28:24.21ID:G933ziiv
>>95
Debian 使いだから勘違いしてる可能性が高いけどこういう感じで tee とかリダイレクトじゃダメなの?
$ cat Dockerfile
FROM centos
RUN yum list installed | tee yum.list
$ docker build -t yumlist .
~~snip~~
$ docker run --rm yumlist head -n5 /yum.list
Loaded plugins: fastestmirror, ovl
Installed Packages
acl.x86_64 2.2.51-12.el7 @CentOS
audit-libs.x86_64 2.7.6-3.el7 @CentOS
basesystem.noarch 10.0-7.el7.centos @CentOS
Debian 使いだから勘違いしてる可能性が高いけどこういう感じで tee とかリダイレクトじゃダメなの?
$ cat Dockerfile
FROM centos
RUN yum list installed | tee yum.list
$ docker build -t yumlist .
~~snip~~
$ docker run --rm yumlist head -n5 /yum.list
Loaded plugins: fastestmirror, ovl
Installed Packages
acl.x86_64 2.2.51-12.el7 @CentOS
audit-libs.x86_64 2.7.6-3.el7 @CentOS
basesystem.noarch 10.0-7.el7.centos @CentOS
2018/02/08(木) 17:41:54.10ID:lNZDnl+7
2018/02/14(水) 02:35:31.11ID:XB7JYlAs
/var/lib/docker/tmp
/var/lib/docker/containers
→単純にtmpfsにできる
/var/lib/docker/overlay2
→ここをtmpfsにすると再起動で空になったとき整合性エラーでコンテナが起動できなくなる
→かと言ってtmpfsをupperとしてoverlayfs化しても別エラーが出る(恐らくlower側のハードリンクが作れなくなるため)
/var/lib/docker全体をtmpfsにすれば整合性もハードリンク問題も解決するけど
消費メモリが増えるのとanything-sync-daemonとかでバックアップの手間も増える
システム再起動後にコンテナ自動起動しないならsync不要だけどイメージダウンロードからやり直しになって鬱陶しかった
/var/lib/docker/containers
→単純にtmpfsにできる
/var/lib/docker/overlay2
→ここをtmpfsにすると再起動で空になったとき整合性エラーでコンテナが起動できなくなる
→かと言ってtmpfsをupperとしてoverlayfs化しても別エラーが出る(恐らくlower側のハードリンクが作れなくなるため)
/var/lib/docker全体をtmpfsにすれば整合性もハードリンク問題も解決するけど
消費メモリが増えるのとanything-sync-daemonとかでバックアップの手間も増える
システム再起動後にコンテナ自動起動しないならsync不要だけどイメージダウンロードからやり直しになって鬱陶しかった
2018/02/15(木) 00:59:03.05ID:m3isa15O
☆ 現在、衆議員と参議院の両院で、改憲議員が3分の2を超えて
おります。総務省の、『憲法改正国民投票法』、でググってみてください。
国会の発議はすでに可能です。日本の、改憲を行いましょう。
平和は勝ち取るものです。お願い致します。☆☆
おります。総務省の、『憲法改正国民投票法』、でググってみてください。
国会の発議はすでに可能です。日本の、改憲を行いましょう。
平和は勝ち取るものです。お願い致します。☆☆
2018/02/15(木) 12:06:04.40ID:2MLB8/h1
>>98
その問題は /var/lib/docker 以下が ext4 なら、fstab でマウントオプションに commit=300 とか付けると結構な対策になる
短命コンテナをバンバン使い捨てるケースで .../docker/overlay2 にゴチャゴチャ置かれても
sync 前にすぐ消えたファイルやディレクトリは単に無視されてディスクには書き戻されなくなって安心
デフォの 5 秒だとちょっと早すぎるんだよな
欠点はもちろん不意の電源ダウンで指定秒数ぶんだけデータロストする可能性があることだけど
ノートだったり UPS あったり、吹っ飛んでもいいや的な状況なら sync-daemon 系も不要だから楽
俺は USB メモリだけで運用してると 1 年ちょっとで寿命が来て色々と試行錯誤の後
Arch のフォーラムかどっかに書いてあったこのシンプルな方法に落ち着いた
その問題は /var/lib/docker 以下が ext4 なら、fstab でマウントオプションに commit=300 とか付けると結構な対策になる
短命コンテナをバンバン使い捨てるケースで .../docker/overlay2 にゴチャゴチャ置かれても
sync 前にすぐ消えたファイルやディレクトリは単に無視されてディスクには書き戻されなくなって安心
デフォの 5 秒だとちょっと早すぎるんだよな
欠点はもちろん不意の電源ダウンで指定秒数ぶんだけデータロストする可能性があることだけど
ノートだったり UPS あったり、吹っ飛んでもいいや的な状況なら sync-daemon 系も不要だから楽
俺は USB メモリだけで運用してると 1 年ちょっとで寿命が来て色々と試行錯誤の後
Arch のフォーラムかどっかに書いてあったこのシンプルな方法に落ち着いた
101塩水 ◆1FrMT.vzQQ
2018/03/11(日) 02:24:38.22ID:hSBnN7Ry dockerfile使わずにAnsibleでコンテナ構築してる人居ます?
物理で構築してたPlaybookのTarget SectionにDocker使うよって一行追加すれば使えるし(厳密には使えるようにするまでに色々設定は必要だけど)、
仮にコンテナのデファクトみたいなものがDockerじゃなくなっても最悪SSHで接続さえ出来れば流用できるからこのやり方良いなと思ってるんどけど。
物理で構築してたPlaybookのTarget SectionにDocker使うよって一行追加すれば使えるし(厳密には使えるようにするまでに色々設定は必要だけど)、
仮にコンテナのデファクトみたいなものがDockerじゃなくなっても最悪SSHで接続さえ出来れば流用できるからこのやり方良いなと思ってるんどけど。
102塩水 ◆1FrMT.vzQQ
2018/03/11(日) 02:25:38.04ID:hSBnN7Ry スマホのフリック入力慣れないな。。
103塩水 ◆1FrMT.vzQQ
2018/03/11(日) 02:32:17.59ID:hSBnN7Ry クリーンな状態からのAnsibleの実行検証がコマンドレベルでできて便利。
昔はVM作り直したり、スナップショットから復元したりしてたけど、今はそのマウス操作すら煩わしくなってしまってる。
昔はVM作り直したり、スナップショットから復元したりしてたけど、今はそのマウス操作すら煩わしくなってしまってる。
2018/03/11(日) 02:47:30.63ID:FdJN57de
>>101
使っていませんw
ansibleを使ってDockerイメージを作ると、Dockerのキャッシュが
効かなくてイメージ作るの遅くなるでしょ?その問題もう解決したの?
あとansible使うならイメージにpythonインストールされてないとダメなんだよね?
Dockerはalpineとかpythonすら入ってないイメージをベースとすることも有るからなねぇ
君にとっては役にたたない話かもしれないど、どうしてansible使おうと思ったのか?
質問していい? >>101にも書いてあるけど他のコンテナに乗り換えたいときのためだけ?
俺は流用するならばシェルスクリプトが一番だと思ってるよ。
だってansibleで書いたYAMLって、ansible以外に流用できないでしょ?YAML書くのめちゃくちゃ手間だし
Dockerfileはシェルスクリプトにかなり近いので流用したいならDockerfileのままでいい
Dockerのイメージを作る時に限らず、なんでansibleなんか使うのか俺には理解できないよ
使っていませんw
ansibleを使ってDockerイメージを作ると、Dockerのキャッシュが
効かなくてイメージ作るの遅くなるでしょ?その問題もう解決したの?
あとansible使うならイメージにpythonインストールされてないとダメなんだよね?
Dockerはalpineとかpythonすら入ってないイメージをベースとすることも有るからなねぇ
君にとっては役にたたない話かもしれないど、どうしてansible使おうと思ったのか?
質問していい? >>101にも書いてあるけど他のコンテナに乗り換えたいときのためだけ?
俺は流用するならばシェルスクリプトが一番だと思ってるよ。
だってansibleで書いたYAMLって、ansible以外に流用できないでしょ?YAML書くのめちゃくちゃ手間だし
Dockerfileはシェルスクリプトにかなり近いので流用したいならDockerfileのままでいい
Dockerのイメージを作る時に限らず、なんでansibleなんか使うのか俺には理解できないよ
2018/03/11(日) 02:55:22.05ID:FdJN57de
>>103
> クリーンな状態からのAnsibleの実行検証がコマンドレベルでできて便利。
君を煽るわけじゃなく、そういうのをやってる人見てると、ワロスワロスだよw
なに無駄に苦労しちゃってるの?って思う
Ansibleは実行検証が必要なほど信頼できないってことだからね
Ansibleは理想としては、クリーンな状態にしなくても、冪等性とやらで
書いてあるとおりになるはずなんだが、その理想は破綻してる。
書いてない部分がどうなるのかは不定だからplaybookを変更した時に
クリーンな状態からやったのと同じ状態になるとは限らない
いやもちろんシェルスクリプトも同じだよ。でも検証時にサーバーに乗り込んで
手動でやったものがそのままコマンドにできる
playbookとして書いたものが、手動でやったことと同様のことを
行ってくれるか?という "二重の検証" は必要なくなるのさ
> クリーンな状態からのAnsibleの実行検証がコマンドレベルでできて便利。
君を煽るわけじゃなく、そういうのをやってる人見てると、ワロスワロスだよw
なに無駄に苦労しちゃってるの?って思う
Ansibleは実行検証が必要なほど信頼できないってことだからね
Ansibleは理想としては、クリーンな状態にしなくても、冪等性とやらで
書いてあるとおりになるはずなんだが、その理想は破綻してる。
書いてない部分がどうなるのかは不定だからplaybookを変更した時に
クリーンな状態からやったのと同じ状態になるとは限らない
いやもちろんシェルスクリプトも同じだよ。でも検証時にサーバーに乗り込んで
手動でやったものがそのままコマンドにできる
playbookとして書いたものが、手動でやったことと同様のことを
行ってくれるか?という "二重の検証" は必要なくなるのさ
106塩水 ◆1FrMT.vzQQ
2018/03/11(日) 03:31:17.92ID:hSBnN7Ry すごい煽られててビックリしましたw
>>104
用途は
1. 公式OSイメージからコンテナを作る
2. 良い感じのコンテナになってたらイメージ化する
という感じです。
「2.」のイメージ作るとこは最終段階で、そう頻繁に行う作業ではないの
仮にイメージ一つ作るのに数十分かかったとしても、自分の用途に関してはそれほど問題はないです。
Ansibleを使おうと思ったのは、昔は動いてたけど今は動くなくなっているようなPlaybookでも
失敗した箇所がピンポイントでわかるのでメンテする気が起きるからです。
人のシェルスクリプト読んだり、昔の自分のイキリシェルスクリプトを読解するのに疲れた
というのが大きいですね。
コンテナのイメージ化という事も検証の一環として行いますが、メインの用途は
コンテナでPlaybookを高速で検証して、検証した構築用Playbookを本番のVMに放つという感じです。
(本番に放つ前に一度は検証用VMにも放って確認はします)
>>104
用途は
1. 公式OSイメージからコンテナを作る
2. 良い感じのコンテナになってたらイメージ化する
という感じです。
「2.」のイメージ作るとこは最終段階で、そう頻繁に行う作業ではないの
仮にイメージ一つ作るのに数十分かかったとしても、自分の用途に関してはそれほど問題はないです。
Ansibleを使おうと思ったのは、昔は動いてたけど今は動くなくなっているようなPlaybookでも
失敗した箇所がピンポイントでわかるのでメンテする気が起きるからです。
人のシェルスクリプト読んだり、昔の自分のイキリシェルスクリプトを読解するのに疲れた
というのが大きいですね。
コンテナのイメージ化という事も検証の一環として行いますが、メインの用途は
コンテナでPlaybookを高速で検証して、検証した構築用Playbookを本番のVMに放つという感じです。
(本番に放つ前に一度は検証用VMにも放って確認はします)
107塩水 ◆1FrMT.vzQQ
2018/03/11(日) 03:33:10.76ID:hSBnN7Ry 今度は長文をPCから書き込んだらsage忘れた
2ch書き込みのブランクありすぎて色々ひどい。。
2ch書き込みのブランクありすぎて色々ひどい。。
108塩水 ◆1FrMT.vzQQ
2018/03/11(日) 03:47:31.86ID:hSBnN7Ry >>105
私も冪等性なんてあてにするものではないと思ってて、
Ansibleに限らず、そのほかのツールも検証してないものは信頼しないというのが私の基本スタンスです。
(特に、かなり昔に作った構築系スクリプトはそのまま実行して一回で動くとは思ってません。)
シェルスクリプトは構築コマンドそのまま列挙すればよいので便利なのですが、
例えばCentOSのOS基本設定入れてRuby入れてApache入れてアプリ入れて、
みたいな構築の場合、Role単位で過程を完全に分離できるので、管理がすごく楽なんです。
例えば構築が失敗したとき、シェルスクリプト場合
何でコケたのか、どこでコケたのか、というのを探すところから始める必要がありますが
Ansibleだとコケた場所とコケた原因のコマンドが一目瞭然なのでとてもメンテしやすいのです。
私も冪等性なんてあてにするものではないと思ってて、
Ansibleに限らず、そのほかのツールも検証してないものは信頼しないというのが私の基本スタンスです。
(特に、かなり昔に作った構築系スクリプトはそのまま実行して一回で動くとは思ってません。)
シェルスクリプトは構築コマンドそのまま列挙すればよいので便利なのですが、
例えばCentOSのOS基本設定入れてRuby入れてApache入れてアプリ入れて、
みたいな構築の場合、Role単位で過程を完全に分離できるので、管理がすごく楽なんです。
例えば構築が失敗したとき、シェルスクリプト場合
何でコケたのか、どこでコケたのか、というのを探すところから始める必要がありますが
Ansibleだとコケた場所とコケた原因のコマンドが一目瞭然なのでとてもメンテしやすいのです。
2018/03/11(日) 04:16:58.61ID:FdJN57de
あちこちで煽ってるけどようやくまともな意見を返す人が見つかったな
ふぉーん。ってことはシェルスクリプトでもどこで失敗したか
ピンポイントでわかれば問題ないってことじゃねーか。
あとは書き方が統一されていればいい
それなら解決可能な問題だな。っていうか俺の手元ではほぼ解決済みだ
> Role単位で過程を完全に分離できるので、管理がすごく楽なんです。
> Ansibleだとコケた場所とコケた原因のコマンドが一目瞭然なのでとてもメンテしやすいのです。
それもほぼ解決済みだ
シェルスクリプトで解決可能なたったそれだけの問題のために
Ansibleみたいな内部で何が行われているかわからない
重量系なブラックボックスツールをありがたがって使ってんのか
なんであれ(Ansibleとか)が無駄に重いソフトだってみんな気づかないんだろうか
> 2ch書き込みのブランクありすぎて色々ひどい。。
一体いつからここが2ちゃんねるだと錯覚していた?
ふぉーん。ってことはシェルスクリプトでもどこで失敗したか
ピンポイントでわかれば問題ないってことじゃねーか。
あとは書き方が統一されていればいい
それなら解決可能な問題だな。っていうか俺の手元ではほぼ解決済みだ
> Role単位で過程を完全に分離できるので、管理がすごく楽なんです。
> Ansibleだとコケた場所とコケた原因のコマンドが一目瞭然なのでとてもメンテしやすいのです。
それもほぼ解決済みだ
シェルスクリプトで解決可能なたったそれだけの問題のために
Ansibleみたいな内部で何が行われているかわからない
重量系なブラックボックスツールをありがたがって使ってんのか
なんであれ(Ansibleとか)が無駄に重いソフトだってみんな気づかないんだろうか
> 2ch書き込みのブランクありすぎて色々ひどい。。
一体いつからここが2ちゃんねるだと錯覚していた?
2018/03/11(日) 04:26:48.50ID:FdJN57de
Ansibleがブラックボックスツールということの
意味がわからない人がいるかもしれないから
軽く説明しておいてやろう
まずお前らは環境構築をしているよな?それが仕事だ
その仕事をしている最中に、Ansible関連でバグとか
モジュールが対応してなくてうまく動かない自体が発生した。
それらをお前らすぐになおせるの?
pythonを知っていたとしてもまず無理だろ?
重量級のAnsibleをブラックボックスで使ってるからな
でも本来のお前らの仕事である環境構築は
手作業やシェルスクリプトですぐに解決できるだろ?
Ansibleの範囲でうまくできてりゃいいさ、だが
それができない場合、大きなボトルネックになってんだろ
意味がわからない人がいるかもしれないから
軽く説明しておいてやろう
まずお前らは環境構築をしているよな?それが仕事だ
その仕事をしている最中に、Ansible関連でバグとか
モジュールが対応してなくてうまく動かない自体が発生した。
それらをお前らすぐになおせるの?
pythonを知っていたとしてもまず無理だろ?
重量級のAnsibleをブラックボックスで使ってるからな
でも本来のお前らの仕事である環境構築は
手作業やシェルスクリプトですぐに解決できるだろ?
Ansibleの範囲でうまくできてりゃいいさ、だが
それができない場合、大きなボトルネックになってんだろ
111塩水 ◆1FrMT.vzQQ
2018/03/11(日) 04:40:50.71ID:hSBnN7Ry なんかアドレスが5chになってる。いつの間に。。
>>109
言ってしまうと、自分のスクリプト力もあまり信頼してなくて、
今書いた複雑なスクリプトを一年後の自分が読めるとは思ってないのです。
ベテランの人が自分で方針を決めて数年後でもメンテできるように書いていれば
その人は問題なく使えると思うのですが、他の人はそれを読めるかどうかというところですね。
Ansibleのベストプラクティスに従っていれば、そんなベテランの腕がなくても
仕組みで自然とそのようなメンテがしやすい形にはなるのです。
ただ、ベストプラクティスもそのままだと実用としてどうなのというケースも多いので
現場に合わせてアレンジする作業は必須だと思いますが。
(教科書そのままでは現実では役にたたない、とよく言われるアレみたいな感じです)
Ansibleそのものの挙動はブラックボックスなところもあるかもしれませんが、
品質の担保はServerSpecのテストでやってます。
何か問題があったらServerSpecのテストを足せば良かったりします。
手順書に確認手順を追加するよりテスト書いてgitで管理して必要に応じて実行する方が簡単で確実かなと思ってます。
テストや確認事項を手順書に追加するのは手順書のメンテナンスも確認作業も面倒ですが
テストなら足して実行すればよいだけなので、細かすぎるような確認作業も気兼ねなくガンガン追加できます。
>>109
言ってしまうと、自分のスクリプト力もあまり信頼してなくて、
今書いた複雑なスクリプトを一年後の自分が読めるとは思ってないのです。
ベテランの人が自分で方針を決めて数年後でもメンテできるように書いていれば
その人は問題なく使えると思うのですが、他の人はそれを読めるかどうかというところですね。
Ansibleのベストプラクティスに従っていれば、そんなベテランの腕がなくても
仕組みで自然とそのようなメンテがしやすい形にはなるのです。
ただ、ベストプラクティスもそのままだと実用としてどうなのというケースも多いので
現場に合わせてアレンジする作業は必須だと思いますが。
(教科書そのままでは現実では役にたたない、とよく言われるアレみたいな感じです)
Ansibleそのものの挙動はブラックボックスなところもあるかもしれませんが、
品質の担保はServerSpecのテストでやってます。
何か問題があったらServerSpecのテストを足せば良かったりします。
手順書に確認手順を追加するよりテスト書いてgitで管理して必要に応じて実行する方が簡単で確実かなと思ってます。
テストや確認事項を手順書に追加するのは手順書のメンテナンスも確認作業も面倒ですが
テストなら足して実行すればよいだけなので、細かすぎるような確認作業も気兼ねなくガンガン追加できます。
112塩水 ◆1FrMT.vzQQ
2018/03/11(日) 04:55:20.38ID:hSBnN7Ry 多少はやったことありますが、AnsibleのモジュールそのものをPython書いて修正するというのは敷居がけっこう高いですね。。
確かに、廃止されたりオプションが変わったり、変な挙動のモジュールもあります。
解決策はそのモジュールが使えてるAnsibleのバージョンを固定するか
最悪、shellやcommandモジュールでLinuxコマンドべた書きするかでしょうか。
ただ、shell, commandモジュールを使うと冪等性が担保できないので
非推奨なのですが、そもそも私は冪等性というものを信用してなかったりするので
自分の場合は特に問題なかったり。
Ansibleが用意しているモジュールがあるのにshellやcommandでやろうとすると
こっちのモジュール使えという警告が出て煩わしかったりします。
使えるモジュールは使うとシンプルにかけたり良しなに処理してくれたりと確かに便利ではあるのですが
さっき書いたように廃止や挙動が変更されるリスクもあります。
そこでdockerコンテナを使ったPlkaybookの高速検証が活きてくるという。
確かに、廃止されたりオプションが変わったり、変な挙動のモジュールもあります。
解決策はそのモジュールが使えてるAnsibleのバージョンを固定するか
最悪、shellやcommandモジュールでLinuxコマンドべた書きするかでしょうか。
ただ、shell, commandモジュールを使うと冪等性が担保できないので
非推奨なのですが、そもそも私は冪等性というものを信用してなかったりするので
自分の場合は特に問題なかったり。
Ansibleが用意しているモジュールがあるのにshellやcommandでやろうとすると
こっちのモジュール使えという警告が出て煩わしかったりします。
使えるモジュールは使うとシンプルにかけたり良しなに処理してくれたりと確かに便利ではあるのですが
さっき書いたように廃止や挙動が変更されるリスクもあります。
そこでdockerコンテナを使ったPlkaybookの高速検証が活きてくるという。
113塩水 ◆1FrMT.vzQQ
2018/03/11(日) 05:13:32.25ID:hSBnN7Ry さらさらっと書いてますが、このようなdocker,ansible,Serverspecの環境を作るのはそれなりに大変だと思うので、
もしやるならばこの辺に詳しいインフラエンジニアに任せた方が良いかも。
もしやるならばこの辺に詳しいインフラエンジニアに任せた方が良いかも。
2018/03/11(日) 11:20:29.98ID:FdJN57de
>>111
> 今書いた複雑なスクリプトを一年後の自分が読めるとは思ってないのです。
環境構築ごときでなんで複雑になるのかそこが不思議。
まず一つだけアドバイスするなら、設定はファイルの項目ごとに変更するのではなく、
設定ファイルをまるごとcopyすること。これで冪等性も担保される。
環境構築なんてファイルおいて数個のコマンド実行して大抵はこれだけで
終わるはずなんだが、なんで複雑になってるのか知りたいよw
冪等性を考えると前の状態を考慮する必要がでてくるので条件分岐なんかが出てくるが
Dockerだと最初から作り直しになるので関係ない
あんな大量のモジュールができてしまったのは、冪等性を考慮したことが根本原因かね?
> Ansibleのベストプラクティスに従っていれば、そんなベテランの腕がなくても
> 仕組みで自然とそのようなメンテがしやすい形にはなるのです。
細かいファイルに分かれていて、notifyとはhandlersとか使っていて、これどうなってるんだ?って頭を抱えたことが有るんだがw
単純にメンテしやすい形になればいいのかねぇ。詳しくは言えないがそれなら俺の手元では解決済みなんだ。
> Ansibleそのものの挙動はブラックボックスなところもあるかもしれませんが、
> 品質の担保はServerSpecのテストでやってます。
テストのためだけにRubyをサーバーに入れなきゃいけないってのもナンセンスだよなw
入れない方法もあるんだっけ?
> 何か問題があったらServerSpecのテストを足せば良かったりします。
> 手順書に確認手順を追加するよりテスト書いてgitで管理して必要に応じて実行する方が簡単で確実かなと思ってます。
俺は一言も手順書なんて言ってないんだよね。テストもシェルスクリプトでやればいいでしょ?当然gitで管理できる。
あとServerSpecでも同じくブラックボックス問題がある。ServerSpecでは一体何を調べてるんだって話だよ
例えばpackageでパッケージがインストールされているか調べられるが、パッケージの管理方法はディストリで違うはずだ
packageはAlpineのapkでも使えるのか?という質問に自信をもって答えられるのか?すぐにソース読みとけるのか?
(まあそこはコマンドが実行できればOKとするのが、やるべきテストだと思うけどさ)
> 今書いた複雑なスクリプトを一年後の自分が読めるとは思ってないのです。
環境構築ごときでなんで複雑になるのかそこが不思議。
まず一つだけアドバイスするなら、設定はファイルの項目ごとに変更するのではなく、
設定ファイルをまるごとcopyすること。これで冪等性も担保される。
環境構築なんてファイルおいて数個のコマンド実行して大抵はこれだけで
終わるはずなんだが、なんで複雑になってるのか知りたいよw
冪等性を考えると前の状態を考慮する必要がでてくるので条件分岐なんかが出てくるが
Dockerだと最初から作り直しになるので関係ない
あんな大量のモジュールができてしまったのは、冪等性を考慮したことが根本原因かね?
> Ansibleのベストプラクティスに従っていれば、そんなベテランの腕がなくても
> 仕組みで自然とそのようなメンテがしやすい形にはなるのです。
細かいファイルに分かれていて、notifyとはhandlersとか使っていて、これどうなってるんだ?って頭を抱えたことが有るんだがw
単純にメンテしやすい形になればいいのかねぇ。詳しくは言えないがそれなら俺の手元では解決済みなんだ。
> Ansibleそのものの挙動はブラックボックスなところもあるかもしれませんが、
> 品質の担保はServerSpecのテストでやってます。
テストのためだけにRubyをサーバーに入れなきゃいけないってのもナンセンスだよなw
入れない方法もあるんだっけ?
> 何か問題があったらServerSpecのテストを足せば良かったりします。
> 手順書に確認手順を追加するよりテスト書いてgitで管理して必要に応じて実行する方が簡単で確実かなと思ってます。
俺は一言も手順書なんて言ってないんだよね。テストもシェルスクリプトでやればいいでしょ?当然gitで管理できる。
あとServerSpecでも同じくブラックボックス問題がある。ServerSpecでは一体何を調べてるんだって話だよ
例えばpackageでパッケージがインストールされているか調べられるが、パッケージの管理方法はディストリで違うはずだ
packageはAlpineのapkでも使えるのか?という質問に自信をもって答えられるのか?すぐにソース読みとけるのか?
(まあそこはコマンドが実行できればOKとするのが、やるべきテストだと思うけどさ)
2018/03/11(日) 11:22:42.29ID:FdJN57de
ServerSpec実行してOKがでればOKと信用すりゃいいんだろうけどさ、何をテストしているのかさっぱりわからん。
ServerSpec(というかrspec)というフレームワークはブラックボックスで良いんだが
肝心のテスト内容(matcher)で何をやってるのかは把握してなきゃだめだろ?
>>112
> ただ、shell, commandモジュールを使うと冪等性が担保できないので
Dockerや最近のImmutable Infrastructureではサーバ作ったら変えないので
ありがたいことに冪等性は不要になった。実行前は必ずクリーンな状態なのでね。
俺も冪等性は信頼してない。特にAnsibleとかブラックボックスなので。
ただしここではいわないが、冪等性に変わるアイデアを持ってる
> さらさらっと書いてますが、このようなdocker,ansible,Serverspecの環境を作るのはそれなりに大変だと思うので、
Dockerはともなく、ansible とか Serverspec だから大変なんだよ。
Serverspecとか今度はRubyいるだろ?
参考になった。まあ気にすんなよ。あんたを煽ってるわけじゃなく
ちょうどansible使おうとしてるやつがいたから、なんでか聞きたかっただけだ。
Ansibleとかほんとクソだって思ってるので
最初の質問にもう一度答えると
> dockerfile使わずにAnsibleでコンテナ構築してる人居ます?
つかわん。dockerなら冪等性いらないし、1コンテナで動かすものは極力シンプルにするので
構築内容は短くなる。逆にAnsibleを動かすための部分のほうが長くなる
ServerSpec(というかrspec)というフレームワークはブラックボックスで良いんだが
肝心のテスト内容(matcher)で何をやってるのかは把握してなきゃだめだろ?
>>112
> ただ、shell, commandモジュールを使うと冪等性が担保できないので
Dockerや最近のImmutable Infrastructureではサーバ作ったら変えないので
ありがたいことに冪等性は不要になった。実行前は必ずクリーンな状態なのでね。
俺も冪等性は信頼してない。特にAnsibleとかブラックボックスなので。
ただしここではいわないが、冪等性に変わるアイデアを持ってる
> さらさらっと書いてますが、このようなdocker,ansible,Serverspecの環境を作るのはそれなりに大変だと思うので、
Dockerはともなく、ansible とか Serverspec だから大変なんだよ。
Serverspecとか今度はRubyいるだろ?
参考になった。まあ気にすんなよ。あんたを煽ってるわけじゃなく
ちょうどansible使おうとしてるやつがいたから、なんでか聞きたかっただけだ。
Ansibleとかほんとクソだって思ってるので
最初の質問にもう一度答えると
> dockerfile使わずにAnsibleでコンテナ構築してる人居ます?
つかわん。dockerなら冪等性いらないし、1コンテナで動かすものは極力シンプルにするので
構築内容は短くなる。逆にAnsibleを動かすための部分のほうが長くなる
2018/03/11(日) 11:30:56.88ID:FdJN57de
>>113
> もしやるならばこの辺に詳しいインフラエンジニアに任せた方が良いかも。
インフラエンジニアじゃないのか?俺も違うけどなw
インフラエンジニアじゃないけど、サーバー構築やらないわけじゃなく
まあやったりする。それぐらいはできる。
問題は、パッケージインストールした。設定ファイルも書いた。こんな感じでいいだろう。
で、自動化? まあやったほうが良いね。今やったことを自動化するだけだろ?
Ansible? YAMLで書くのか。
インストールしたパッケージを使うモジュールはどれ?
設定ファイルに書いたことに相当する項目はどれ?
ないんだが?新しい機能だから対応してねーのか?
結局commandでシェルスクリプト書くしかねーじゃねーか
みたいなな。
インフラエンジニアってなんであんなクソなもの平気で使えるの?
> もしやるならばこの辺に詳しいインフラエンジニアに任せた方が良いかも。
インフラエンジニアじゃないのか?俺も違うけどなw
インフラエンジニアじゃないけど、サーバー構築やらないわけじゃなく
まあやったりする。それぐらいはできる。
問題は、パッケージインストールした。設定ファイルも書いた。こんな感じでいいだろう。
で、自動化? まあやったほうが良いね。今やったことを自動化するだけだろ?
Ansible? YAMLで書くのか。
インストールしたパッケージを使うモジュールはどれ?
設定ファイルに書いたことに相当する項目はどれ?
ないんだが?新しい機能だから対応してねーのか?
結局commandでシェルスクリプト書くしかねーじゃねーか
みたいなな。
インフラエンジニアってなんであんなクソなもの平気で使えるの?
2018/03/11(日) 11:48:05.06ID:JbaTrnc+
オンプレでウォーターフォール、一度作ったマシンを後生大事に使い続ける、
そんなスタイルならDockerすら不要かと
そんなスタイルならDockerすら不要かと
118塩水 ◆1FrMT.vzQQ
2018/03/11(日) 15:33:16.62ID:hSBnN7Ry > 環境構築ごときでなんで複雑になるのかそこが不思議。
社内のVMwareで作ったイメージを直接客先に入れられるならもっと簡単に作れるんですけどね。。
オンプレ上で直接構築する場合、内部やDMZなど環境毎にproxyやDNS、ntpやファイヤーウォールの設定が違ってたりするのです。
あと、WebサーバでIPアドレスだけ変えて後は全部一緒の設定にしたい場合は
Webサーバ分だけ設定ファイル作るんじゃなくて、テンプレート作ってIPアドレスだけ動的に変えて配布するとか。
便利です。
> あんな大量のモジュールができてしまったのは、冪等性を考慮したことが根本原因かね?
それも原因の一つかもしれないですが、基本は便利そうだからじゃないですかね?
私はRedHatの人ではないのでなんとも答えられませんが
「何でLinuxにはあんな大量にコマンドがあるんですか?」みたいな質問かなーと。
> 細かいファイルに分かれていて、notifyとはhandlersとか使っていて、これどうなってるんだ?って頭を抱えたことが有るんだがw
そうですね。サービスが再起動されるのが状態が変更された場合という事ですけど
何をもってサービスが変更されたとするかというのがわかりにくいかもですね。
私はこれ積極的には使ってなくて、serviceモジュールで明示的にサービス再起動してます。
基本的に冪等性は考えないスタンスの一言なのですが、使わない理由をあえて考えると
構築時はいくらどのタイミングでサービスを再起動しても本番に影響は無いのと、
稼働中のサーバのサービスを再起動する場合は明示的に確実に特定のタイミングで一回だけ再起動させたいからでしょうか。
社内のVMwareで作ったイメージを直接客先に入れられるならもっと簡単に作れるんですけどね。。
オンプレ上で直接構築する場合、内部やDMZなど環境毎にproxyやDNS、ntpやファイヤーウォールの設定が違ってたりするのです。
あと、WebサーバでIPアドレスだけ変えて後は全部一緒の設定にしたい場合は
Webサーバ分だけ設定ファイル作るんじゃなくて、テンプレート作ってIPアドレスだけ動的に変えて配布するとか。
便利です。
> あんな大量のモジュールができてしまったのは、冪等性を考慮したことが根本原因かね?
それも原因の一つかもしれないですが、基本は便利そうだからじゃないですかね?
私はRedHatの人ではないのでなんとも答えられませんが
「何でLinuxにはあんな大量にコマンドがあるんですか?」みたいな質問かなーと。
> 細かいファイルに分かれていて、notifyとはhandlersとか使っていて、これどうなってるんだ?って頭を抱えたことが有るんだがw
そうですね。サービスが再起動されるのが状態が変更された場合という事ですけど
何をもってサービスが変更されたとするかというのがわかりにくいかもですね。
私はこれ積極的には使ってなくて、serviceモジュールで明示的にサービス再起動してます。
基本的に冪等性は考えないスタンスの一言なのですが、使わない理由をあえて考えると
構築時はいくらどのタイミングでサービスを再起動しても本番に影響は無いのと、
稼働中のサーバのサービスを再起動する場合は明示的に確実に特定のタイミングで一回だけ再起動させたいからでしょうか。
119塩水 ◆1FrMT.vzQQ
2018/03/11(日) 15:34:04.20ID:hSBnN7Ry > テストのためだけにRubyをサーバーに入れなきゃいけないってのもナンセンスだよなw
> 入れない方法もあるんだっけ?
Serverspecは私の知ってる限りのやり方ではRuby要りますね。gemですし。
サービスと関係なくある程度裁量で触れるステージング的なサーバがあれば
客に許可をもらってそこに入れるとか。。
> テストもシェルスクリプトでやればいいでしょ?当然gitで管理できる。
シェルスクリプトでテストが書けるのであれば良いと思いますが、
例えばリターンコードを確認して成功と失敗を判断して、、みたいなスクリプトを書くとすると
構築系スクリプト以上に大変な気がします。。
> ServerSpecでは一体何を調べてるんだって話だよ
何を調べれば十分かをこちらで定めて、それを満たしていることを確認するというスタンスにすれば良いと思うのです。
例えば「Rubyがインストールされていることを確認する」の場合packageだけで良しとするか、
commandでインストールしたコマンド実行後にあるべき出力結果が出てるかまで確認するかとか。
やろうと思えば手で実行できる範囲のテストはいくらでも追加できるので。
AnsibleやServerspecそのものがどうなってるかではなくて、自分が構築したサービスがちゃんと機能しているかを見ます。
こういう着眼点にすれば、将来もしAnsibleやServerspec以外の便利なソフトができても移行の判断がしやすかったりします。
> 入れない方法もあるんだっけ?
Serverspecは私の知ってる限りのやり方ではRuby要りますね。gemですし。
サービスと関係なくある程度裁量で触れるステージング的なサーバがあれば
客に許可をもらってそこに入れるとか。。
> テストもシェルスクリプトでやればいいでしょ?当然gitで管理できる。
シェルスクリプトでテストが書けるのであれば良いと思いますが、
例えばリターンコードを確認して成功と失敗を判断して、、みたいなスクリプトを書くとすると
構築系スクリプト以上に大変な気がします。。
> ServerSpecでは一体何を調べてるんだって話だよ
何を調べれば十分かをこちらで定めて、それを満たしていることを確認するというスタンスにすれば良いと思うのです。
例えば「Rubyがインストールされていることを確認する」の場合packageだけで良しとするか、
commandでインストールしたコマンド実行後にあるべき出力結果が出てるかまで確認するかとか。
やろうと思えば手で実行できる範囲のテストはいくらでも追加できるので。
AnsibleやServerspecそのものがどうなってるかではなくて、自分が構築したサービスがちゃんと機能しているかを見ます。
こういう着眼点にすれば、将来もしAnsibleやServerspec以外の便利なソフトができても移行の判断がしやすかったりします。
2018/03/11(日) 15:53:28.62ID:FdJN57de
> オンプレ上で直接構築する場合、内部やDMZなど環境毎にproxyやDNS、ntpやファイヤーウォールの設定が違ってたりするのです。
> あと、WebサーバでIPアドレスだけ変えて後は全部一緒の設定にしたい場合は
> Webサーバ分だけ設定ファイル作るんじゃなくて、テンプレート作ってIPアドレスだけ動的に変えて配布するとか。
> 便利です。
それはAnsibleじゃないとできないことではないからなぁ
> 例えばリターンコードを確認して成功と失敗を判断して、、みたいなスクリプトを書くとすると
> 構築系スクリプト以上に大変な気がします。。
set -e
exists_file() {
[ -f "$1" ]
}
check() {
exists_file /var/file1
package_installed mysql
some_check
}
リターンコードの確認なんていらない。set -eしてるからリターンコードが0以外だとそこでストップする
(どこでストップするかがわかるようにしたいなら、単に関数の中でメッセージを出せばいい)
あとはこんな感じでいろいろヘルパー関数を作っていけばいいだけだと思うんだが?
ヘルパー関数は再利用できるから実質check() の中身を書き連ねるだけ。
> あと、WebサーバでIPアドレスだけ変えて後は全部一緒の設定にしたい場合は
> Webサーバ分だけ設定ファイル作るんじゃなくて、テンプレート作ってIPアドレスだけ動的に変えて配布するとか。
> 便利です。
それはAnsibleじゃないとできないことではないからなぁ
> 例えばリターンコードを確認して成功と失敗を判断して、、みたいなスクリプトを書くとすると
> 構築系スクリプト以上に大変な気がします。。
set -e
exists_file() {
[ -f "$1" ]
}
check() {
exists_file /var/file1
package_installed mysql
some_check
}
リターンコードの確認なんていらない。set -eしてるからリターンコードが0以外だとそこでストップする
(どこでストップするかがわかるようにしたいなら、単に関数の中でメッセージを出せばいい)
あとはこんな感じでいろいろヘルパー関数を作っていけばいいだけだと思うんだが?
ヘルパー関数は再利用できるから実質check() の中身を書き連ねるだけ。
121塩水 ◆1FrMT.vzQQ
2018/03/11(日) 16:11:14.24ID:hSBnN7Ry >>116
>インフラエンジニアじゃないのか?俺も違うけどなw
元インフラエンジニアで今の職業は百姓です。田舎で野菜作ってます。
最初はshellやcommandで書いて、使えるモジュールがわかったらあとで修正するという方法もありかなと。
まあ、だいたいそのままで特に問題ないので放置されるのがデフォルトですが。
自動化のところまでは色々できたりするんですけど、
それを他の人に引き継ぐというのがものすごく難しいんですよね。。
k8sも挑戦して、環境構築できるPlaybook作ったりしたのですが
人に引き継ぐという事が難しくて頓挫しました。
自分で管理することはできても人に引き継ぐとなるとAnsibleやServerspecの比じゃなくくらいしんどかったので
k8s環境ぶっ壊してdocker-composeに戻しました。
(そもそも社内の開発環境にk8sは大げさすぎたということもあります)
> Ansible? YAMLで書くのか。
例えばChefの場合はRubyの知識が必要ですがYAMLは言えば設定ファイルを書くような感覚なので
インフラエンジニアにとっても比較的とっつきやすいかなと思ってます。
AnsibleでPythonを意識するような場合、複雑にやりすぎているケースがほとんどです。
Pythonの制約からなのか、変なところにカンマ入れないと動かないとかあったりしますが。
(インベントリファイルじゃなく直接ホストを一つだけ指定する場合など)
> インフラエンジニアってなんであんなクソなもの平気で使えるの?
Ansibleは自然とメンテナンスしやすい構造になるような仕組みになっているのが便利だからじゃないでしょうか。
学習コストと既存のスキルセットでできることを比較して学習した方がトータルで効率的になると判断したから使うというか。
逆に言うと既存のスキルセットで十分なことができてしまっていると学習コストを払うというほうに舵を切りにくかったりするかもですね。
私はAnsible、dockerは流行ってるから採用したのではなくて、
ある程度プライベートで遊んで便利そうだったから職場にも持ち込んだという流れでした。
>インフラエンジニアじゃないのか?俺も違うけどなw
元インフラエンジニアで今の職業は百姓です。田舎で野菜作ってます。
最初はshellやcommandで書いて、使えるモジュールがわかったらあとで修正するという方法もありかなと。
まあ、だいたいそのままで特に問題ないので放置されるのがデフォルトですが。
自動化のところまでは色々できたりするんですけど、
それを他の人に引き継ぐというのがものすごく難しいんですよね。。
k8sも挑戦して、環境構築できるPlaybook作ったりしたのですが
人に引き継ぐという事が難しくて頓挫しました。
自分で管理することはできても人に引き継ぐとなるとAnsibleやServerspecの比じゃなくくらいしんどかったので
k8s環境ぶっ壊してdocker-composeに戻しました。
(そもそも社内の開発環境にk8sは大げさすぎたということもあります)
> Ansible? YAMLで書くのか。
例えばChefの場合はRubyの知識が必要ですがYAMLは言えば設定ファイルを書くような感覚なので
インフラエンジニアにとっても比較的とっつきやすいかなと思ってます。
AnsibleでPythonを意識するような場合、複雑にやりすぎているケースがほとんどです。
Pythonの制約からなのか、変なところにカンマ入れないと動かないとかあったりしますが。
(インベントリファイルじゃなく直接ホストを一つだけ指定する場合など)
> インフラエンジニアってなんであんなクソなもの平気で使えるの?
Ansibleは自然とメンテナンスしやすい構造になるような仕組みになっているのが便利だからじゃないでしょうか。
学習コストと既存のスキルセットでできることを比較して学習した方がトータルで効率的になると判断したから使うというか。
逆に言うと既存のスキルセットで十分なことができてしまっていると学習コストを払うというほうに舵を切りにくかったりするかもですね。
私はAnsible、dockerは流行ってるから採用したのではなくて、
ある程度プライベートで遊んで便利そうだったから職場にも持ち込んだという流れでした。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカーW杯】 観客285万人に到達 1試合平均は6万5000人 過去最多を大幅更新ペース [阿弥陀ヶ峰★]
- 「排外主義が日本全体で跋扈」村井嘉浩宮城県知事−外国ルーツの女子児童へのいじめで ★2 [蚤の市★]
- クールジャパン機構、累積損失500億円超 政府が廃止など検討へ ★2 [ぐれ★]
- 【シコ╰⋃╯シコ】ドラッグストア駐車場で陰部露出し自慰行為した公然わいせつ容疑 55歳男を現行犯逮捕 盛岡市 [nita★]
- 【音楽】サカナクション山口一郎、「チケット取れないからファン辞めます」一部Xの声に「悲しい…頑張ろうとしてるから今」 [muffin★]
- 「電話鳴り止まない」AI予約サービス「オートリザーブ」に飲食店困惑 “勝手に”公式マーク表示も 専門家「AIうまく機能していない」 [ぐれ★]
- ひきこもり10年したが、来週から働き始める
- 🇯🇵戦前の特高、日本人が私怨で密告しまくるので困惑していた😭 [399259198]
- 【文春】高市、暴かれた本性。木下秘書「文春は中国から毎週一千万円もらっている」自民党内から総スカンなど🤓 [359965264]
- また一家心中が発生 今度は3世代 じいさんとその娘と孫娘2人が練炭で 終わりだよこの高市国 [597533159]
- 塩粘の靴ダサくねー?👊😅👊🏡👞
- 外国通貨同士の取引で生じた為替差益は「課税対象」最高裁が初判断 [943688309]