流行り物に触れてみた。
みなさまのアウトプットに支えられてのまとめのようなもの。
感謝です。
成果物
- https://registry.hub.docker.com/u/ume3/docker-ubuntu-monit-log/dockerfile/
- https://github.com/ume3/docker-ubuntu-monit-log
起動
docker login
docker pull ume3/docker-ubuntu-monit-log
docker images
docker run -dt -p 2812:2812 ume3/docker-ubuntu-monit-log
docker ps
- DockerHub経由でDLして立ち上げるとMonit経由で以下が閲覧できる
- ex)
http://127.0.0.1:2812
つくりかた
- 必要なもの
- GitHub
- DockerHub
- Dockerを立ち上げる環境
- 今回は、Mac(homebrew利用)
- boot2docker
- VirtulaBox
- Dockerを立ち上げる環境その2
- 作ったイメージを別のDocker環境で用意したい場合
- 適当に:AWSでUbuntuでもたちあげればいいんじゃないでしょうか(雑)
GitHubにDockerfileを管理したいリポジトリを作成する
- Dokcerfileをおく用意をする
git clone git@github.com:ume3/docker-ubuntu-monit-log.git
- 該当ディレクトリで作業する
boot2docker (Macの場合)
- Dockerコンテナを立ち上げる環境を用意する
- MacでDockerを扱いたいのでhomebrewを使う
- refs: https://docs.docker.com/installation/mac/
- refs: http://qiita.com/AH_korikori/items/8a165c081e8eb699deb3
brew update
brew tap homebrew/binary
brew install docker
brew install boot2docker
brew cask install virtualbox
- boot2dockerは
1.3
以上がよいです -
brew info boot2docker
で確認
boot2dockr のセットアップ
- boot2dockerをセットアップする
boot2docker init
boot2docker start
- セットアップ時に以下のようにdocker操作する際の環境変数を設定する
- そのままコピペ(or
.zshenv
,.bashenv
などに設定する)
---snip
To connect the Docker client to the Docker daemon, please set:
export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/hoge/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
- Dockerコマンドを使えることを確認
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
ここまでで準備はOK
Dockerfileを用意してビルドする
-
Dockerfile
を書く - ex) Ubuntuでdocker:dockerでsshログインする環境
# Latest Ubuntu LTS
FROM ubuntu:14.04
MAINTAINER ume3
ENV USER_NAME docker
ENV USER_PASSWORD docker
## install
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install sudo passwd openssh-server -y
## setup
# ssh
RUN sed -ri 's/^#PermitRootLogin yes$/PermitRootLogin no/' /etc/ssh/sshd_config
# useradd
RUN useradd $USER_NAME
RUN echo "$USER_NAME:$USER_PASSWORD" | chpasswd
RUN echo "$USER_NAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USER_NAME
RUN mkdir /var/run/sshd
RUN mkdir /home/${USER_NAME}
## service
# ssh
EXPOSE 22
ENTRYPOINT [ "/usr/sbin/sshd", "-D" ]
- Dockerイメージの作成
# build
% docker build -t ubuntu .
# imagesの確認
% docker images
Dockerコンテナの起動
- 10000番ポートでフォワーディングする設定を記載する(後述)
% docker run -dt -p 10000:22 ubuntu
bac4eb2001b2f6618a6c3b5b5b4b3e712b968ce403418059d15b92df4ca799b6
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bac4eb2001b2 ubuntu:latest "/usr/sbin/sshd -D" 6 days ago Up 12 seconds 0.0.0.0:10000->22/tcp hungry_pasteur
virtualbox経由でsshログインする
- boot2dockerを立ち上げると、VirtualBoxのイメージが立ち上がっている
- virutalbox起動より
VirtualBoxでポートフォワーディング
ポートフォワーディングをして、以下の関係をつくってあげる。
今回は10000番とする。
[ssh:10000] -> [boot2docker-vm:10000] -> [docker-container:22]
-
GUI操作でもいいがコマンドだと以下
-
before
% VBoxManage showvminfo boot2docker-vm | grep ^NIC
NIC 1: MAC: 080027502227, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: virtio, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
NIC 1 Settings: MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
NIC 2: MAC: 0800276ADD18, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: virtio, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
NIC 3: disabled
NIC 4: disabled
NIC 5: disabled
NIC 6: disabled
NIC 7: disabled
NIC 8: disabled
- after
% VBoxManage controlvm "boot2docker-vm" natpf1 "ssh_container,tcp,127.0.0.1,10000,,10000"
% VBoxManage showvminfo boot2docker-vm | grep Rule
NIC 1 Rule(0): name = ssh_container, protocol = tcp, host ip = 127.0.0.1, host port = 10000, guest ip = , guest port = 10000
VirtualBox(GUI)確認
sshログイン確認
% ssh -p 10000 docker@127.0.0.1
docker@127.0.0.1's password:
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.2.0-54-generic x86_64)
---snip
OK
削除・整理コマンド
- このあたり
docker stop <CONTAINER>
docker ps
docker ps -q
docker stop `docker ps -q`
docker images
docker rmi <IMAGE>
GitHub+DockerHub
- refs: http://qiita.com/jagaximo/items/4cbda778a10fd37f68e6
- refs: http://ameblo.jp/tech-cz/entry-11886401333.html
- refs: http://sawara.me/docker/2055/
GitHub
- 動作確認のとれた
Dockerfile
をCommitして、GitHubへpush
しておく
DockerHub
- ログイン後
- [settings] - [Linked Accounts]
- GitHubとの認証を先に済ませておく
- 認証後
Automated Build
- refs: http://qiita.com/jagaximo/items/4cbda778a10fd37f68e6
- 連携開始。
Automated Build
を選択する
- 画面遷移しつつ、 用意したGitHubのリポジトリ を参照させる
- とくに迷わない
連携結果
GitHubへPushするとDockerHubへBuildが走ることを確認する
- 今回のポイント
更新してみる
- refs: http://qiita.com/mykysyk@github/items/7553e8fef2948de10844
- Monitをいれてみよう
- Dockerfileをいじって
Monit+sshd
環境を用意 - Monitは2812ポートでweb閲覧できる設定にしているので以下
% docker build -t ubuntu:monit .
% docker run -dt -p 10000:22 -p 2812:2812 ubuntu:monit
% VBoxManage controlvm "boot2docker-vm" natpf1 "monit_contaner,tcp,127.0.0.1,2812,,2812"
- 上記コマンドで
http://127.0.0.1;2812
を確認できる
DockerHubの更新確認
- 自身の
GitHub
のリポジトリへgit push origin master
する - すると、
DockerHub
でBuildが走る(連携したので) - https://registry.hub.docker.com/u/ume3/docker-ubuntu-monit-log/builds_history/94617/
-
Build Histroy
の履歴はそのまま、GitHubのCommitログと同様ということ
これで、連携更新が可能となった。
UbuntuでFluetnd
- おまけのように
- 公式のとおり:http://docs.fluentd.org/ja/articles/install-by-deb
-
Dockerfile
に記載してげればよい - moduleいれるときも以下とかで
RUN /usr/lib/fluent/ruby/bin/fluent-gem install fluent-plugin-twitter
- こうなってくるとDockerfile以外のファイル管理をしたくなるのでGithub連携がいきてくる
DockerHubから自作のDockerイメージを使う
- このイメージを
pull
すれば、どのDocker環境
でも使える - 別の環境で起動してみよう
AWS(Ubuntu) + Docker + DockerHubイメージ
- AWSで適当に作成(ざっくり省略)
- 今だとVPCでしか作成できない(クラシックモードじゃないなら)
- 気にせず、
t2.micro
あたりでも使う(VPC限定だが) -
ec2-user
じゃなくてubuntu
なのは注意
Ubuntu + docker
- 公式より:https://docs.docker.com/installation/ubuntulinux/
- このとおりやれば動く動く
- 今回は、
Ubuntu Trusty 14.04 (LTS) (64-bit)
にした。
Docker起動後、DockerHubへアクセス
- refs: http://qiita.com/zembutsu/items/b0fbb1ca1a759eff31e4
- DockerHubのログイン情報をコンソールでたたく
- ログイン
ubuntu@ip-172-30-0-10:~$ sudo docker login
Username: ume3
Password: ******
Email: <mail@mail.com>
Login Succeeded
自作イメージをpullする
- ポイント
- これがやりたいこと
docker pull <自作イメージ>
ubuntu@ip-172-30-0-10:~$ sudo docker pull ume3/docker-ubuntu-monit-log
Pulling repository ume3/docker-ubuntu-monit-log
dab621726aea: Pulling dependent layers
511136ea3c5a: Download complete
01bf15a18638: Download complete
30541f8f3062: Download complete
---snip
194a6d0fae98: Download complete
Status: Downloaded newer image for ume3/docker-ubuntu-monit-log:latest
確認と起動
## イメージ確認
ubuntu@ip-172-30-0-10:~$ sudo docker images | grep docker-ubuntu-monit-log
ume3/docker-ubuntu-monit-log latest dab621726aea 16 minutes ago 257 MB
## 起動
ubuntu@ip-172-30-0-10:~$ sudo docker run -dt ume3/docker-ubuntu-monit-log
ce36f0cf42c7e31b4864da3f862e0937711e27bba697579b144b3146005c7be6
## 起動確認
ubuntu@ip-172-30-0-10:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce36f0cf42c7 ume3/docker-ubuntu-monit-log:latest "/bin/sh -c '/usr/bi 27 seconds ago Up 27 seconds 22/tcp, 2812/tcp sick_mccarthy
# コンテナのipを知りたいなら以下
ubuntu@ip-172-30-0-10:~$ sudo sh -c 'docker inspect --format="{{ .NetworkSettings.IPAddress }}" `docker ps -q`'
172.17.0.82
## SSH OK
ubuntu@ip-172-30-0-10:~$ ssh docker@172.17.0.82
The authenticity of host '172.17.0.82 (172.17.0.82)' can't be established.
ECDSA key fingerprint is 6a:aa:ad:15:21:f2:0b:b8:1a:95:0a:5d:6c:71:a6:b4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.17.0.82' (ECDSA) to the list of known hosts.
docker@172.17.0.82's password:
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.2.0-54-generic x86_64)
* Documentation: https://help.ubuntu.com/
---snip
- ログイン後、起動確認すれば無事にたちあがっている。あとはよしなに。
$ bash
docker@f255f6f58ca6:~$ sudo netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:24224 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:24230 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:2812 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
参考情報
- 説明途中に参照すべき情報はのせましたが、多くのかたの情報でささえられました。
- アウトプット万歳