0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DockerのMaxscaleでホストにマウントしたログをログローテーション (2)

Last updated at Posted at 2019-12-18

cronのDockerコンテナからcronを動かして別のDockerコンテナのlogroate実行

動作確認環境

AWS Workspaces
Amazon Linux2 (Time zone: Asia/Tokyo (JST, +0900))
Maxscale 2.4.4

ディレクトリ

home/username/logrotate
|--log
|  |--maxscale
|  |  |--maxscale.log
|--maxscale
|  |--maxscale_logrotate
|--maxscale-dockerfiles
|  |--Dockerfile
|--cron-logrotate-docker-dockerfiles
|  |--Dockerfile
|  |--maxscale-cron
FROM mariadb/maxscale:2.4.4

RUN apt-get update && apt-get -y install logrotate

# RUN mv /etc/cron.daily/logrotate /etc/cron.hourly/logrotate
# ADD maxscale-cron /etc/cron.d/maxscale-cron
# RUN chmod 0644 /etc/cron.d/maxscale-cron
maxscale/maxscale_logrotate
/var/log/maxscale/maxscale.log {
  su maxscale maxscale
  create 644 maxscale maxscale
  rotate 3
  missingok
  compress
  delaycompress
  sharedscripts
  size 1K
  dateext
  dateformat %Y%m%d%H%M%S
  postrotate
    kill -USR1 `cat /var/run/maxscale/maxscale.pid`
  endscript
}
cron-logrotate-docker-dockerfiles/Dockerfile
FROM alpine:3.10.3

RUN apk --update add docker && rm -rf /var/cache/apk/*

COPY maxscale-cron /etc/crontabs/root

# cronのdaemonを起動(log level=1, foreground)
CMD crond -l 1 -f
cron-logrotate-docker-dockerfiles/maxscale-cron
*/1 * * * * docker exec maxscale /usr/sbin/logrotate -f /etc/logrotate.d/maxscale_logrotate >> /var/log/cron.log 2>&1

Dockerイメージ作成

$ mkdir -p log/maxscale
$ chmod 777 log/maxscale
$ mkdir maxscale
$ mkdir maxscale-dockerfiles
$ mkdir cron-logrotate-docker-dockerfiles

$ cd maxscale-dockerfiles
$ docker build -t maxscale-log:2.4.4 .
$ cd ..
$ cd cron-logrotate-docker-dockerfiles
$ docker build -t base:1.0 .

動作確認

$ cd ..
$ sudo chown root:root maxscale/maxscale_logrotate

$ docker run -d \
--name base \
-v /var/run/docker.sock:/var/run/docker.sock \
base:1.0

# MaxscaleのDockerコンテナ起動
$ docker run \
-d \
--name maxscale \
-v $(pwd)/log/maxscale:/var/log/maxscale \
-v $(pwd)/maxscale/maxscale_logrotate:/etc/logrotate.d/maxscale_logrotate \
maxscale-log:2.4.4 \
maxscale -d -U maxscale -l file

# ログ確認
$ ls -l log/maxscale/

合計 8
-rw-r--r-- 1 chrony ssh_keys   0 12月 19 01:40 maxscale.log
-rw-r--r-- 1 chrony ssh_keys 707 12月 19 01:39 maxscale.log20191218163900.gz
-rw-r--r-- 1 chrony ssh_keys 187 12月 19 01:40 maxscale.log20191218164000

Docker 公式コンテナを使って別のコンテナにdocker execする方法 (2019/12/20追記)

コンテナ内でコンテナを操作する主立ったやり方には

DinD(Docker in Docker)
DooD(Docker outside of Docker)
の二つがある。
コンテナからコンテナを操作する

DooDを使ってみる

$ docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock docker /bin/ash
/ # docker exec maxscale /usr/sbin/logrotate -f /etc/logrotate.d/maxscale_logrotate
/ # exit
$ ls log/maxscale/ -l

合計 8
-rw-r--r-- 1 chrony ssh_keys  187 12月 20 23:29 maxscale.log
-rw-r--r-- 1 chrony ssh_keys 1831 12月 20 23:29 maxscale.log20191220142926
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?