13. $ sudo vi /etc/apt/sources.list.d/docker.list
deb https://get.docker.io/ubuntu docker main
!
$ sudo apt-get update
Dockerリポジトリの登録
← 記入
$ sudo apt-get install lxc-docker
!
$ sudo docker version
Client version: 1.0.0
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 63fe64c
Server version: 1.0.0
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 63fe64c
Dockerのインストール
(1)Dockerのインストール
14. (2)セットアップ
$ sudo docker run -t -i ubuntu:12.04 /bin/bash
root@31d57febb148:/#
!
!
!
!
イメージからコンテナを起動
①
② ③
① runでコンテナ起動
(シェルを起動するときは、-t tty割り当て、-i 対話モードをつける)
② Dockerリポジトリのubuntu12.04を使用
③ シェルを起動
# echo 'root:<PASSWORD>' | chpasswd
!
# cp /usr/share/zoneinfo/Japan /etc/localtime
# date
Thu Jun 10 22:12:45 JST 2014
!
# apt-get install vim
コンテナでの初期設定
パスワード変更
↑
コンテナに入った
localtimeをUTCからJSTに変更
ーーーーーーーー ここからはコンテナの設定! ーーーーーーーーー
17. コンテナをイメージ化して起動
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31d57febb148 ubuntu:12.04 /bin/bash 37 minutes ago Exited (0) About a minute ago boring_tesla
!
!
$ sudo docker commit 31d57febb148 <REPOSITORY NAME>/<TAG NAME>
477270d630b2e7b0ae0017381f049205bf788d6d125986824f984cc2bde5cbb3
!
!
$ sudo docker run --privileged -d -p 22 -p 3306 -p 8080 -h management.hoge.local
--name="management-server" <REPOSITORY NAME>/<TAG NAME> /usr/bin/supervisord
!
d4575d79977eae86df3c7b1efcd4e389146c1fbe7395dbb5b2644fd1831c90ff
!
!
!
!
!
!
(2)セットアップ
コンテナの一覧を表示
① ② ③ ① コンテナをイメージ化
② コンテナID
③ イメージ名
新しくコンテナが起動
④ ⑤ ⑥
⑦ ⑧ ⑨
④ コンテナに特権モードを付与
⑤ 22,3306,8080ポートを開放
⑥ ホスト名をfqdnで付与
⑦ コンテナ名
⑧ 起動するイメージ
⑨ 起動するデーモン
18. $ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
d4575d79977e mirorin/test:latest /usr/bin/supervisord About a minute ago Up About a minute
0.0.0.0:49161->22/tcp, 0.0.0.0:49162->3306/tcp, 0.0.0.0:49163->8080/tcp management-server
31d57febb148 ubuntu:12.04 /bin/bash 50 minutes ago Exited (0) 13 minutes
ago
!
起動したコンテナの情報を表示
(2)セットアップ
コンテナのポートとのマッピングが表示される
$ ssh root@<DOCKER0 IP> -p <PORT>
コンテナにssh接続
“DOCKER 0 IP”は、ifconfigで確認
19. # mysql -uroot -p
!
mysql> SHOW VARIABLES WHERE Variable_name='innodb_rollback_on_timeout' OR
Variable_name='innodb_lock_wait_timeout' OR Variable_name='max_connections';
!
mysql> SELECT host,user FROM mysql.user;
!
mysql> DELETE FROM mysql.user WHERE host='::1';
!
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '<PASSWORD>' WITH GRANT
OPTION;
!
mysql> FLUSH PRIVILEGES;
mysql> quit;
mysqlの設定
(2)セットアップ
my.cnfの内容が反映されているか確認
rootユーザのパスワードを設定
ーーーーーーーー ここからはコンテナの設定! ーーーーーーーーー
26. Dockerfile
# CloudStack 4.3 Management Server installation
# VERSION 0.1
!
FROM ubuntu:12.04
MAINTAINER star76 "mirorin@cloudstackers.net"
!
# initial settings
ENV DEBIAN_FRONTEND noninteractive
RUN echo 'root:<PASSWORD>' | chpasswd
RUN cp /usr/share/zoneinfo/Japan /etc/localtime
!
# preparing repository
ADD cloudstack.list /etc/apt/sources.list.d/
RUN apt-get update
!
# settings for supervisord
RUN apt-get install -y openssh-server mysql-server supervisor net-tools
RUN mkdir /var/run/sshd/
RUN mkdir -p /var/log/supervisor/
RUN mkdir -p /etc/supervisor/conf.d/
ADD supervisord.conf /etc/supervisor/conf.d/
!
# mysql configuration
ADD my.cnf /etc/mysql/
RUN (/usr/bin/mysqld_safe &); sleep 5; echo "DELETE FROM mysql.user WHERE host='::1';SET PASSWORD
FOR root@localhost = PASSWORD('<PASSWORD>'); GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY
'<PASSWORD>' WITH GRANT OPTION; FLUSH PRIVILEGES;" | mysql -uroot
FROM <image:tag> ベースイメージを指定
RUN <command> コマンドを実行
ENV <key> <value> 環境変数をセット
ADD <src> <dst> ファイルをコンテナにコピー
27. Dockerfile(続き)
# CloudStack installation
RUN apt-get install -y --force-yes cloudstack-management
RUN wget http://launchpadlibrarian.net/88151258/tomcat6_6.0.33-1_all.deb
RUN wget http://launchpadlibrarian.net/88151257/tomcat6-common_6.0.33-1_all.deb
RUN wget http://launchpadlibrarian.net/88151260/libtomcat6-java_6.0.33-1_all.deb
RUN dpkg -i tomcat6-common_6.0.33-1_all.deb
RUN dpkg -i tomcat6_6.0.33-1_all.deb
RUN dpkg -i libtomcat6-java_6.0.33-1_all.deb
!
# port expose
EXPOSE 22
EXPOSE 3306
!
# CMD execution
CMD "/usr/bin/supervisord"
https://github.com/mirorin/CloudStack_on_Docker
EXPOSE <port> コンテナが公開するポート番号
CMD <実行するプログラム> プログラムの実行