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 メモリから起動
- insert usb disk.
- power on
- 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 | ボリュームのマウント |