docker redmineのデータを永続化させる

コンテナの/usr/src/redmine/files等のアップロードされるデータをホストマシンのディレクトリにマッピングします。
データベースを別コンテナのものを使用します。別コンテナではデータベースの格納先をホストマシンにマッピングします。
MySQLかPostgreSQLを使った場合、Redmineのコンテナはデータベースの初期化を待ちません。Redmineのコンテナにrestart: alwaysを使っても、タイミングによっては再起動されなくなります。Redmineのコンテナでデータベースのクライアントのmysqladminコマンドやpsqlコマンドがインストールされておらず、healthcheckも利用できません。RedmineのDockerfileでmysqladminコマンドとpsqlコマンドをインストールし、docker-entrypoint.shでデータベースにアクセスできるようになったかを見るべきです。

docker ps -q -l | xargs docker stop | xargs docker rm

docker ps – コンテナの一覧
docker logs – コンテナの標準出力を表示
docker stop – 稼働しているコンテナの停止

dockerでredmineを入れる

データの永続性がないRedmineを動かす
sudo docker run -d –name redmine -p 80:3000 redmine:latest

-アップロードしたファイルはredmineのファイルシステムに保存されます。
-データベースはredmineコンテナのSQLiteが使われます。
-コンテナを削除するとredmineのデータは削除されます。

docker入れるのに時間かかるなーこれ

だいぶ時間がかかったが、
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker run -d –name redmine -p 80:3000 redmine:latest
Unable to find image ‘redmine:latest’ locally
latest: Pulling from library/redmine
05d1a5232b46: Pull complete
3f4b62449fc8: Pull complete
0a8ae4c4adc5: Pull complete
12f17b4afaac: Pull complete
bd96a6b3c421: Pull complete
2077365091d8: Pull complete
92dd687079de: Pull complete
a8580aed7235: Pull complete
29dd091771dc: Pull complete
35c7cf740aac: Pull complete
06e39eb42c60: Pull complete
e9c2babb9eb2: Pull complete
Digest: sha256:deedc4ec97c280fe9474166e948c1b259cc81999114ceac1b8e58e66c14ce349
Status: Downloaded newer image for redmine:latest
cbb455552207035a5dc34c4637c9deaafefc12da85567b908a3706bd7e0a10d1

うわ、これは凄い。

データの永続性のあるredmineにしないと意味がないか。
システム管理者の承認待ちになるな。

あれ?というか、他のツールも、installして環境つくれなかった場合は、dockerで動かせばいいのでは。。

CodeIgniter

PHPを用いて動的Webサイトを構築するために利用するオープンソースのWebアプリケーションフレームワーク

コード量が少ない(どこでどんな処理をしているのかの見通しもいい)
動作が速い(これまた、レイヤーの薄さがあっての効果です)

稼働中のコンテナに入る
docker-compose exec hoge_app bash

stop
docker-compose stop

docker-compose rm -v
docker-compose build –no-cache
docker rm ‘docker ps -a -q’

docker volume rm $(docker volume ls -qf dangling=true)

docker images -a

docker rmi ‘docker images -aq’
docker rmi -f ‘docker images -aq’

docker image prune

docker rmi $(docker images | awk ‘/^/ {print $3}’)

docker cp file.rc continername:/host/dir/

docker cp continer_name:/var/www/html/ /User/meta/hoge

docker composeのインストール

vagrant@vagrant-ubuntu-trusty-64:~/wordpress/dataonly$ sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 617 0 617 0 0 374 0 –:–:– 0:00:01 –:–:– 374
100 8648k 100 8648k 0 0 205k 0 0:00:42 0:00:42 –:–:– 303k
vagrant@vagrant-ubuntu-trusty-64:~/wordpress/dataonly$ sudo chmod +x /usr/local/bin/docker-compose

vagrant@vagrant-ubuntu-trusty-64:~/wordpress/dataonly$ sudo docker-compose ps
Name Command State Ports
————————————————————————————
dataonly_dbserver_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
dataonly_webserver_1 docker-entrypoint.sh apach … Exit 1

Docker compose とは、複数のコンテナから成るサービスを構築・実行する手順を自動的にし、管理を容易にする機能

dockerとは

Dockerは軽量な仮想マシンを簡単に構築することができ、インフラを含めたアプリ全体をまるまる、コンテナという箱に閉じ込めることができる

– OS依存がなく、導入が容易
– 案件ごとに異なる環境を構築できるため、特定のPC依存を回避
– ミドルウェア導入や新インフラ環境のテストが各自のPCで可能
– 言語やツールのバージョンアップテストが容易
– チームメンバー全員が各自のPCでデバッグ可能になる

vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker info
Containers: 10
Running: 3
Paused: 0
Stopped: 7
Images: 9
Server Version: 18.06.1-ce
Storage Driver: devicemapper
Pool Name: docker-8:1-263323-pool
Pool Blocksize: 65.54kB
Base Device Size: 10.74GB
Backing Filesystem: ext4
Udev Sync Supported: true
Data file: /dev/loop0
Metadata file: /dev/loop1
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Data Space Used: 690.4MB
Data Space Total: 107.4GB
Data Space Available: 39.73GB
Metadata Space Used: 1.466MB
Metadata Space Total: 2.147GB
Metadata Space Available: 2.146GB
Thin Pool Minimum Free Space: 10.74GB
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Library Version: 1.02.77 (2012-10-15)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
apparmor
Kernel Version: 3.13.0-100-generic
Operating System: Ubuntu 14.04.5 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 489.9MiB
Name: vagrant-ubuntu-trusty-64
ID: CLZ5:A6GJ:OEWU:E76Y:ZUKL:LGLE:UOUK:I4FC:6TWQ:OHYZ:FJTK:F3CG
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Username: ddddocker
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false

docker basic

vagrant@vagrant-ubuntu-trusty-64:~$ docker attach –sig-proxy=false 345
WARNING: Error loading config file: /home/vagrant/.docker/config.json: stat /home/vagrant/.docker/config.json: permission denied
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/345/json: dial unix /var/run/docker.sock: connect: permission denied
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker attach –sig-proxy=false 345

total used free shared buff/cache available
Mem: 501708 164064 44344 428 293300 316495
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 164064 44344 428 293300 316499
Swap: 0 0 0

コンテナの中に入る
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker run -i -t centos /bin/bash
[root@8f60db713564 /]#

Docker Hubにsign upしよう

あれ、昔アカウントを作っていたみたいだ。全く覚えていない。

vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker push hpscript/httpd
The push refers to repository [docker.io/hpscript/httpd]
a722e4d2fe46: Preparing
fa760d3a1093: Preparing
1d31b5806ba4: Preparing
denied: requested access to the resource is denied

ん?
docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

なるほど。リポジトリ名がddddockerでないと駄目なのね。
あ~ 頭痛くなってきた。

Dockerfileを使おう

vi Dockerfile

From centos
MAINTAINER Tetsu <hogehoge@gmail.com>
# Run: execute in build
RUN echo "now building..."
# CMD: execute in run
CMD ["echo", "now running..."]

vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker build -t shibuya/echo .
Sending build context to Docker daemon 13.31kB
Step 1/4 : From centos
—> 5182e96772bf
Step 2/4 : MAINTAINER Tetsu
—> Running in 48a636f08d6c
Removing intermediate container 48a636f08d6c
—> a532962fac42
Step 3/4 : RUN echo “now building…”
—> Running in 266d3e002a78
now building…
Removing intermediate container 266d3e002a78
—> 42e0d4397d0a
Step 4/4 : CMD [“echo”, “now running…”]
—> Running in 66419b3311b9
Removing intermediate container 66419b3311b9
—> b503e170fb73
Successfully built b503e170fb73
Successfully tagged shibuya/echo:latest

なんじゃこりゃーーーーーーーー

vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
shibuya/echo latest b503e170fb73 46 seconds ago 200MB
ab93f4f1679d 15 minutes ago 200MB
hello-world latest 4ab4c602aa5e 2 days ago 1.84kB
centos latest 5182e96772bf 4 weeks ago 200MB
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker run b503
now running…

vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker build -t hpscript/httpd .
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker run -p 8080:80 -d hpscript/httpd
32e7d390b05826510945df2468a3e98a5762586080ec508ac3543a068ec3390f

わかったような解らんような分からんw

コンテナ内に入って作業しよう

コンテナ内のcentosに入ります。

vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker run -i -t centos /bin/bash
[root@83a948642dbe /]# touch hello.text
[root@83a948642dbe /]# ls
anaconda-post.log dev hello.text lib media opt root sbin sys usr
bin etc home lib64 mnt proc run srv tmp var
[root@83a948642dbe /]# exit
exit

vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
83a948642dbe centos “/bin/bash” 2 minutes ago Exited (0) About a minute ago elated_swartz
45e5501bd8ef centos “free -s 3” 10 minutes ago Up 10 minutes compassionate_mccarthy
0b8011965ea0 centos “echo ‘hello world'” 19 minutes ago Exited (0) 19 minutes ago romantic_kapitsa
c6490f99e041 hello-world “/hello” About an hour ago Exited (0) About an hour ago distracted_wilson
1abf8bdb8845 hello-world “/hello” About an hour ago Exited (0) About an hour ago sad_colden

sudo docker commitでcontainerからimageを作る。
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker commit 83a
sha256:ab93f4f1679d8efa1843606ea3d8741b35fe3f9b73e1ddb8acbfbd2ddf25f468
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ab93f4f1679d 35 seconds ago 200MB
hello-world latest 4ab4c602aa5e 2 days ago 1.84kB
centos latest 5182e96772bf 4 weeks ago 200MB
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker run -i -t ab9 /bin/bash
[root@5e92b8233188 /]# ls
anaconda-post.log dev hello.text lib media opt root sbin sys usr
bin etc home lib64 mnt proc run srv tmp var

なるほどなるほど。

コンテナを走らせよう

vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker run centos echo “hello world”
hello world

何!? どういう事? 

vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker run centos echo "hello world"
hello world

docker psで一覧を見ることができる。
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker ps

動作が終了したものを見るのは docker ps -a
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0b8011965ea0 centos “echo ‘hello world'” 5 minutes ago Exited (0) 5 minutes ago romantic_kapitsa
c6490f99e041 hello-world “/hello” 40 minutes ago Exited (0) 40 minutes ago distracted_wilson
1abf8bdb8845 hello-world “/hello” 40 minutes ago Exited (0) 40 minutes ago sad_colden

vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker run -d centos free -s 3
45e5501bd8ef3b3dd8ec4a717e992550222cb68743d78bcc4dd88db5f3673cba
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45e5501bd8ef centos “free -s 3” 11 seconds ago Up 10 seconds compassionate_mccarthy

$ sudo docker logs 45e
total used free shared buff/cache available
Mem: 501708 155076 82484 416 264148 325451
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155068 82484 416 264156 325467
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155068 82484 416 264156 325467
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155060 82484 416 264164 325467
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155056 82484 416 264168 325479
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155048 82484 416 264176 325479
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155048 82484 416 264176 325487
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155040 82484 416 264184 325487
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155164 82360 416 264184 325363
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155156 82360 416 264192 325363
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155156 82360 416 264192 325363
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155148 82360 416 264200 325387
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155148 82360 416 264200 325387
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155136 82360 416 264212 325387
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155136 82360 416 264212 325387
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155128 82360 416 264220 325387
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155128 82360 416 264220 325407
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155120 82360 416 264228 325415
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155120 82360 416 264228 325415
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155112 82360 416 264236 325415
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155496 81616 416 264596 325039
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155484 81616 416 264608 325047
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155484 81616 416 264608 325047
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155476 81616 416 264616 325047
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155228 81864 416 264616 325307
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155228 81856 416 264624 325299
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155232 81852 416 264624 325295
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155172 81844 416 264692 325363
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155172 81844 416 264692 325363
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155164 81844 416 264700 325371
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155160 81844 416 264704 325371
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155152 81844 416 264712 325383
Swap: 0 0 0

total used free shared buff/cache available
Mem: 501708 155152 81844 416 264712 325383
Swap: 0 0 0

こんなのやった記憶ねーぞ