Nuc(D54250WYKH)に CoreOS をインストールし、Docker を触る

CoreOS インストール

ISO イメージダウンロード

CoreOS ISO イメージを ここ からダウンロード
または、以下コマンドで取得

$ curl -o core-os.iso http://alpha.release.core-os.net/amd64-usr/current/coreos_production_iso_image.iso?__hstc=112362075.27b09ada9633d5c4e4307490970e61ed.1421419603585.1421419603585.1421419603585.1&__hssc=112362075.1.1421419603585&__hsfp=4136096990

USB 起動ディスクの作成

Mac OS からUSB起動ディスク作成を行う場合は、以下コマンドで、ISO イメージを変換

$ hdiutil convert -format UDRW -o out.img coreos_production_iso_image.iso

Mac 上の認識デバイスIDを確認

$ diskutil list

USB アンマウント

$ diskutil unmountDisk /dev/disk2

イメージ書き込み

$ sudo dd if=out.img.dmg of=/dev/disk2 bs=1m

USB 取り出し

$ diskutil eject /dev/disk2

CoreOS を Nuc で起動

USB メモリから起動

  1. insert usb disk.
  2. power on
  3. F10 連打!

起動した CoreOS の設定

パスワード変更

$ sudo passwd core
  =>2回入力

IPAddress 確認

$ ifconfig

SSH 接続し以降、外部から実行

Mac から以下コマンドで接続

$ ssh core@192.168.XX.XX

ルートユーザへ

$ sudo su

GPTパーティションテーブルの削除(全初期化(HDDにパーティションがある場合など))

LinuxでMBR/GPTパーティションを持つディスクを完全に初期化するには
を参考に
以下コマンドで全て消えてしまうので注意

# sgdisk -Z /dev/sda

Cloud Config ファイル作成

# vi cloud-config.yml

ファイル内容は以下(接続するクライアントで、公開鍵を作成しておくこと)

#cloud-config

hostname: coreos
coreos:
  update:
    group: stable
    reboot-strategy: best-effort

users:
  - name: core
    ssh_authorized_keys:
      - ssh-rsa AAAAB3Nz...
    groups:
      - sudo
      - docker

write_files:
  - path: /etc/systemd/network/static.network
    permissions: 0644
    content: |
      [Match]
      Name=eno*
      [Network]
      Address=192.168.24.5/24
      Gateway=192.168.24.1
      DNS=192.168.24.1

インストール後も下記ファイルを修正し、再起動することで編集可能

/var/lib/coreos-install/user_data

インストール

作成した Config ファイルを指定し、 CoreOS を HDD へインストール

# coreos-install -d /dev/sda -C stable -c cloud-config.yml
  • -d : インストール先ディスクを指定
  • -C : インストールチャンネルオプション指定
  • -c : cloud config ファイルを指定

再起動
(再起動後、SSH接続のみでしかログインできなくなる為、実行には注意)

# reboot

Docker コマンド色々

Docker Hub からイメージを検索

$ docker search ubuntu

Docker Hub からイメージを Pull

$ docker pull ubuntu

ローカルに保持しているイメージファイルを一覧表示

$ docker images

任意のイメージ詳細情報表示

$ docker inspect REPOGITORY:TAG

任意のイメージ削除

$ docker rmi REPOGITORY:TAG

ubuntu の latest バージョンで コンテナを作成、起動し、bash を起動する

$ docker run -it ubuntu:latest /bin/bash
# exit で bash を終了する

データコンテナを作成

$ docker run -i -t -v /opt --name data busybox /bin/sh

データコンテナを使用したコンテナを作成

$ docker run -t -i --volumes-from data ubuntu /bin/bash
  • -d:バックグラウンドで実行する。
  • -i:コンテナの標準入力を開く。/bin/bashなどでコンテナを操作する際に指定。
  • -t:tty(端末デバイス)を確保する。/bin/bashなどでコンテナを操作する際に指定。
  • -p [ホストのポート番号]:[コンテナのポート番号]:ホストとコンテナのポートマッピング。
  • -v [ホストのディレクトリ]:[コンテナのディレクトリ]:ホストとコンテナのディレクトリ共有。

起動中のコンテナを表示する

$ docker ps -a
  • -a 停止中のコンテナも表示する

コンテナを起動する

$ docker start [container id]

コンテナを停止する

$ docker stop [container id]

コンテナを再起動する

$ docker restart [container id]

起動中のコンテナに接続する

$ docker attach [container id]
  • コンテナから抜けてコンテナを終了する場合は、Ctrl + d
  • コンテナから detach する場合は、Ctrl + p → Ctrl + q または exit 入力

コンテナ内のファイルをホストにコピーする

$ docker cp [container id]:/path/to/the/copy/file .

コンテナを削除する

$ dockr rm [container id]

dockerコンテナを全て削除

$ docker rm `docker ps -a -q`

コンテナのログを表示する

$ docker logs [container id]

コンテナのプロセスを表示する

$ docker top [container id]

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

$ docker run -itd ubuntu /bin/bash
$ docker commit -m "Commit Message" [container id] [user name]/[image name]

Dockerfileからイメージを作成する

$ vim Dockerfile # Docker file を作成する
$ docker build [user name]/[image name] .

Docker File 命令

命令用途
FROM元となるDockerイメージの指定
MAINTAINER作成者の情報
RUNコマンドの実行
ADDファイル/ディレクトリの追加
CMDコンテナーの実行コマンド 1
ENTRYPOINTコンテナーの実行コマンド 2
WORKDIR作業ディレクトリの指定
ENV環境変数の指定
USER実行ユーザーの指定
EXPOSEポートのエクスポート
VOLUMEボリュームのマウント