docker可视化与制作和提交自己的镜像

news2025/8/12 3:59:47

第四章docker可视化

portainer

docker的图形化管理工具!提供一个后台面板供我们操作!

docker run -d -p 8080:9000 \

--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

访问测试:外网 :8080

例如:http://主机ip:8080/

这个可视化面板很少用  (账号:admin 密码:12345678)


第五章制作和提交自己的镜像

Docker镜像

是一种独立软件包,包含某个软件运行时的所有内容,包含代码、环境变量等。

如何得到镜像

从远程仓库下载

朋友拷贝

自己制作一个镜像dockerFile

联合文件系统

docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。

特点

docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部,容器之下都叫镜像层。

DockerFile介绍

dockerfile是用来构建docker镜像的文件!命令行参数脚本!

构建镜像步骤

1.编写一个dockerfile文件

2.docker build构建成为一个镜像

3.doucker run 运行镜像

4.docker push  发布到github或阿里云

点击任意版本跳转到GitHub仓库,查看官方制作的镜像

很多官方都是基础包,很多功能没有,我们通常会自己搭建自己的镜像!

DockerFIle构建过程

基础知识:

1.每个保留关键字(指令)都是必须大写字母

2.执行从上到下顺序

3.#表示注释

4.每一个指令都会创建提交一个新的镜像层,并提交!

dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!

Docker镜像逐渐成为企业交付的标准,必须要掌握!

步骤:开发,部署,运维。。。缺一不可!

DockerFile:构建文件,定义了一切的步骤,源代码

Docker images:通过DockerFile构建生成的镜像,最终发布和运行的产品!

Docker容器:容器就是镜像运行起来提供服务的

DockerFile的指令

FROM    #基础镜像,一切从这里开始构建    

MAINTAINER    #镜像是谁写的,姓名+邮箱

RUN    #镜像构建的时候需要运行的命令

ADD    #步骤:tomcat镜像,这个tomcat压缩包!添加内容

WORKDIR    #镜像的工作目录

VOLUME    #挂载的目录

EXPOSE    #保留端口配置

CMD    #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT    #指定这个容器启动的时候要运行的命令,可以追加命令

ONBUILD    #当构建一个被继承 DockerFile这个时候就会运行ONBUILD 的指令。出发指令。

COPY    #构建的时候设置环境变量

实战测试

Docker Hub 中99%镜像都是从这个基础镜像过来的FROM scratch,然后配置需要的软件和配置来进行构建的

创建一个自己的centos

#1.编写Dockerfile的文件

vim cat mydockerfile-centos

FROM centos

MAINTAINER gyq<gyqailxj@qq.com>

ENV MYPATH /usr/local

WORKDIR $MYPATH

RUN yum -y install vim

RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH

CMD echo "---end---"

CMD /bin/bash

通过这个文件构成镜像

#命令docker build -f dockerfile文件路径 -t 镜像名:[tag(版本号)]

对比之前的原生centos

增加之后的镜像

列出本地进行的变更历史

我们平时拿到一个镜像,可以研究一下它是怎么做的了?

CMD 和 ENTRYPOINT 区别

CMD    #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT    #指定这个容器启动的时候要运行的命令,可以追加命令

测试cmd

#编写 dockerfile文件

[root@localhost dockerfile]# vim dockerfile-cmd-test

FROM centos

CMD ["ls","-a"]

#构建镜像

[root@localhost dockerfile]# docker build -f docker-cmd-test -t cmdtest .

#run运行,发现我们的ls -a 命令生效

[root@localhost dockerfile]# docker run 4cd6b4cf475e

.dockerenv

bin

dev

…..

#想追加一个命令 -l     ls -al

[root@localhost dockerfile]# docker run  4cd6b4cf475e -l

docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.

ERRO[0000] error waiting for container: context canceled

[root@localhost dockerfile]#

#cmd 的清理下 -l  替换了CMD ["ls","-a"] 命令, -l 不是命令所以报错!

测试ENTRYPOINT 

[root@localhost dockerfile]# vim dockerfile-cmd-entrypoint

FROM centos

ENTRYPOINT ["ls","-a"]

[root@localhost dockerfile]# docker build -f dockerfile-cmd-entrypoint -t entoryponit-test .

Sending build context to Docker daemon  4.096kB

Step 1/2 : FROM centos

---> 5d0da3dc9764

Step 2/2 : ENTRYPOINT ["ls","-a"]

---> Running in bf9e56a6aae3

Removing intermediate container bf9e56a6aae3

---> 346b699dac1e

Successfully built 346b699dac1e

Successfully tagged entoryponit-test:latest

[root@localhost dockerfile]# docker run  346b699dac1e

.dockerenv

bin

dev

etc

home

…….

#我们的追加命令,是直接拼接在我们的ENTRYPOINT命令的后面!

[root@localhost dockerfile]# docker run  346b699dac1e -l

total 0

-rwxr-xr-x   1 root root   0 Mar 11 06:37 .dockerenv

lrwxrwxrwx   1 root root   7 Nov  3  2020 bin -> usr/bin

…….

dockerfile命令中很多命令都十分的相似,我们需要了解他们的区别,我们最好的学习就是对他们进行·对比,然后测试结果!

镜像优化思路:

基础镜像小

层级尽量少

去除不必要

复用镜像层

分阶段构建

构建tomcat镜像

1.准备镜像文件 tomcat 压缩包,jdk压缩包

2.编写dockerfile文件

官方命名 'Dockerfile' ,build 会自动寻找这个文件,就不需要-f指定了!

所需文件以及存放目录(自定)

FROM centos

MAINTAINER gyq<gyqailxj@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u11-linux-x64.tar.gz /usr/local/

ADD apache-tomcat-9.0.33.tar.gz /usr/local

ENV MYPATH /usr/local

WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_11

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.33

ENV CATALINA /usr/local/apache-tomcat-9.0.33

ENV PATH $PATH:$PATH:$JAVA_HOME/bin:CATALINA_HOME/lib:$CATALINA/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.33/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.33/bin/logs/catalina.out

3.构建镜像

docker build -t diytomcat .

如果想保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就好比Vm虚拟机的快照。

提交镜像

commit 镜像

#方法一

docker commit 提交容器成为一个新的副本

#方法二(推荐)

#命令和git原理类似

docker commit -m="提交的描述信息" -a ="作者" 容器id 目标镜像名:【TAC(版本号)】

实战测试

#1.启动一个默认的tomcat

#2.发现这个默认的tomcat 是没有wenapps应用,镜像原因,官方的镜像默认webapps 下面是没有文件的!

#3.我自己拷贝进去了基本的文件

#4.将我们操作过的容器通过commit提交为镜像!我们以后就使用我们修改过的镜像即可,这就是我们自己的修改的。

4.发布自己的镜像

1.发布到镜像仓库

Docker Hub也可以自己搭建镜像仓库

2.在我们服务器上提交自己的镜像

[root@localhost tomcat]# docker login --help

Usage:  docker login [OPTIONS] [SERVER]

Log in to a Docker registry.

If no server is specified, the default is defined by the daemon.

Options:

  -p, --password string   Password

      --password-stdin    Take the password from stdin

  -u, --username string   Username

3.从命令行登录镜像仓库

[root@localhost tomcat]# docker login -u +账号

Password:输入密码

4.登录完毕后就可以推送镜像了

docker push

[root@localhost tomcat]# docker push 账号名/镜像:版本号

Using default tag: latest

The push refers to repository [docker.io/library/centos]

......

[root@localhost tomcat]#

小结:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/33597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python_数据容器_元组tuple

一、元组tuple定义 为什么需要元组 列表是可以修改的&#xff0c;如果想要传递的信息不被篡改&#xff0c;列表就不适合了 元组和列表一样&#xff0c;都是可以封装多个不同类型的元素在内 最大的不同点在于&#xff1a; 元祖一旦定义完成&#xff0c;就不可修改 所以&am…

SpringBoot中使用JDBC

JDBC基础使用&#xff1a; JDBC基础使用_做测试的喵酱的博客-CSDN博客 一、SpringBoot使用JDBC&#xff0c;依赖 依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId&…

linux zookeeper kafka_2.12-2.2.0 集群

文章目录一、zookeeper服务搭建1. 下载2. 解压3. 创建目录4. 调整配置5. 配置myid6. 开放防火墙7.启动验证zk二、kafka集群搭建2.1. 下载软件2.2. 解压2.3. 配置2.5. 启动kafka三、测试验证3.1. 创建一个主题3.2. 发送消息3.3. 消费消息预先准备&#xff1a;上传软件至服务器19…

使用Avalonia跨Linux平台

Avalonia&#xff0c;读&#xff1a;阿瓦隆尼亚 这里的跨平台指的是&#xff0c;使用c#语言开发跨Linux平台。c#在Windows桌面开发中很强&#xff0c;但是在Linux桌面中&#xff0c;不能跨平台&#xff0c;Qt可以在Linux中跨平台&#xff0c;但是那是另外一门语言了。Avalonia…

计算机组成原理4小时速成:计算机运算方法,无符号数和有符号数,定点数和浮点数,移位运算,加减运算,乘法运算,原码,反码,补码

计算机组成原理4小时速成&#xff1a;计算机运算方法&#xff0c;无符号数和有符号数&#xff0c;定点数和浮点数&#xff0c;移位运算&#xff0c;加减运算&#xff0c;乘法运算&#xff0c;原码&#xff0c;反码&#xff0c;补码 2022找工作是学历、能力和运气的超强结合体&…

[激光原理与应用-16]:《激光原理与技术》-2- 光的本质(粒子、波动说、电磁波、量子)

目录 前言&#xff1a;“光” 一、光的微粒说 - 牛顿 二、光的波动说 - 托马斯杨 惠更斯 三、光是电磁波 - 麦克斯韦 四、光的波动说受到的挑战&#xff0c;光的波动说重新唤醒 五、光量子假说 - 爱因斯坦 六、光的理论综合 七、光的重要特性 7.1 光的相干性 7.2 相…

安装ideaIU-2022.1.4报错问题解决办法

原来版本是2020 现在因为要用到JDK17 而IDEA2020支持的JDK只能到14 所以我们现在在下载一个2022 .1.4 这时我们安装好后 会发现如下错误 原因分析&#xff1a; JetBrains 会将各个产品的这些文件也放到这个目录中&#xff0c;而新版本的 IntelliJ IDEA 在安装时遭遇了旧版本…

Web(二)html5基础-文本控制类标签(知识训练和编程训练)

web知识训练_html5_文本控制类标签 第1关_web知识训练_html5_文本控制类标签 -------------------------------------------- web编程训练_html5_文本控制类标签 第1关_html5_网页背景及标题段落标签 编程要求 根据前面的效果图&#xff0c;在右侧编辑器中的Begin - End区域…

10K涨到30K,5年大厂横跳,经验全在这两份Java面试精华总结里了

为了帮助大家跳槽成功多长点薪资&#xff0c;我这边给大家准备了两份面试资料。这两份资料可大有来头&#xff0c;已经帮助五位我认识的人进入大厂。所以说含金量还是很高的。 这两份资料可以让你体验到原有知识从破碎到重建&#xff0c;豁然开朗的过程。5年大厂横跳真实案例加…

数据库事务

1 概述 数据库的事务&#xff08;Transaction&#xff09;是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令。 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么同时成功&#xff0c;要么同时失败。 事务是一个不可…

前端开发——HTML5新增的客户端校验

1.使用校验属性执行校验 HTML5新增了表单的校验属性,如required、pattern等。 required:定义表单不能为空。属性值是required或者省略.pattern:定义表单满足正则表单式1.required属性 required属性用于不能为空。属性值是required或者省略. 代码如下&#xff1a; <form …

34 - 数组操作符的重载

---- 整理自狄泰软件唐佐林老师课程 1. 问题一 string类对象具备C方式字符串的灵活性吗&#xff1f;还能直接访问单个字符吗&#xff1f; 1.1 字符串类的兼容性 string类最大限度的考虑了C字符串的兼容性可以按照使用C字符串的方式使用string对象 1.2 编程实验&#xff1a…

BUUCTF Reverse/[GWCTF 2019]re3

main函数代码&#xff0c;这里改写了内存空间的属性&#xff0c;还是自解密 void __fastcall __noreturn main(int a1, char **a2, char **a3) {int i; // [rsp8h] [rbp-48h]char s[40]; // [rsp20h] [rbp-30h] BYREFunsigned __int64 v5; // [rsp48h] [rbp-8h]v5 __readfsqwo…

在Thymeleaf中格式化日期

1. 简介 在本文中&#xff0c;我们将介绍在百里香叶模板中格式化日期的方法。我们将使用 Thymeleaf 引擎中提供的特殊#calendars实用程序&#xff0c;该实用程序是为模板上的日期操作而创建的。 2. 使用实用程序类#calendar Thymeleaf带有一个名为#calendars的特殊实用程序类…

万字长文:从实践到原理说透Golang defer

本从以go-1.16版本源码为基础&#xff0c;介绍了defer关键字的使用规则、实现原理和优化路线&#xff0c;最后介绍了几种将近的使用场景。试图对 go defer 关键字应用到实现原理有一个全面的了解。 欢迎关注公众号闲余说 defer 概述 Go 提供关键字defer 处理延迟调用问题。在语…

超详细BootLoader原理分析

【摘要】本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― BootLoader 的概念、软件设计的主要任务以及结构框架等内容。 在拿到空PCB板之后&#xff0c;硬件工程师首先会测试各主要线路是否通连&#xff08;各焊点是否有空焊、断接或短路的情况&#xff09;&#xff…

黑群辉+腾讯云+frp内网穿透

说明 家里用了移动宽带&#xff08;套餐便宜&#xff09;&#xff0c;结果没有了公网IP&#xff0c;只能想别的办法。 现在网上的方法大概三种 1. 第三方服务器代理&#xff1b; 要花钱&#xff0c;放弃! 2. frp穿透&#xff1b; 需要需要一台有公网IP的云服务器&#xff0…

线代——基础解系 vs 特征向量

基础解系 基础解系的概念是针对方程而言的&#xff1b;齐次线性方程组的解集的最大无关组称为齐次线性方程的基础解系&#xff1b;要求齐次线性方程组的通解&#xff0c;只需求出它的基础解系。 【例】 特征向量 特征向量和特征值满足关系式 AαλαA\alpha \lambda \alpha…

超融合兼顾医疗信创及 IT 云化转型的可行性分析

近期&#xff0c;中央出台财政贴息专项再贷款等“组合拳”政策&#xff0c;重点支持医疗、教育等关键行业的设备更新改造&#xff0c;同时央行将优先审核和支持对国产自主品牌的采购。这一系列动作表明&#xff0c;医疗行业的国产化替代&#xff08;即信息技术应用创新&#xf…

计算机组成原理习题课第一章-2(唐朔飞)

计算机组成原理习题课第一章-2&#xff08;唐朔飞&#xff09; ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&…