分类: Docker

  • 定时清理 docker nginx 日志文件

    Nginx 如果开启了日志,Linux 系统中默认的文件通常是 /var/log/nginx/access.log

    如果流量比较大时间久了会占用大量磁盘空间。

    本文中 Nginx 是运行在Docker 容器中的,

    所以清理时,需要将命令传递给Docker

    首先获取 Docker Container ID

    cid=$(docker ps | grep nginx | awk '{print $1}');

    在宿主机执行清理命令

    /usr/bin/docker exec $cid bash -c 'truncate -s 0 /var/log/nginx/access.log'

    在 crontab 设置命令触发时间为每月1号的1点1分

    1 1 1 * * cid=$(docker ps | grep nginx | awk '{print $1}');/usr/bin/docker exec $cid bash -c 'truncate -s 0 /var/log/nginx/access.log'
  • Linux/Ubuntu 安装 docker mysql 5.7

    # 安装 docker
    apt install docker.io
    
    # 拉取 mysql 镜像
    docker pull mysql:5.7.39
    
    # 实例化一个数据库容器
    docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7.39

    password 为用户 root 的密码

    查看运行中的容器,第一列为容器id

    docker ps

    查看容器 IP ,<container_id> 修改为上面命令输出的容器id

    docker inspect <container_id> | grep -i ipaddress

    连接 MySQL,172.17.0.2 为容器 IP

    mysql -h172.17.0.2 -uroot -p

    输入密码即连接成功。

  • Docker容器自动退出问题解决方案

    我在shell脚本里面执行了docker run 命令,

    用来生成一个docker容器,但是随着shell脚本运行完毕,

    生成的容器也自动退出了,经查询原因,在stackoverflow上找到一种解决办法,

    在生成容器的时候,初始化执行的命令不能自动退出,例如:

    docker container run  -d -P --name $user  tonvin/ubuntu:wp7 /bin/bash /root/init.sh

    上面的命令基于镜像tonvin/ubuntu:wp7生成一个名为$user的容器,

    最后面的/bin/bash /root/init.sh表示初始化完毕后运行shell脚本/root/init.sh

    我在/root/init.sh末尾添加了一行tail -f /dev/null

    生成的容器就不自动退出了,也许此方法不好,但暂时可以解决问题。

    还有一种办法是启动的时候添加参数 –restart=always

    -d参数表示daemon方式运行

    -P参数指示生成随机的端口映射