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

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

ただいまの
回答率

90.48%

  • Ubuntu

    1480questions

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

  • Docker

    765questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 662

 問題

あるフレームワーク(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やデュアルーブート再構築以外にも上記のようなことをするためのいい方法がありますか?

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+3

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/17 18:25

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

    キャンセル

  • 2018/05/18 12:31

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

    キャンセル

checkベストアンサー

+2

 短い回答

できます。しかし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 15: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

    キャンセル

  • 2018/05/16 15:18

    VirtualBox はホスト型です。

    キャンセル

  • 2018/05/16 15:42

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

    キャンセル

  • 2018/05/17 18:32

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

    キャンセル

  • 2018/05/18 11:10

    はい。その解釈で間違い無いです。

    必要があれば別々のバージョンのUbuntuで構成されたコンテナを作ることも可能です。

    キャンセル

  • 2018/05/18 14:36

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

    キャンセル

関連した質問

同じタグがついた質問を見る

  • Ubuntu

    1480questions

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

  • Docker

    765questions

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