問題
あるフレームワーク(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ページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答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総合スコア21400
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
総合スコア2244
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/16 06:18

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/17 09:25
2018/05/18 03:31