Dockerを触ってみたメモ(書きかけ)

よく使うコマンド集

  • Dockerイメージからコンテナを作成する $ docker create {image名}

    • コンテナの中にスナップショット1を作成
    • コンテナの起動はせず、あくまでコンテナを作るだけ。
  • Dockerイメージを起動する $ docker run {image名}

    • 結局 create してから start してるだけ
  • Dockerコンテナを起動する $ docker start

    • 既存のコンテナを起動するので、以前使っていたスナップショットを読み込む
  • 実行中のコンテナを終了する $ docker stop

    • スナップショットを作り直す(上書きする)
  • コンテナの一覧を見る

$ docker ps [-a]
  • 実行中のコンテナの一覧を取得する
  • aオプションをつけると作ったコンテナ全てを取得

  • イメージの一覧を取得 $ docker images

  • コンテナを削除する $ docker rm {コンテナを指定}

  • イメージを削除する $ docker rmi {イメージの指定}

Docker run オプション

$ docker run {オプション} {イメージの指定} {引数}
  • 基本
オプション(略) オプション 内容
-a --attach = [STDIN, STDOUT, STDERR] 標準入力, 出力, エラー出力にアタッチする
-d --detach = false バックグラウンドで実行
-i --interactive = false コンテナの標準入力を開く
-t --tty = false tty(ターミナルを開く)
--name {string} 作るコンテナの名前を指定する
--rm 実行後、コンテナを削除する
  • ネットワーク関連
オプション(略) オプション 内容
-p {ホストのポート番号}:{コンテナ内のポート番号} ホストとコンテナ内のポート番号の割り当て
--add-host = {ホスト名}:{ポート番号} コンテナ内の/etc/hotsに定義する

メモ

  1. スナップショット
    • コンテナ内で作業し、変更があったファイル群
    • centosとかだと/var/とかのフォルダをまとめてコピーした感じ。

Docker volumeを調べたメモ

完全にメモ書きになってるのでEvernoteにでも書けよって感じ。

Dockerはコンテナ型仮想化システムで、必要な時に必要なだけコンテナを作り、終わったら捨てる。いわば使い捨てだ。でも、消えて欲しくないデータを扱う事もあるだろう。そんな話。

自分はインフラエンジニアではないし、Dockerでホストの環境弄らずに開発環境作りたかったから始めたっていう理由

Dockerコンテナは使い捨てるもの→残したいファイルはコンテの外に保存しておこうっていう考えらしい。

Docker の volumeにも色々ある

  • docker runの-vオプション $ Docker run -v /hoge centos:latest centosのlatest(最新版)を起動するコマンドである。この時-vオプションを使ってコンテナ内に/hogeという名前のシンボリックリングを作成し、フォルダの実体は/var/lib/docker/volumes/{ランダムな英数字}/_data/にある。このフォルダはdockerがコンテナと連動させて管理しているため、docker コンテナを消せばこのフォルダも消えます。 説明のため、コマンドは一部省略しています

この時、内部では 1. ホストに実体のフォルダを作る 2. イメージからコンテナをつくり動かす 3. ホストのフォルダへのリンクをコンテナに作る(上書く)

ってイメージらしい。

  • ホストのフォルダとコンテナのフォルダを同期する $ docker run -v {ホストのフォルダ(実体)}:{コンテナ内のリンク名} centos:latest このコマンドでホストのフォルダへのシンボリックリンクをコンテナ作成時に貼る。こうすれば、コンテナの設定を変えてリビルドしてもファイルは消えずに残る。 また、ホストにファイルがあるのでホストでエディターを開き、コンテナで開発環境を揃え実行できるので環境のバージョンを変えるのもイメージを差し替えるだけだし、ソースをホスト側でgit管理する事もできる。

後記

dockerfileやdocker-composeにも同様の機能があるので、もう少し検証したい

MBAのSerriaをクリーンインストールした時の手順メモ

自分用のメモ記事なので、参考程度にどうぞ。

環境

  • MacBookAir macOS Sierra 10.12.2
  • homebrew 1.1.5
  • homebrew-cask 1.1.5
  • mas 1.3.1
  • mackup 0.8.15

準備編

1. 必要なファイルを外部のストレージにコピー

  • homeディレクトリをそのままコピーしてしまえばある程度は安心
  • プッシュしていないGitプロジェクトはプロジェクトごとコピーしておけばブランチ構造ごとコピーできる
  • VirtualBoxのエクスポートツールでバックアップしてもいいし、面倒ならフォルダごとコピーして*.vboxファイルをあとでインポートすればOK

2. Dropboxをインストールし同期できるように設定しておく

  • インストール済みならばそれでOK

3. アプリの設定ファイルなどをバックアップ

$ brew install mackup
$ mackup backup
  • エクスポートしたファイル群はDropboxの共有フォルダにあるので、同期しておく
  • /Users/{ユーザー名}/Dropbox/Mackupが作られる

4. homebrwe, homebrew cask でコマンドでインストールしたアプリの一覧を取得する

$ cd ~/Dropbox/mac_backup
$ brew list >> brew_list.txt
$ brew cask list >> brew_cask_list.txt
  • Docker は別で再インストールしたほうがいい(Docker tool box)

5. AppStoreでからインストールしたアプリの一覧を取得する

$ cd ~/Dropbox/mac_backup
$ brew install mas
$ mas list >> mas_list.txt 

6. インストール一覧からシェルスクリプトを作る

macを引っ越す時にアプリを一括インストールするスクリプト

リストア編

1. xcodeをappstoreからインストール

2. xcodeを起動しxcode comand line toolをインストール

3. Homebrewをインストール

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

4. 1passwordをインストールする

$ brew cask install 1passwrod

  • caskは[brew cask]とコマンドを打つと気を利かせてhomebrewがインストールしてくれるので、自分でやる必要はない
  • 自分はiPhoneとも同期しているのでicloud同期で設定

5. Dropboxをインストールしファイルを同期する

$ brew cask install dropbox

6. mackupをインストールし、復元

$ brew install mackup $ mackup restore

7. 準備編(上記)で作ったシェルスクリプトを実行してbrew と cask系を一括インストール

$ cd /Users/{ユーザー名}/Dropbox/mac_backup
$ sudo sh brew-install-list.sh

8. atomエディタのアドオンと設定を復元

$ apm install atom-settings
[atom内のコマンドで(cmd+shift+p)] -> [sync-settings:restore]とタイプしEnter
  • apmコマンドが使えない場合は一度atomを起動し [Atom] -> [Install Shell Commands]を押しapmが使えるようにする。
  • 復元中に、gistのリストとパッケージの最新バージョンが違ったりすると警告が出るので、各自判断で手動ならインストールできます。
  • Settings > Packages を見るとatomの再起動が必要なパッケージはダウンロードされた時点で一時停止しているので、インストールを押してやればOKです。

9. Git系のセットアップ

  • gitはsourcetree内蔵ではなく、自分で入れたものを使っているのでbrew でインストール後Sourcetreeの設定でシステムのGitに切り替えます
  • GithubとBitbucketでログインする。2段階認証にどちらも対応してるのでアクセストークンをあれこれする必要はなく、IDとPWでログインして、携帯などで6桁の数字を確認して2段階認証しておきましょう
  • OuathかBasicで認証したりSSHキーを認証したりしておく。

後記

アプリのインストール管理はbrew-fileとやらでできるらしいので、もっと早く知りたかった。それと、1passwordってappstoreからだと7,800円するけど、caskなら試用版をメール認証なしでインストールできるっていう発見。

Homebrew Caskで特定のアプリがインストールできなくなった話

状況説明

かなり前からhomebrew caskを使うと。

$ brew cask list
Warning: The default Caskroom location has moved to /usr/local/Caskroom.

Please migrate your Casks to the new location and delete /opt/homebrew-cask/Caskroom,
or if you would like to keep your Caskroom at /opt/homebrew-cask/Caskroom, add the
following to your HOMEBREW_CASK_OPTS:

  --caskroom=/opt/homebrew-cask/Caskroom

For more details on each of those options, see https://github.com/caskroom/homebrew-cask/issues/21913.

こんなのが出てきていた。「caskのバージョンアップでアプリが配置されるディレクトリの場所が変わったから前の場所に置いてたアプリ新しいとこに移動してくれ」っていう話だった気がする、筆者は面倒だから移動しなくても使えるからやっていなかったが、dockerがうまくインストールできないので今更対応した。 やることは簡単、コンソールに書いてあるURLに書いている通りに進めるだけだが、しかし今回Thunderbirdが再インストールに失敗した。

$ brew cask install thunderbird-ja
==> Downloading https://download.mozilla.org/?product=thunderbird-45.4.0&os=osx&
Already downloaded: /Users/{username}/Library/Caches/Homebrew/Cask/thunderbird-ja--45.4.0.0&os=osx&lang=ja-JP-mac
==> Verifying checksum for Cask thunderbird-ja
fatal error

エラー吐いてインストールが止まってしまう。

対応

上のコンソールでAlready downloadってなってるから以前ダウンロードしてあるインストーラを使おうとしているのだが

$ cd /Users/{username}/Library/Caches/Homebrew/Cask/
No such file or directory

となる。ディレクトリ自体が無いので、移動時にどっかいった可能性が高い。そこで新しいファイルをダウンロードすればいいと思い$ brew cask install --force thunderbird-jaとしたもののやはりAlready downloadとなりダウンロードしてくれない。そこで最新バージョンではなくBetaを一旦インストールする。そしてキャッシュを消し、最新バージョンへアップグレードする。とうまくいった。 事前にcask versionsがインストールしてある場合は2つ目の$から始めてもらえばいいかと。

$ brew tap caskroom/versions
==> Tapping caskroom/versions
Cloning into '/usr/local/Homebrew/Library/Taps/caskroom/homebrew-versions'...
remote: Counting objects: 209, done.
remote: Compressing objects: 100% (207/207), done.
remote: Total 209 (delta 22), reused 15 (delta 0), pack-reused 0
Receiving objects: 100% (209/209), 76.51 KiB | 0 bytes/s, done.
Resolving deltas: 100% (22/22), done.
Checking connectivity... done.
Tapped 0 formulae (226 files, 276.3K)

$ brew cask install Thunderbird-beta
==> Downloading https://ftp.mozilla.org/pub/thunderbird/releases/50.0b2/mac/en-U
==> Verifying checksum for Cask thunderbird-beta
==> Moving App 'Thunderbird.app' to '/Applications/Thunderbird.app'
🍺  thunderbird-beta was successfully installed!

$ brew cask uninstall thunderbird-beta
==> Removing App: '/Applications/Thunderbird.app'

$ brew cask cleanup
==> Removing cached downloads
/Users/{username}/Library/Caches/Homebrew/Cask/thunderbird-beta--50.0b2.dmg
==> This operation has freed approximately 77.8M of disk space.

$ brew cask install thunderbird
==> Downloading https://ftp.mozilla.org/pub/thunderbird/releases/45.5.1/mac/ja-J
==> Verifying checksum for Cask thunderbird
==> Moving App 'Thunderbird.app' to '/Applications/Thunderbird.app'
🍺  thunderbird was successfully installed!

まとめ

brew caskのキャッシュ周りのことを理解しないで使っているので本当はもっといい解決策があるかもしれないが、今回はこれで収まったのでよしとする。 homebrewはオープンソースプロジェクトなのでGithubでどんなことやってるかは確認できるが、仕様変更なんかがあった時にエラー吐いてググって変更あったんだーってなることが多いので、もっと自己防衛のためにもアンテナ張ってなきゃな〜って思った。

AWSの学割は高校生に優しくない

事の発端

学校で課題研究の授業があって数人でグループを組んで自然言語処理の研究をしていたところ、VPSが必要になってどうしようと思ってたらGithub educationの中にAWSあったなーと思ってセットアップしてたらクレジットカード番号必須で詰んだ。 そんなこんなして、解決できたのでここにメモしておく。

高校生とクレカ

基本的に高校生はクレジットカードが作れない。クレジットカード会社の規定なのだからしょうがない。なら代わりになるものを使えばいいじゃないという考え。

デビッドカードを作る

日本の銀行などでは15歳以上(中学生を除く)でデビッドカードが作れる場合がある、このカードがあればクレジットカード同様にAWSにも登録できる。 クレジットカードと比べると利用できる金額など制限が多かったりしてちょっとしたネットショップとか登録だけなら十分かと

  • メリット
  • 高校生でも分割払いが利用できる場合もある。

  • デメリット

  • 銀行のカードというだけあって銀行口座の開設が必要。(すでに持っている場合は不要かも)
  • 入会料・年会費などが発生する場合もある

WebMoney Cardを作る。

WebMoney Cardはゲームとかする人なら見たことあるかも、コンビニなどでチャージや購入ができるプリペイドカードです。 クレジットじゃないじゃないかとか思うかもしれないが、このカード実はMasterCardとして利用できるのだ。私はこれでAWSなどのサービスに登録をした、しかもチャージなしで。

  • メリット
  • 年齢制限なし
  • 入会費・年会費必要なし
  • チャージするのでお金が財布から消えていくので使った感がある。

  • デメリット

  • クレジットカードではないので分割払いができない場合が多い。
  • 利用できる金額枠が少ない。

自分の場合は高校を卒業するまでの仮として使いたいだけだったのでWebmoneyカードを作った。

はてなブログを初めてみた

そろそろ自分の知識のアウトプットの場を作ろうと思って始めたけど、多分備忘録とかになる気がする。

多分技術的なことが中心になるから最初はQiitaに書こうか迷ったけど、趣味のこととかも書きたいからはてブにしてみた。

暇なときに更新するはず、飽きなければ。

次回はどうしようかな、課題研究のsentiment analysisネタか舞台照明ネタ書きます、多分。
ではこの辺で。