直接回答:临时改动用 docker commit 保存成镜像,离线环境用 docker save 和 docker load 搬镜像;容器启动后立刻退出,通常是因为 Dockerfile 里的启动命令不是前台运行的常驻进程。

保存、导出与导入镜像

1、保存镜像

1
docker commit 容器ID 镜像名称:版本

2、导出镜像

1
docker save -o 打包的名称.tar 镜像名称:版本

3、倒入镜像

1
docker load -i ./打包的名称.tar

4、运行镜像

1
docker run -p 9014:9014 --name="容器名字"  镜像名称:版本 /usr/local/sbin/run.sh
1
docker run -p 9014:9014 -v /opt/sf6DockerDir:/opt -p 5101:5101 -p 5102:5102 -p 5103:5103 -e TZ="Asia/Shanghai"  --name='sf6'  sf6image:1.0.0 /usr/local/sbin/run.sh &D

成都运行命令

1
sudo  docker run -p 9014:9014 -v /opt/dockerFiles:/opt -p 9011:9011 -e TZ="Asia/Shanghai"   --name='sf6'  cddockerimg:1.0.0 /usr/local/sbin/run.sh &

如果镜像已经运行起来,需要更改某些配置,可以使用

1
docker update --restart=always 容器名字

两个真实项目的 Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FROM ubuntu

WORKDIR /home/www

ADD ./netcore3/aspnetcore-runtime-3.1.27-linux-x64.tar.gz /etc/dotnet

COPY ./apt/sources.list /etc/apt/sources.list

ENV TZ=Asia/Shanghai

RUN apt update && apt -y install nginx && apt -y install vim && apt -y install supervisor && ln -s /etc/dotnet/dotnet /bin && apt -y install libgdiplus

EXPOSE 9014

ENTRYPOINT ["supervisord","-n","-c","/etc/supervisor/supervisord.conf"]
1
2
3
4
5
6
7
8
9
10
FROM environment:1.0.0
WORKDIR /home/www
RUN apt -y install vim
COPY ./apiService/opt /opt/
COPY ./apiService/supervisord.d/* /etc/supervisor/conf.d/
COPY ./nginx/* /etc/nginx/conf.d
COPY ./web ./rlx_sf6/
EXPOSE 9014
VOLUME ["/opt/SF6Mgmt/StaticFiles/","/opt/IdentityServer/Log/","/opt/SF6Mgmt/Log/","/opt/SF6Trans/Log/"]
ENTRYPOINT ["supervisord","-n","-c","/etc/supervisor/supervisord.conf"]

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
version: '2'
services:
sf6:
image: sf6:1.0.0
ports:
- '9014:9014'
volumes:
- /opt/JiangSu.SF6Mgmt/StaticFiles/:/opt/JiangSu.SF6Mgmt/StaticFiles/
container_name: sf6
restart: always

go程序制作成镜像

1
2
3
4
5
6
7
FROM scratch
WORKDIR /app
COPY WechartAPI_linux .
COPY config.json .
COPY ca-certificates.crt /etc/ssl/certs/
EXPOSE 8000
CMD ["./WechartAPI_linux"]

让容器启动就跑指定程序

下面是关于docker打包镜像,怎么才能让他容器启动的时候启动指定程序,运行起来后也不会exit(0)退出错误

dockerfiles文件

1
2
3
4
FROM ubuntujexus:1.0.6
ADD init.sh .
RUN chmod +x init.sh
ENTRYPOINT ["./init.sh"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

```sh
#!/bin/bash
## Stop your services
function stop_svc {
/var/jexus/jws stop >/dev/null 2>&1
exit
}
## Set the SIGTREM signal response function
trap 'stop_svc' SIGTERM
## Start Your Services
#####################
/var/jexus/jws start
## Waiting signal
####################
while true
do
sleep 2
done


这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。

站内搜索

没有找到内容!