MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

初心者のためのDockerの使い方メモ

目次

はじめに

近年、効率的なソフトウェア開発において、

Dockerは広く使われています。

 

今回は、Docker初心者の自分が、

一からDockerを勉強した際のメモです。

 

自分の場合、冒頭の本を一冊読んでから、

あとは自分のやりたいことをネットで

調べながらDockerを勉強しました。

この本は、初心者にもかなりわかりやすく説明していると思います。

 

Dockerとは?

Dockerは、Virtual BoxやParallelsなどのような、

VMを作成するソフトウェアの一つですが、

Linuxのコンテナ技術を使って、

VMを軽量で高速に起動、停止などを可能にしたものです。

www.docker.com

つまり、

より気軽にVMを使えるようにしたツールであるといえます。

 

VMを使うことで、開発環境の管理や、

他のプラットフォーム上での実行がしやすくなります。

 

たとえば、自分のコンピュータで作成したアプリケーションを

他のコンピュータで動かしたい場合、

OSとライブラリ、そしてアプリケーションのファイルを

すべて一つのdockerイメージにまとめ、

それをコピーしてdocker上で起動すれば、

自分のアプリケーションを、

他のコンピュータやクラウド上で動かすことができます。

 

大抵の場合、

まずはじめに環境を立ち上げたり、

その環境のソフトウェアやOSのバージョンを合わせるのに

非常に時間がかかるため、Dockerを使うことで、

このようなことに悩む時間を短くすることができます。

 

各OSにおけるDockerのインストール

Mac

Windows10

下記ページ通りに、Windows10のコンパネからHyper-VをONして、

Windows版のdockerをインストールすればOK。

 

docker逆引き表

よく調べ直しているコマンドをまとめておきます。

やりたいこと コマンド
現在のディレクトリ内のDockerfileからDockerイメージを作る docker build -t imagegroup/imagename:0.1 .
イメージのリストを表示 docker images
使用していないイメージを削除 docker rmi
コンテナのバックグラウンド起動 docker container run -d examle/examle:latest
名前付きコンテナの起動 docker container run -t -d --name test_container example/example: latest
コンテナのリスト表示 docker container ls
起動したら削除するコンテナの起動 docker container run -rm example/example
コンテナの一時停止 docker container stop container_ID
コンテナの再実行 docker container restart container_ID
コンテナの削除 docker container rm container_ID
コンテナ内にbashで入る docker container exec -it container_ID bash
コンテナ内からファイルをコピーする docker container cp example:/example/data.txt ./
すべてのコンテナを停止 docker stop $(docker ps -aq)
すべての止まっているコンテナを削除 docker rm $(docker ps -aq)
不要なファイルの削除 docker system prune

 

 

Dockerfileメモ

  • RUNはdocker buildされる時に実行されるコマンド

  • CMDはdocker runされる時に実行されるコマンド

しかし、CMDでWebサーバなどを立ち上げると、

Ctrl+Cが効かないため、

そのような場合はENTRYPOINTを使うと良い。

 

Docker compose

yaml形式の設定ファイルを使った、複数のコンテナ実行方法です。

複数のコンテナを起動して、協調して動くようなアプリを作ることができます。

このような作業をより大規模化し、それぞれの死活管理などを実施するライブラリが

Googleのkubernetesです。

kubernetes.io

 

docker上でJuliaを使う

最新の安定版のJuliaをdockerで起動し、REPLを使う

$ docker run -it --rm julia

ローカルのスクリプトをdocker内で動かす

$ docker run -it --rm -v "$PWD":/usr/myapp -w /usr/myapp julia julia hello_world.jl

指定したバージョンのjuliaをdockerで起動し、REPLを起動する

0.6の場合

$ docker run -it --rm julia:0.6

指定したバージョンのjuliaでローカルのスクリプトを動かす

$ docker run -it --rm -v "$PWD":/usr/myapp -w /usr/myapp julia:0.6 julia hello_world.jl

 

手渡しでdocker imageを渡す方法

Dockerのイメージは

Docker Hubにアップロードして共有する方法が一般的ですが、

下記のコマンドでdocker imageをtarで固めて

$ docker save IMAGE > image.tar

下記のコマンドでdocker imageを読み込むようにすれば、

$ docker load < image.tar

tarファイルを手渡しすることで、

Dockerイメージを共有できます。

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com