LoginSignup
2
2

More than 5 years have passed since last update.

docker dotinstallでやったことメモ

Last updated at Posted at 2019-03-15

前提として

dockerとは

  • 軽量な仮想環境
  • OSのカーネル部はホストOSのを使用する。軽量な理由でもある。
  • Vagrantとかと比べると流石に比較にならないぐらいめっちゃ軽く感じる。
  • 基本的にLinux系のカーネルを使用しないと動かない。
  • docker for macがない場合はvagrantのゲストOSにLinuxたててその中でdockerを動かすとかやるっぽい。
  • じゃあなんでdocker for mac使うと動くの?
    docker for macは「HyperKit」という軽量な仮想化ツールを使って後ろでこっそりLinuxをたててるらしい。
    一見macでも動いてるように思われるが基本的にLinuxがどっかに立ってないと使えないみたい。
  • もちろんwindowsでも動かない。がmac同様にDocker for Windowsなるものがあるとのこと。
  • Docker Toolboxというツールが以前は主流だったらしい。Vagrantの設定とかいろいろめんどくさいらしい。

環境

  • 前提:macでやる  windowsは知らないけどリファレンス見れば1発だと思う。
  • 方法1:Ubuntu(vagrant) <- docker
  • 方法2:docker for mac ##今回はこれを使う

用語

  • イメージ
    OS環境とかアプリケーションを含んだテンプレートイメージ。これを作ったり、流用することでどこでも割と簡単に色々構築できる。

  • コンテナ
    イメージを元に、コンテナを作る
    分離された名前空間とアプリケーションの実行環境。

  • レジストリ
    gitと考えはほぼ同じ。リモートレポジトリとローカルレポジトリがあって、自分でdockerhubなどにレポジトリ作ってイメージとかをpullしたりpushしたりできる。
    イメージを保存できる。

超基本:イメージの検索からコンテナを立てるまで

イメージの検索

docker search centos

リモートにあるイメージをローカルレポジトリに保管

docker pull centos

ローカルにあるレポジトリ一覧

docker images

ローカルイメージの削除

docker rmi 名前:タグ名 or ID
docker rmi centos:latest

イメージから起動実行

docker run centos echo 'hello!'

実行中のコンテナ:プロセスの確認

docker ps

全てのコンテナ確認(実行中でないものも)
exit 0は正常終了と意味。

docker ps -a
docker ps -a -n=5

コンテナの削除

docker rm コンテナID

バックグランドで起動(デタッチド・モード)

docker run -d centos free -s 3

logの確認

docker logs コンテナID

デタッチドではない通常モードにプロセスも戻す

docker attach --sig-proxy=false コンテナID

コンテナの停止

docker kill ID
docker stop ID

コンテナの再起動

docker start ID

imageを作ってみる

ターミナルを開く
-i はインタラクティブモード(対話的なモード)
-tはターミナルを開く

docker run -i -t centos /bin/bash

適当にファイル作って抜ける

touch hello.txt
exit

コンテナからイメージを作る

docker commit id user名/イメージ名
docker images

イメージからコンテナをたてて、そこからイメージを作るような手順を自動化する。

Dockerfileがスクリプトファイルになる。

vi Dockerfile
##FROM: どのイメージファイルを元にするか
FROM centos
##MAINTAINER: 作成者名をつける
MAINTAINER MYUZIN <email@sample.com>
## RUN: buildするときに実行される
RUN echo "now building..."
## CMD: runするときに実行される
## CMD echo "now running" ※以下の書き方が推奨されてる
CMD ["echo","now running"]

Dockerfileを元にビルド

docker build -t 作成イメージ名 dockerfileパス
docker build -t MYUZIN/echo .

レポジトリにMYUZIN/echoが追加されてることが確認できる。

ビルドしたイメージからコンテナを走らせる

docker run MYUZIN/echo
=>now running

簡単にwebサーバーを作る

vim Dockerfile
FROM centos:6
MAINTAINER yamada tarou <sample@.example.com>
RUN yum install -y httpd
#ADD コピーファイル イメージ内のコピー先path
ADD ./index.html /var/www/html/
#EXPOSE ポートの開放
EXPOSE 80
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
vim index.html
index.html
<html>
  hello! docker!!
</html>
docker build -t MYUZIN/httpd .
docker run -p 8080:80 -d MYUZIN/httpd

localhost:8080に接続するとhello! docker!!と表示される。

imageをリモートリポジトリにプッシュする

※注意:image名のnamespaceはdockerhubと同様の名前にしておくこと。

dockerhubにアカウントを作る
githubのdocker版と考えてくれればOK
https://hub.docker.com/

Docker レジストリ・サーバに登録,ログインする
dockerのレジストリサーバを登録およびログインを行う。
URL指定がなかったら自動でdockerhubになる

docker login 

イメージをプッシュする

docker push MYUZIN/httpd

参考

docker for macについてわかりやすく書いくださってます。
https://qiita.com/nogizaka46/items/c48728d6c640a3e9d6aa
https://qiita.com/kmagai/items/a5023bcbae5ae9f4b046

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2