目录结构:
[root@localhost Docker]# tree ..├── dockerctl.sh├── Dockerfile└── File├── Readme.txt└── test.c1 directory, 4 files
Dockerfile文件:
# 依赖的镜像
FROM gcc:latest as test
RUN mkdir /opt/File
COPY ./File/test.c /opt/File
WORKDIR /opt/File
RUN gcc test.c -o test
# CMD ["./test"]
ENTRYPOINT ["./test", ">>log.txt"]
# docker build -t test:v1
File目录下test.c文件:
#include <stdio.h>
#include <time.h>
int main(int argc, char* argv[])
{
while(1) {
printf("hello world\n");
usleep(1000*1000);
}
return 0;
}
自动打包脚本:
#!/bin/bash
container_name='test'
image_name='test'
image_version='v1'
# start
function start() {
docker build -t ${image_name}:${image_version} --target test . &&
echo "新镜像已构建成功!!!"
docker run -itd ${image_name}:${image_version} &&
echo "重新发布成功!!!"
}
# stop
function stop() {
container_id=`docker ps | grep ${container_name} | awk '{print $1}'`
echo ${container_id}
docker stop ${container_id}
echo "容器已停止!!!"
docker rm ${container_id}
echo "旧容器已删除!!!"
}
# restart
function restart() {
container_id=`docker ps | grep ${container_name} | awk '{print $1}'`
echo ${container_id}
docker stop ${container_id}
echo "容器已停止!!!"
docker rm ${container_id}
echo "旧容器已删除!!!"
image_id=`docker images | grep ${image_name} | grep ${iamge_version} | awk '{print $3}'`
docker rmi ${image_id}
echo "旧镜像已删除!!!"
docker build -t ${image_name}:${image_version} --target test . &&
echo "新镜像已构建成功!!!"
docker run -itd ${image_name}:${image_version} &&
echo "重新发布成功!!!"
}
# run
v1=$1
function run() {
if [ "$v1" == "start" ];then
start
elif [ "$v1" == "stop" ];then
stop
elif [ "$v1" == "restart" ];then
restart
else
docker ps
fi
}
run
测试结果:
