一、选择 `可执行文件` 生成新的镜像
1、在项目的目录下编写 `Dockerfile`
# 使用一个基础的镜像,例如官方的 Ubuntu 镜像
FROM ubuntu:latest
# 安装依赖的包
RUN apt-get update \
&& apt-get install xxxx(选择所需要安装的包文件)
# 设置工作目录
WORKDIR /xxx(所选的项目路径)
# 复制 build 目录到工作目录
COPY xxx/jjj /xxx/jjj (表示复制本地xxx目录下的jjj文件拷贝到相应的镜像中)
# 设置环境变量以指向库文件的位置(如果需要)
ENV LD_LIBRARY_PATH=********
# 容器启动时运行的命令
CMD ["/bin/bash", "-c", "xxx(表示原本项目的启动命令)"]
2、在`Dockerfile`目录下,根据 Dockerfile 中的指令创建 Docker 镜像
docker build --no-cache -t xxx(表示你想取的镜像名称) .
3、保存为 .tar 文件
docker save -o xxx.tar xxx
4、把本地的 `.tar` 文件复制到新的服务器上
(1)可以先使用 scp 复制到其他服务器上
(2)在使用 docker cp 复制到本地 Linux 中
5、然后加载这个镜像到你新的Docker环境上
docker load -i ./xxx.tar
6、启动它并且新的服务器上生成新的容器
# 如果什么都不需要的话
docker run -it xxx
# 如果需要映射端口(比如从8000,映射到8092)
docker run -p 8000:8000 -p 8092:8092 -it xxx
# 如果需要 容器自启动
docker run -p 8000:8000 -p 8092:8092 --restart always -it dimension_postgresql
# 如果需要 nginx 在容器启动时也自启动
docker run -d -p 8000:8000 -p 8092:8092 dimension_postgresql nginx -g "daemon off;"
7、进入容器并启动项目
# 查看新的镜像
docker images
# 查看启动的新的容器
docker ps
# 进入容器
docker exec -it xxx(新的容器id) bash
启动项目
8、最终可以实现在其他服务器上面看不到源码的情况下,在其他服务器上运行程序
二、打包新的容器生成新的镜像
1、停止要打包的容器
docker stop xxx
2、将容器打包生成新的镜像
docker commit xxx(上面停止的容器id) jjj(你想取的镜像名称):laster(你想取的标签)
3、确定新的镜像已经创建
docker images
4、将新的镜像导出为 `.tar` 文件
docker save -o xxx.tar xxx:laster
5、接着可以保存其到新的服务器并上运行