質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

993閲覧

このようなことはDockerで可能でしょうか?

anytimeanywhere

総合スコア11

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

2クリップ

投稿2018/05/16 04:29

編集2018/05/16 04:41

問題

あるフレームワーク(ROS Kinetic Kame)をUbuntu 18.04に入れようと思ったのですが、Ubuntu 16.04までしかサポートされていませんでした。
現在Ubuntuはwindows 10とデュアルブートしているので、一旦パーティションを削除してまた16.04でデュアルブートし直そうとも考えたのですが、Dockerのうわさを小耳に挟んだことがあり、もしかしたらDockerを使えば現在の環境をなくすことなくUbuntu 16.04を使えるのでは
と思い、質問させていただきました。

つまり 

Dockerとはどのような仕組みでしょうか?
Dockerを使えば一つのPCの中に、違うverのOSを搭載したPCを作り出せますか?
またはDockerやデュアルーブート再構築以外にも上記のようなことをするためのいい方法がありますか?

初歩的すぎる質問で申し訳ありません。 
ご教授くださると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Dockerを使えば一つのPCの中に、違うverのOSを搭載したPCを作り出せますか?

厳密に言えばちょっと違いますが、(利用者側の視点としては)概ねそんなところです。
仕組み上オーバーヘッドが小さい事が特徴で、
違うOSというよりはもっと贅沢に1つの仮想マシンで1プロセスだけ動かす文化があります。

参考資料: DockerのベースイメージがホストOSと違ってもいいのはなぜ?

  • Linuxのバイナリは基本的にELFで統一されるのでディストリビューションをまたいでも問題なし
  • CPUの種類が違うと無理、しかしDockerは元々x86-64専用で、ARM等の他CPU用のイメージは2017/09にようやく実装実装された
  • ディストリビューションが違う場合、ライブラリのバージョン等が異なり詰むケースがある

このように、Linuxはディレクトリ構成やライブラリの内容が同じであればディストリビューションが違うネイティブのファイルを動作させることが可能です。
この仕組みを利用して仮想的なHDD・ネットワーク・環境変数だけ用意して、別プロセスとして走らせる仮想マシンがDockerです。

オーバーヘッドの小さい別プロセスなので、思想は1アプリ・もしくは1デーモンが基本です。
ROSインストール済みのコンテナは…それらしい名称でros.orgからパッケージをダウンロードするイメージを見つけました。
official ros - Docker Hub ← これですか?

またはDockerやデュアルーブート再構築以外にも上記のようなことをするためのいい方法がありますか?

Windows10なら全てのエディションでWSLが使えるはずです。
これでUbuntuを動かせば、多少オーバーヘッドがあるかもしれませんが解決出来るかもしれませんね。

因みにWindowsにもDocker for Windowsがあり、
準仮想化の高速軽量なLinuxマシンを動かし、Dockerコマンドを注入するソフトが公式から配布されています。
ただし、Windows10の準仮想化技術(Hyper-V)はProfessional版でしか利用出来ませんので、ご注意ください。

因みに、WSLとDockerのあわせ技なんかも利用されてるとか…?
試したこと無いので使えるかどうかは分かりませんがリンクだけ残しておきます。
WSL(Bash on Windows)でDockerを使用する - Qiita

投稿2018/05/16 05:56

編集2018/05/16 06:24
miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anytimeanywhere

2018/05/17 09:25

返信遅れまして申し訳ありません。 まだよくわかっていないのですが、現在のUbuntu 18.04を起動した状態で、Ubuntu 16.04にしか対応していないフレームワークはDockerのひとつのコンテナ上で動かせるのでしょうか? もし動かせるとしたら、どのようなステップを踏む必要がありますか?  考えが至らず申し訳ありません。 ご教授いただけると幸いです。
miyabi-sun

2018/05/18 03:31

明らかに読んでません宣言されて困った…
guest

0

ベストアンサー

短い回答

できます。しかしWindowsであればWSL(Windows Subsystem Linux)を使うと良いと思います。

tl;dr (誤解と偏見を大量に含んだ解説)

仮想化の手法の一つとしてコンテナ型仮想化というものがあり、その実装のひとつとしてDockerがあります。

また、もう一つ主な手法として、ハイパーバイザー型というものがあります。VirtualBoxやHyper-V、VMWareがそれにあたると思います。

コンテナ型

コンテナ型ではどのように仮想化しているかといいますと、カーネル(OSのベースとなる部分)は共通のものを使い、そこから上の環境構成は隔離して稼動させて、あたかも全く別のマシンが動いているように動かすアプローチです。

ハイパーバイザー型

対してこちらは「コンピューターそのものをコンピューターの中で再現して仮想化しよう」というアプローチです。

こちらはコンピューターそのものを再現しているので、違うカーネルでも問題なく動きます。

WindowsとUbuntu(Linux)のカーネルは違うのに、DockerやWSLなぜ動く?

ここで考えるとややこしい話をしますが、Windows環境でコンテナ仮想環境のLinuxが動作するのは不思議ですね。

さて、WindowsのDockerでは、どうやってコンテナ仮想化を実現しているかといいますと、
Windows上のVirtualBoxにLinux環境を構築し、その上で各種OSを動かすというアプローチをしていたかと記憶しています。

まとめ - WindowsでLinux使いたいなら、WSLがいいのでは?

ということで、Windowsでは昨今のLinuxの需要を反映してか、WSLという機能を提供しはじめました。

おそらくWSLが比較的「Windowsの中で軽量なLinux環境を構築する」という目的には合っていると思います。

以上、長文・乱文失礼いたします。参考になれば幸いです。

投稿2018/05/16 05:30

manzyun

総合スコア2244

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi-sun

2018/05/16 06:01

> Windows上のVirtualBoxにLinux環境を構築 2015年までは主にこの方式で、 docker machineやboot2dockerなんかを使って立ち上げると内部的にはVirtualBoxを利用していました。 2016年7月頃にDocker for Windows(もしくはMac)正式版がリリースされています。 これは準仮想化技術を使って立ち上げられた軽量高速なLinuxマシンに、Dockerコマンドを注入する形で利用します。 最近はこちらの方が主になっていると思います。 後は、WindowsのWSLにDockerをインストールして使う方法がちらほら出てますね。 https://qiita.com/yoichiwo7/items/0b2aaa3a8c26ce8e87fe
over

2018/05/16 06:18

VirtualBox はホスト型です。
manzyun

2018/05/16 06:42

みなさまご指摘ありがとうございます!
anytimeanywhere

2018/05/17 09:32

返信遅れまして申し訳ありません。 回答ありがとうございます。 WSLは自分のWindowsにも入っていますが、今回はUbuntuというOSをそのまま使ってみたいという願望もあり、このように質問させていただきました。 そこでもしDockerを使うとしたら、manzyunさんの回答はコンテナごとにUbuntuの異なるバージョンを選んで使うことは可能だということでよろしいでしょうか?
manzyun

2018/05/18 02:10

はい。その解釈で間違い無いです。 必要があれば別々のバージョンのUbuntuで構成されたコンテナを作ることも可能です。
anytimeanywhere

2018/05/18 05:36

わかりました。 manzyunさんのおかげで一歩先に進めます。 回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問