- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2020-03-14T18:22:33+09:00","default:haikikyou","haikikyou") #author("2020-03-15T13:02:26+09:00","default:haikikyou","haikikyou") #contents * Docker [#u49dd827] - コンテナ型の仮想化ソフトウェア(LinuxのnamespaceとcgroupといったAPIで実現されている) - OS(実行環境)とアプリケーションをコンテナイメージとして作成 - Infrastructure as Code(IaC)とImmutable Infrastructure(イミュータブル インフラストラクチャ)を実現する * Docker周辺 [#m53c4713] ** Docker Compose [#c0a034af] - 複数のコンテナを管理するツール - Ansibleのようにコンテナ定義を.ymlに定義しておくと、定義通りにコンテナ環境を構築してくれる &label(warn){参考}; - [[さくらのナレッジ > 初心者向け > Docker入門(第六回)〜Docker Compose〜>https://knowledge.sakura.ad.jp/16862/]] - &size(11){&color(gray){on https://knowledge.sakura.ad.jp/16862/};}; ** Docker Swarm [#mc806065] - Docker Composerを複数のノード間で管理可能にするツール - Containerの増減、負荷分散等を考慮したContainerの配置などを行うことができる - より高度なソフトウェアとして、コンテナオーケストレーションツールのデファクトスタンダードである、Kubernetesがある。 &label(warn){参考}; - [[さくらのナレッジ > エンジニア向け > Docker SwarmによるDockerクラスタ環境の構築(Dockerの最新機能を使ってみよう:第4回)>https://knowledge.sakura.ad.jp/5197/]] - &size(11){&color(gray){on https://knowledge.sakura.ad.jp/5197/};}; ** Docker Toolbox [#gb49f98d] 以前、WindowsやMac環境では、VirtualBox上でコンテナエンジンを動作させる一連のToolKitとして提供されていた。~ 現在はOSネイティブ(WindowsはHiper-V、macOSはHypervisor Framework)のハイパーバイザ型の仮想化APIが使われている。 &label(warn){参考}; - [[Windows 10 の Hyper-V の概要>https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/about/]] - &size(11){&color(gray){on https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/about/};}; - [[Hypervisor>https://developer.apple.com/documentation/hypervisor]] - &size(11){&color(gray){on https://developer.apple.com/documentation/hypervisor};}; - [[Docker、MacOS X対応の軽量な仮想化ツール「HyperKit」をオープンソースで公開>https://www.publickey1.jp/blog/16/docker_hyperkit.html]] - &size(11){&color(gray){on https://www.publickey1.jp/blog/16/docker_hyperkit.html};}; ** Kubernetes [#d2ee0c59] - Google社のエンジニアによって開発されたオープンソースのコンテナオーケストレーションソフトウェア。 - コンテナをPod(小群)という塊によって管理する。 &label(warn){参考}; - [[Kubernetes とは>https://www.redhat.com/ja/topics/containers/what-is-kubernetes]] - &size(11){&color(gray){on https://www.redhat.com/ja/topics/containers/what-is-kubernetes};}; ** LinuxKit [#zd0482f2] コンテナ向けにカスタマイズされたディストリビューションを作成できるツール &label(warn){参考}; - [[LinuxKit >https://github.com/linuxkit/linuxkit]] - &size(11){&color(gray){on https://github.com/linuxkit/linuxkit};}; * コンテナ技術周辺 [#y11deb0e] ** 用語 [#aefb014d] *** OCI(Open Container Initiative) [#xae263d9] - Dockerやコンテナ技術リーダー企業によってコンテナ標準化を行なうために2015年に設立された組織。 - コンテナのフォーマットとラインタイムの業界標準仕様を策定している。 - Amazon, Cisco, Facebook, Google, Huawei, IBM, Intel, Microsoft, Oracle, Red Hat, VMwareなど、業界大手のハイテク企業が参画している。 *** CRI(Container Runtime Interface) [#z5617fcd] - Kubernetesがコンテナを実行するためのAPI標準仕様。 - CRI作成前は、コンテナとKubernetesの間をブリッジプログラムで繋いでいた。CRIにより、Kubernetesでのコンテナ実行をプラガブルで効率的に実行することができるようになった。containerdやCRI-Oなどがある。これは、High-Level Container Runtimeと呼ばれる。 #geshi{{{ kubelet ---> CRI (High-Level Container Runtime) ---> OCI (Low-Level Container Runtime) }}} *** コンテナライクなVM? [#l1a40c5c] 通常コンテナはホストOSカーネルを共有するが、カーネル部分もコンテナのように分離したコンテナのようなVM?のようなものもある。 - https://www.publickey1.jp/blog/17/kata_containersopenstack_foundation.html *** コンテナ技術のリンク [#j31421da] - https://speakerdeck.com/makocchi/about-container-runtimes-japan-container-days-v18-dot-04 - https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/ - https://pocketstudio.net/2017/10/19/pluggable-runtimes-and-their-impact-translate/ - https://www.publickey1.jp/blog/18/kubernetescontainerd_11cridocker.html - https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga/ - [[LXCで学ぶコンテナ入門 -軽量仮想化環境を実現する技術>http://gihyo.jp/admin/serial/01/linux_containers]] - &size(11){&color(gray){on http://gihyo.jp/admin/serial/01/linux_containers};}; - [[コンテナ技術入門 - 仮想化との違いを知り、要素技術を触って学ぼう>https://employment.en-japan.com/engineerhub/entry/2019/02/05/103000#Capability]] - &size(11){&color(gray){on https://employment.en-japan.com/engineerhub/entry/2019/02/05/103000#Capability};}; * 参考リンク [#v945fd38] ** Docker [#nae27ce5] - [[Docker公式>https://www.docker.com]] - &size(11){&color(gray){on https://www.docker.com};}; - [[docs.docker.jp>https://github.com/zembutsu/docs.docker.jp]] - &size(11){&color(gray){on https://github.com/zembutsu/docs.docker.jp};}; - [[docker/cli>https://github.com/docker/cli]] - &size(11){&color(gray){on https://github.com/docker/cli};}; - [[忙しい人の5分で分かるDocker 2017年春Ver>https://www.slideshare.net/zembutsu/5-minuts-docker-2017]] - &size(11){&color(gray){on https://www.slideshare.net/zembutsu/5-minuts-docker-2017};}; - [[Docker技術入門>https://blog.tiqwab.com/2017/02/18/docker-technology.html]] - - &size(11){&color(gray){on https://blog.tiqwab.com/2017/02/18/docker-technology.html};}; ** Moby [#ee2efb8a] - [[The Moby Project>https://github.com/moby/moby]] - &size(11){&color(gray){on https://github.com/moby/moby};}; - [[Moby Project>https://www.slideshare.net/snaga/oracledockerize?next_slideshow=1]] - &size(11){&color(gray){on https://www.slideshare.net/snaga/oracledockerize?next_slideshow=1};}; ** Linux MAN [#g3e28fe4] - namespace -- [[unshare>https://linuxjm.osdn.jp/html/LDP_man-pages/man2/unshare.2.html]] - &size(11){&color(gray){on https://linuxjm.osdn.jp/html/LDP_man-pages/man2/unshare.2.html};}; -- http://www.usupi.org/sysad/260.html - [[croups>http://man7.org/linux/man-pages/man7/cgroups.7.html]] - &size(11){&color(gray){on http://man7.org/linux/man-pages/man7/cgroups.7.html};}; - Overlayfs -- https://wiki.archlinux.jp/index.php/Overlayfs -- https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt