环境准备
Dockerfile所在的目录不能包含其它不要的文件 否则会连不要的文件一起打包的docker镜像中
FROM 192.168.30.113/laboratory/c7-systemd-ssh-3322:7.8.2003 RUN yum -y install net-tools libaio-devel.x86_64 numactl ntpdate openssl tar zip;yum clean all RUN ntpdate time1.aliyun.com WORKDIR /opt ADD taishi-deploy-docker.tar.gz . WORKDIR /opt/taishi-deploy-docker RUN sh ./setfile.sh script WORKDIR /opt/taishi-deploy-docker/script CMD ./setup.sh
sudo docker build -t 192.168.20.113/taishiganzhi/siem . sudo docker push 192.168.20.113/taishiganzhi/siem
1.把目录压缩成包
tar -zcvf taishi-deploy-docker.tar.gz ./taishi-deploy-docker/
2.把压缩包打成镜像并推送到仓库
sh build.sh
容器启动问题
在dockerfile中指定了CMD CMD执行的是自己的install脚本 install.sh在执行完成后容器默认就会自动停止掉
WORKDIR /opt/taishi-deploy-docker/script
CMD ./install.sh
造成的现象就是容器会被不断的重启
docker和supervisor一样都只能管理前台进程
要解决这个问题就必须要使install.sh一直处于执行状态并且日志一直要输出到前台终端中
容器处于running状态并不代表已经执行完CMD脚本 running的时候可以查看安装日志
这些标准输出都是可以通过docker logs来查看的
容器启动方案
1.接收启动环境变量
function UpdateIp()
{
sed -i 's/IP=__ip__/IP='$host_ip'/' ../../conf/install_config.ini
}
2.启动容器时候传递环境变量
3.把前台进程变成后台进程
#执行总入口函数 function Install() { echo -e "