Linux Docker镜像部署 -- Dockerfile文件
一:首先你要明白什么是镜像部署
看下面这个图
从中可以看出,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上看到你刚才推上去的包了
下面是 vue 和python 的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文件相关推荐
- 【技术栈——00061】搭建关于python项目docker镜像的Dockerfile文件示例(自己的)
supervisor supervisor进入容器后还需要配置 supervisor的配置文件 脚本文件 gunicorn.conf的配置文件 # 指定基于的基础镜像 FROM ubuntu:18.0 ...
- oracle容器部署,Linux docker oracle 部署
此刻,oracle的数据正在一条条地插入数据库.虽然命令行的表名还是乱码,但是oracle 客户端已经能查出数据了.反观这次 Linux docker oracle之旅.充满了艰辛,我像一个盲人一样 ...
- springboot打包docker镜像部署
springboot打包docker镜像部署 环境准备 机器 vultr一台,centos7 资源下载 jdk8 maven git yum install git docker yum instal ...
- linux docker漏洞,安装shadow或linux-pam的Alpine Linux Docker镜像有漏洞,附解决
只要你在 Alpine Linux 系统 Docker 镜像中安装有 shadow 或 linux-pam 软件包,那么这个镜像是有安全漏洞的,需要尽快修补,要说明的是,其他 Alpine Linux ...
- docker镜像保存为文件与文件载入为docker镜像
文章目录 一.docker镜像保存为文件 二.导出的镜像文件载入为docker镜像 提示:以下是本篇文章正文内容,下面案例可供参考 一.docker镜像保存为文件 #查看镜像列表 [root@loca ...
- Linux+Docker+Tensorlfow 部署探索
Linux+Docker+Tensorlfow 部署探索 Tensorflow官网链接 https://tensorflow.google.cn/install/docker Docker部署 Ten ...
- Linux制作python的AWS-KCL的基础镜像,Dockerfile文件
1.新建一个空目录kclimage 2.Java官方下载: jdk-8u191-linux-x64.tar.gz 到 kclimage目录 3.下载amazon-kinesis-client-pyth ...
- 【华为云实战开发】2.Docker镜像部署怎么玩才酷炫?
1 文章目的 本文主要帮助想要或者正在使用容器部署服务的用户,如何将他们的应用部署通过DevCloud部署在华为云上. 2 概述 2.1 Docker Docker是一个开源的引擎,可以轻松的为任何应 ...
- Linux Docker 安装部署
Linux Docker + Portainer 的安装部署 主要是对 Docker + Portainer 的安装部署 一.环境 服务器系统 CentOS 8.x(其他版本的 Linux 也可).D ...
最新文章
- access导出MySQL表格_如何将Access数据库里的表内容导出到Excel
- 王瑜琪:数据科学助力我捕捉研究生教育的宏观效应 | 提升之路系列
- 归一化激活层的进化:谷歌Quoc Le等人利用AutoML 技术发现新型ML模块
- 2--mkdir命令
- Reverse原理背后的数学和魔幻艺术
- python自动化元素定位_Appium+Python自动化 4 -appium元素定位
- 转载 — 问题解决:Unlink of file '.git/objects/pack/pack-***.pack' failed. Should I try again? (y/n) y
- 第 2 章 设计模式七大原则
- antd-vue中的form表单label标签for导致点击文字触发输入框解决方案
- python字符串驻留机制_Python中的字符串驻留
- [环境搭建] VS-Visual Studio-IIS Express 支持局域网访问
- html 恶作剧无限弹窗
- 关于阻抗设计的建议-来至深南电路板厂的心水总结
- vue实现拍照人脸识别功能带人脸选中框
- Nuvoton M0518 之 记录数据到LDROM,数据掉电不丢失的方式
- whistle-安卓手机配置代理
- HTTPHTTPS账号密码获取与ettercap局域网内DNS欺骗
- 手工制作绿色版 QQ 和 TM
- android输入法开发软件,开发安卓系统Android和码输入法软件的全过程(二)
- Facebook 登录、分享
热门文章
- python虚拟键盘_Python 实现键盘鼠标按键模拟
- 几种机器学习框架的对比和选择
- 无线路由ntp服务器,CISCO路由器上配置NTP服务器
- 云服务器限制IP地址访问
- php显示用户头像等信息,获取文章作者的用户头像、用户昵称等用户资料
- 【python】adb+uiautomator 操作手机
- 2020中国“新基建”的七大领域
- excel复制数字乱码_仅在Excel中复制数字
- 用Mixly ESP8266 ESP32本地局域网/在线OTA无线wifi上传方法
- 我国中小学生linux启蒙教育起步了吗?