Freelance Orgsin Official Site

ごゆっくりしていって下さい

【Docker編】導入は簡単。仮想環境を常に使って開発しよう

初めに

 Dockerは、Vagrant一択だった開発環境から選択の幅を増やしてくれました。どちらも仮想化という分野ではありますが、Vagrantは完全仮想化を行うのに対し、Dockerはコンテナ型の仮想化を行います。

 双方利点、欠点はありますが、これからはDockerを使う事が多くなってくるのではないでしょうか。その理由としては、インスタンス起動の速さ、コンピュータの性能が挙げられます。

  • 公式です。

www.docker.com

  • Oreillyの本も登場していますね。

Docker

Docker

  • 作者: Adrian Mouat,Sky株式会社玉川竜司
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/08/17
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

Dockerを使ってみる

今回は、MacOSでDockerを使います。1年前のマイナーバージョン時に比べ、今や導入の敷居が大分下がっております。MacOSのDockerアプリケーション以外の使い方を求める方はこの記事は参考になりません。

  • 公式にアクセスします
  • Download Docker for Macを押下するとdmgファイルをダウンロードできます
  • 一般的なアプリケーションと同じようにダウンロードしたdmgファイルを開き、アプリケーションに移動させます。

完了です。はい、非常に簡単にインストールが完了しました。ではここからは実際に使ってみましょう。

# Dockerのバージョンを表示
docker version 
# Dockerのイメージを表示
docker images
# Dockerのプロセスを表示(-aにより、停止中のプロセスも表示)
docker ps 

アジェンダ

今回は、Dockerfileから作るやり方と、DockerHubから使うやり方の2点を紹介します。文法や、複雑なコマンド、使い方はドキュメントを読んだほうがわかりやすいと思います。

Dockerfileから作る

この流れは、Vagrantユーザなら馴染みが深いでしょう。簡単なコードで冪等性を保つことができ、常に同じ環境を作り出すことが出来ます。

まずは、適当なフォルダに以下のコードをDockerfileで保存します。
# CentOSの最新バージョンをベースに作りましょう。別にubuntuでも構いません。
FROM centos:latest

# yumを最新バージョンにし、zshをインストールしましょう。
RUN yum -y update
RUN yum -y install zsh

# sshログインした状態でzshを起動します。
WORKDIR /root
CMD ["/bin/zsh"]
次に実際にDockerを使いましょう。
  • 少し時間はかかりますが、これでDockerfileからコンテナを作り出します(0)。イメージにzsh-only(1)、プロセスには、停止中のプロセス(2)があると思います。
  • ログイン後、一度exitで抜けた後、もう一度起動してみます。
    • まず、イメージからコンテナを起動(3)
    • 次に、その起動コンテナに入ります(4)
    • CONTAINER IDは該当の英数字(ex. 1b81c02c42bd)を入れて下さいね。
  • zshがインストールされていれば完成です。
# イメージ作成(0)
docker build -t zsh-only . 
# イメージを表示(1)
docker images 
# REPOSITORY TAG IMAGE ID CREATED SIZE
# zsh-only latest 3fa1728bc155 4 seconds ago 470.4 MB

# コンテナを起動しログインする(※エラーになった場合Aを)
docker run -it zsh-only 
# ログインしたら一度exitで抜ける

# プロセス(2)
docker ps -a 
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 1b81c02c42bd zsh-only "/bin/zsh" 3 minutes ago Exited (127) About a minute ago happy_mirzakhani

# 該当コンテナを起動(3)
docker start {CONTAINER ID} 
# 起動中コンテナに入る(4)
docker attach {CONTAINER ID} 
Aエラーになった場合

the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty' このようなメッセージはCygwin等の問題であったりするので素直にWindowsユーザはコマンドプロンプトから動作を行いましょう。

DockerHubから使う

  • これは非常に簡単で、コマンド検索可能ですが、DockerHubのサイトからも探すことが出来ます。
    • 例えば、NginxならDocker Pull Commandからdocker pull nginxをコンソールでタイプするだけです。
  • 使い方は起動して、中に入るだけです。
では、実際にやってみましょうか。

試しに作ってみたpython3環境でやってみましょう。少し時間はかかります。

# イメージをpullします
docker pull orgsin/python3:ver1.0.1
# pullしたイメージを表示
docker images 
# REPOSITORY TAG IMAGE ID CREATED SIZE
# orgsin/python3 ver1.0.1 695deda7f666 About an hour ago 1.306 GB

# 起動して中に入る
docker run -it orgsin/python3:ver1.0.1 
# exitして抜けたら、再度起動するやり方はDockerfileからと同じです

# 停止中のコンテナを表示
docker ps -a 
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# d2a68d285f05 orgsin/python3:ver1.0.1 "/bin/zsh" 17 seconds ago Exited (0) 2 seconds ago furious_bassi

# 停止中コンテナを起動
docker start d2a68d285f05 
# 起動中コンテナに入る
docker attach d2a68d285f05 

以上で、Dockerの使い方を終了します。詳しくは、Documentsを参考にして下さい。

免責事項

  • 広告は、「外部広告」や、ヘッダ、あるいはフッタにのみ表示しております。
  • 掲載された情報の内容の正確性については一切保証しません。
  • 当サイトに掲載された情報・資料を利用、使用、ダウンロードするなどの行為に関連して生じたあらゆる損害等についても、理由の如何に関わらず、当サイト管理者は一切責任を負いません。
  • 当記事は、予告なく更新され、削除される可能性があります。