non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

Docker

関連記事

コンテナ間の連携

Postgresqlの公式のイメージとかをコンテナ間の連携を使って使うことが出来る模様。

関連オプション

--link

連携したいコンテナ名:エイリアス名

コンテナ内に連携したいコンテナのポート番号やIPをもった環境変数が現れる

Link

ファイルの共有

この仕掛けを使うことで、boot2dockerな環境で、boot2dockerの自作を頑張らずに、Dockerらしいファイル共有が出来る模様。

用語

関連オプション

-v ボリューム名

ボリューム名の例 /data1,/var/data1

--volumes-from コンテナ名

事前に作ったコンテナのボリュームを同じ場所にマウントする感じの動き。

Link

Dockerfileを作ったら

sudo docker build -t mygodevenv .
sudo docker run -i -t mygodevenv

コンテナをファイルに落とす

ただし、同一ホスト内でしか有効でないとの記事もあり、バックアップ方法の確立も課題かも。

docker ps
docker export 0123456789 > img.tar
cat img.tar |docker import - hoge:test

ネットワーク

dockerコマンドで立ち上げたやつに外から繋ぎに行くには

dockerコマンドで立ち上げたやつからホストに繋ぎに行くには

  • Dockerのコンテナ内からはとくに意識することなく外界にアクセスできる。
  • 特段の設定なしで、ホストがローカルIPでもこれを指定することで、例えば、ホストのHTTPサーバー等へアクセス可能
  • Dockerコンテナ内のifcoonfigで出てくるIPアドレスからのアクセスになる
    • OSXの場合、boot2dockerかましているので、ホストにSshしたら、ホスト自身のローカルIPアドレスからのアクセスと見える(last|headで確認)

一般教養

nsenter

イメージ

コンテナ

なんかの単位らしいことはわかるDockerfileで作られるのが1コンテナ?

=>

Dockerfileの1行ごとにコンテナとコンテナIDが作られ、コンテナは親からの差分を保存

Dockerfile

どこに書けばいいか

OSXの場合、ローカルの適当な空の作業ディレクトリを用意してそこに記述すればよかった。「-v」はOSX上で使えないくせにADDは問題なく使え、ローカルファイルのイメージへの追加は行える。

Dockerfileとは

OSのスクラッチイメージからアプリが動くまでを書いたコード

Ubuntuのsshdでめんどくさいからrootでssh出来るようにするには

以下で出来た(やや冗長な気がするけど、実績重視でw)

RUN apt-get install -y openssh-server
RUN /etc/init.d/ssh start
RUN /etc/init.d/ssh stop

# sshdの設定ファイルのカスタマイズ
RUN sed -ri 's/PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config

# rootのパスワード設定
ENV ROOTPASSWORD ninix123
RUN echo "root:${ROOTPASSWORD}" |chpasswd

# sshdを動かす

CMD /usr/sbin/sshd -D
EXPOSE 22

OSX編

アップデートどうやんの?

./boot2docker stop
./boot2docker download
./boot2docker start

これで少なくとも boot2docker、docker本体はアップデートできそうな気配だが、OSX内のdockerコマンドはどうなんだろか?

やりたいこと

LinuxのホストでもOSXみたいにsudo付けずに動かすやり方

dockerグループにsudoしたくないアカウントを追加すれば良い

sudo gpasswd -a ユーザーID docker

Ubuntuのデスクトップにログイン済みの場合、一旦ログアウトして、入りなおすとdockerコマンドがsudoなしで使えるようになる

Link

関連Gist

Link