一:首先你要明白什么是镜像部署 

看下面这个图

从中可以看出,Docker 包含三个基本概念,分别是镜像(Image)、容器(Container)和仓库(Repository)。镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是Docker的核心。

回到正题,Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

要想更深入的了解 Docker 镜像,镜像的原理也必不可少,而这其中最重要的概念就是镜像层(Layers)(如下图)。镜像层依赖于一系列的底层技术,比如文件系统(filesystems)、写时复制(copy-on-write)、联合挂载(union mounts)等。

总的来说,你最需要记住这点:

在 Dockerfile 中, 每一条指令都会创建一个镜像层,继而会增加整体镜像的大小。

镜像作为 Docker 最突出的创新之一,它变革了软件交付标准。理解镜像,对理解整个 Docker 的生命周期非常重要。

二: 把你的项目打包成docker镜像文件

在Linux下操作

Java项目

在当前文件夹下创建个文件夹目录:docker(注:可以随便找个地方创建此文件夹)

里面放你的Java对的程序Jar包

在当前目录下创建dockerfile 文件

里面编辑添加如下内容:

FROM  java:8# 把jar包添加到镜像中#  auth-authentication-1.0.0.jar  这里是我Java打出来的Jar包的名字 你的要改成你的名字ADD auth-authentication-1.0.0.jar /app.jar# 镜像暴露的端口EXPOSE 8010RUN bash -c 'touch /app.jar'# 容器启动命令ENTRYPOINT ["java","-jar","/app.jar"]# 设置时区RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezonei

此时docker 文件夹下有如下文件:

三:基于该Dockerfile构建Jave应用镜像

运行如下命令,注意不要少了最后的“ . ”

Docker build -t auth-authentication-1.0.0.jar:v1.0 .

# auth-authentication-1.0.0.jar:v1.0 构建docker镜像为1.0版本

查看你构建的docker镜像

docker images 

这个图是随便截的

那里是你构建的docker镜像的名字(auth-authentication-1.0.0) tag是版本号(v1.0)

Image id 是此镜像的ID号(d124ab8e75a7)

把构建的docker 镜像打为tar包

docker save d124ab8e75a7 > xxx.tar(名字随便起的,你可以按你项目的名字来起)

这时候就可以在你创建的docker 的文件夹下看到你打的tar包了,打出来的包很大

这时候就可以上传到docker 的服务器上了

四:上传docker镜像

登录

docker login 127.0.0.1 (此IP我随便填写的,到时候看你的服务器IP地址)

输入自己的docker账号密码

载入tar包

docker load -i xxx.tar  然后就会出来镜像的id

Docker tar sha256:xxx 192.xxx.xxx.xxx/xxx.tar:v1.0.0.1
Docker push 192.xxx.xxx.xxx/xxx.tar:v1.0.0.1

Docker tag  sha256:xxxx (这里填上面出来的镜像id)  192.xxx.xxx.xxx/xxx.tar:v1.0.0.1 (后明填你服务器地址和文件夹路径在带你的镜像包名字和版本号)

这样自己就tag 好了

然后docker push 推到docker 上 就可以了

这时候 你就可以在你的docker上看到你刚才推上去的包了

下面是 vuepython 的dockerfile 文件

# VUE dockerfile

#dockerfile
#使用 nginx最新版本作为基础镜像
FROM nginx#将当前文件夹的dist文件复制到容器的/usr/share/nginx/html目录
COPY ./dist /usr/share/nginx/html/
# 拷贝.conf文件到镜像下,替换掉原有的nginx.conf
COPY nginx.conf /etc/nginx/nginx.conf#声明运行时容器暴露的端口(容器提供的服务端口)EXPOSE 9123 #CMD:指定容器启动时要运行的命令
CMD ["nginx", "-g", "daemon off;"]

#=====================vue还需要配一个nginx.conf文件。防止地址404 找不到地址

worker_processes auto;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;#keepalive_timeout  0;keepalive_timeout  65;client_max_body_size   20m;server {listen       80;server_name  www.longdb.com;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   /usr/share/nginx/html;index  index.html index.htm;try_files $uri $uri/ /index.html;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

#===========================python ==dockerfile

# syntax=docker/dockerfile:1FROM python:3.9WORKDIR /appCOPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txtCOPY . .CMD [ "python3","-m" , "flask", "run", "--host=0.0.0.0", "--port=20010"]

#====================== requirements.txt  这个里面是你python用到的依赖库 直接填名字就好

下面截图下每个文件里的配置

VUE

Python

把dockerfile 和 requirements.txt 文件 放到项目中 然后再项目里面运行docker的一系列操作就可以了

Linux Docker镜像部署 -- Dockerfile文件相关推荐

  1. 【技术栈——00061】搭建关于python项目docker镜像的Dockerfile文件示例(自己的)

    supervisor supervisor进入容器后还需要配置 supervisor的配置文件 脚本文件 gunicorn.conf的配置文件 # 指定基于的基础镜像 FROM ubuntu:18.0 ...

  2. oracle容器部署,Linux docker oracle 部署

    此刻,oracle的数据正在一条条地插入数据库.虽然命令行的表名还是乱码,但是oracle 客户端已经能查出数据了.反观这次 Linux docker  oracle之旅.充满了艰辛,我像一个盲人一样 ...

  3. springboot打包docker镜像部署

    springboot打包docker镜像部署 环境准备 机器 vultr一台,centos7 资源下载 jdk8 maven git yum install git docker yum instal ...

  4. linux docker漏洞,安装shadow或linux-pam的Alpine Linux Docker镜像有漏洞,附解决

    只要你在 Alpine Linux 系统 Docker 镜像中安装有 shadow 或 linux-pam 软件包,那么这个镜像是有安全漏洞的,需要尽快修补,要说明的是,其他 Alpine Linux ...

  5. docker镜像保存为文件与文件载入为docker镜像

    文章目录 一.docker镜像保存为文件 二.导出的镜像文件载入为docker镜像 提示:以下是本篇文章正文内容,下面案例可供参考 一.docker镜像保存为文件 #查看镜像列表 [root@loca ...

  6. Linux+Docker+Tensorlfow 部署探索

    Linux+Docker+Tensorlfow 部署探索 Tensorflow官网链接 https://tensorflow.google.cn/install/docker Docker部署 Ten ...

  7. Linux制作python的AWS-KCL的基础镜像,Dockerfile文件

    1.新建一个空目录kclimage 2.Java官方下载: jdk-8u191-linux-x64.tar.gz 到 kclimage目录 3.下载amazon-kinesis-client-pyth ...

  8. 【华为云实战开发】2.Docker镜像部署怎么玩才酷炫?

    1 文章目的 本文主要帮助想要或者正在使用容器部署服务的用户,如何将他们的应用部署通过DevCloud部署在华为云上. 2 概述 2.1 Docker Docker是一个开源的引擎,可以轻松的为任何应 ...

  9. Linux Docker 安装部署

    Linux Docker + Portainer 的安装部署 主要是对 Docker + Portainer 的安装部署 一.环境 服务器系统 CentOS 8.x(其他版本的 Linux 也可).D ...

最新文章

  1. access导出MySQL表格_如何将Access数据库里的表内容导出到Excel
  2. 王瑜琪:数据科学助力我捕捉研究生教育的宏观效应 | 提升之路系列
  3. 归一化激活层的进化:谷歌Quoc Le等人利用AutoML 技术发现新型ML模块
  4. 2--mkdir命令
  5. Reverse原理背后的数学和魔幻艺术
  6. python自动化元素定位_Appium+Python自动化 4 -appium元素定位
  7. 转载 — 问题解决:Unlink of file '.git/objects/pack/pack-***.pack' failed. Should I try again? (y/n) y
  8. 第 2 章 设计模式七大原则
  9. antd-vue中的form表单label标签for导致点击文字触发输入框解决方案
  10. python字符串驻留机制_Python中的字符串驻留
  11. [环境搭建] VS-Visual Studio-IIS Express 支持局域网访问
  12. html 恶作剧无限弹窗
  13. 关于阻抗设计的建议-来至深南电路板厂的心水总结
  14. vue实现拍照人脸识别功能带人脸选中框
  15. Nuvoton M0518 之 记录数据到LDROM,数据掉电不丢失的方式
  16. whistle-安卓手机配置代理
  17. HTTPHTTPS账号密码获取与ettercap局域网内DNS欺骗
  18. 手工制作绿色版 QQ 和 TM
  19. android输入法开发软件,开发安卓系统Android和码输入法软件的全过程(二)
  20. Facebook 登录、分享

热门文章

  1. python虚拟键盘_Python 实现键盘鼠标按键模拟
  2. 几种机器学习框架的对比和选择
  3. 无线路由ntp服务器,CISCO路由器上配置NTP服务器
  4. 云服务器限制IP地址访问
  5. php显示用户头像等信息,获取文章作者的用户头像、用户昵称等用户资料
  6. 【python】adb+uiautomator 操作手机
  7. 2020中国“新基建”的七大领域
  8. excel复制数字乱码_仅在Excel中复制数字
  9. 用Mixly ESP8266 ESP32本地局域网/在线OTA无线wifi上传方法
  10. 我国中小学生linux启蒙教育起步了吗?