问题报错
现象:Docker启动特别慢,且Docker状态为:Active: activating (start)
报错:Containerd did not exist sucessfully Exist status code 2问题
重启Docker,重启操作系统均无法解决。
问题环境:
Docker版本:docker-18.06.3-ce.tgz
CPU架构:aarch64
系统:银河麒麟
解决办法:
Docker版本升级为:docker-20.10.7.tgz解决。
问题报错
现象:Docker启动特别慢,且Docker状态为:Active: activating (start)
报错:Containerd did not exist sucessfully Exist status code 2问题
重启Docker,重启操作系统均无法解决。
问题环境:
Docker版本:docker-18.06.3-ce.tgz
CPU架构:aarch64
系统:银河麒麟
解决办法:
Docker版本升级为:docker-20.10.7.tgz解决。
本文我们主要讲解在Docker制作MySQL镜像时,如何通过docker-entrypoint-initdb.d机制来初始化数据库。
制作MySQL镜像时,如何初始化数据库呢?
MySQL官方给我们提供了很简单的方案:
用户只需要将准备好的初始化脚本拷贝至MySQL镜像内的docker-entrypoint-initdb.d目录即可。
首次启动容器时,默认会执行docker-entrypoint-initdb.d目录下的.sh、.sql和.sql.gz的脚本;如果有多个按文件名的字母顺序执行。
docker-entrypoint-initdb.d目录下的脚本只有在MySQL容器首次启动时才会被执行,如果容器已经存在并正常运行,那么再次启动容器时,这些脚本不会被重新执行。
在测试脚本时,如果我们修改了脚本文件并希望重新执行它们,那我们就需要删除现有的MySQL容器以及挂载的数据卷目录。在重新创建容器时,才会重新执行docker-entrypoint-initdb.d下的脚本。
注意:删除数据卷目录文件时,将会永久丢失其中的所有数据,请确保在执行此操作之前进行必要的备份。
dockerfile指定时区:
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
当我们在初学docker时经常会发现,容器启动后服务器或日志时间经常是慢8小时,这个其实就是由于未指定时区的问题。根据不同场景,我们可以在docker-compose配置、dockerfile、java启动命令、数据库连接地址等不同地方指定时区。以上即为直接在dockerfile指定时区的方法。
本文主要使用Systemd服务的方式来设置docker-compose服务开机自启动。
创建一个以.service结尾的服务文件,smaple.service示例内容如下:
[Unit]
Description=Smaple Service
After=network.target
[Service]
ExecStart=/data/docker/startup.sh
Restart=always
[Install]
WantedBy=multi-user.target