[豪の学习笔记] CI/CD相关 - Docker

news/2024/11/14 17:13:24/文章来源:https://www.cnblogs.com/SchwarzShu/p/18539783

一、docker常见命令

单独下载镜像文件 docker pull

查看本地镜像文件 docker images

删除本地镜像文件 docker rmi

基于dockerfile构建自定义镜像 docker build

将打包好的镜像保存在本地 docker save

加载外部镜像文件 docker load

将本地镜像推送到镜像仓库 docker push

创建并运行容器 docker run

停止容器 docker stop

启动容器 docker start

查看当前容器运行状态 docker ps

删除容器 docker rm

查看容器运行日志 docker log

进入容器 docker exec

详细命令见于Docker官方文档Reference中Command-line reference部分

案例

查看DockerHub,拉取Nginx镜像,创建并运行Nginx容器

①在DockerHub中搜索Nginx镜像,查看镜像名称

https://hub.docker.com/_/nginx

②拉取Nginx镜像

docker pull nginx

③查看本地镜像列表

docker images

保存镜像文件到本地 docker save -o nginx.tar nginx:latest

读取本地镜像文件 docker load -i nginx.tar

④创建并运行Nginx容器

docker run -d --name nginx -p 80:80 nginx

⑤查看容器状态

docker ps

改变输出格式 docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"

⑥停止容器

docker stop nginx

⑦再次启动容器

docker start nginx

⑧进入Nginx容器

docker exec -it nginx bash

⑨删除容器

先停止才能删除 docker rm nginx

强制删除 docker rm nginx -f

二、命名别名

修改/root/.bashrc文件 vi /root/.bashrc

退出: 先按住esc 再输入:wq

执行命令使别名生效 source /root/.bashrc

三、数据卷挂载

数据卷是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁,它将宿主机目录映射到容器内目录,方便我们操作容器内文件,或者方便迁移容器产生的数据

创建数据卷 docker volume create

查看所有数据卷 docker volume ls

删除指定数据卷 docker volume rm

查看某个数据卷的详情 docker volume inspect

清除未使用数据卷 docker volume prune

PS:

在执行docker run命令时,使用 -v 数据卷:容器内目录 可以完成数据卷挂载

当创建容器时,若挂载了数据卷且数据卷不存在,则会自动创建数据卷

案例

利用Nginx容器部署静态资源

所有的镜像文件都是最小化系统环境,只包含对应运行必备的函数库,故需要挂载数据卷

①创建Nginx容器

docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx

②修改Nginx容器内html目录下的index.html文件,查看变化


③将静态资源部署到Nginx的html目录


利用数据卷,实现了宿主机目录与容器内目录之间的自动双向映射

四、本地目录挂载

案例

mysql容器的数据挂载

①查看mysql容器,判断是否有数据卷挂载

docker inspect mysql

匿名卷,名字随机生成,容易丢失数据

②基于宿主机目录实现MySQL数据目录、配置文件、初始化脚本的挂载(查询官方文档)

a.挂载/root/mysql/data到容器内的/var/lib/mysql目录

b.挂载/root/mysql/init到容器内的/docker-entrypoint-initdb.d目录,携带SQL脚本

c.挂载/root/mysql/conf到容器内的/etc/mysql/conf.d目录,携带配置文件

docker run -d \

--name mysql \

-p 3306:3306 \

-e TZ=Asia/Shanghai \

-e MYSQL_ROOT_PASSWORD=123 \

-v ./mysql/data:/var/lib/mysql \

-v ./mysql/conf:/etc/mysql/conf.d \

-v ./mysql/init:/docker-entrypoint-initdb.d \

mysql


PS:

在执行docker run命令时,使用 -v 本地目录:容器内目录 可以完成本地目录挂载

本地目录必须以“/”或“./”开头,如果直接以名称开头,会被识别为数据卷而非本地目录

-v mysql:/var/lib/mysql 会被识别为一个数据卷叫mysql

-v ./mysql:/var/lib/mysql 会被识别为当前目录下的一个mysql目录

五、自定义镜像

镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。

部署一个JAVA应用的步骤:

①准备一个Linux服务器

②安装JRE并配置环境变量

③拷贝jar包

④运行jar包

构建一个JAVA镜像的步骤:

①准备一个Linux服务器

②安装JRE并配置环境变量

③拷贝jar包

④编写运行脚本

docker在制作镜像的时候,不是把每一步产生的文件合并在一起打成一个包作为镜像,而是会把每一步操作产生的文件分别打成压缩包作为镜像的一部分,最终合在一起才是一个完整的镜像

Dockerfile

dockerfile就是一个文本文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像。

FROM 指定基础镜像 FROM centos:6

ENV 设置环境变量,可在后面指令使用 ENV key value

COPY 拷贝本地文件到镜像的指定目录 COPY ./jrell.tar.gz /tmp

RUN 执行Linux的shell命令,一般是安装过的命令 RUN tar -zxvf /tmp/jre11.tar.gz&& EXPORTS path=/tmp/jre11:$path

EXPOSE 指定容器运行时监听的端口,给镜像使用者看 EXPOSE 8080

ENTRYPOINT 镜像中应用的启动命令,容器运行时调用 ENTRYPOINT java -jar xx.jar

更多详细语法在官方文档 https://docs.docker.com/engine/reference/builder





镜像中包含了应用程序所需要的运行环境,函数库,配置,以及应用本身等各种文件,这些文件分层打包而成

Dockerfile就是利用固定的指令来描述镜像的结构和构建过程,这样Docker才可以依次来构建镜像

构建镜像 docker build -t 镜像名 Dockerfile目录

六、容器网络互联

默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上

一旦创建自定义网络,它会形成一个新的网桥,网段与初始网桥不一样

加入自定义网络的容器才可以通过容器名互相访问

创建一个网络 docker network create

查看所有网络 docker network ls

删除指定网络 docker network rm

清除未使用的网络 docker network prune

使指定容器连接加入某网络 docker network connect

使指定容器连接离开某网络 docker network disconnect

查看网络详细信息 docker network inspect






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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel中查找亏损第一大第二大第三大的商品的亏损金额;涨出第一大,第二大,第三大的金额;以及查找对应数值的商品的名称,

k2 里的公式 =LARGE(IF(B:B="品类1",E:E),1) lL 里的公式 =LARGE(IF(B:B="品类1",E:E),2) M2里额公式 =LARGE(IF(B:B="品类1",E:E),3) N2里的公式=MIN(IF(B:B="品类1",E:E),1) O2里的公式=SMALL(IF(B:B="品类1",E:E),2) P2里…

线程池都有哪些状态

线程池有五种典型状态: 1.RUNNING(运行状态):在这个状态下,线程池可以接收新的任务提交,并且能够处理已添加到任务队列中的任务。这是线程池的初始状态,也是最活跃的状态。这是最正常的状态 2.SHUTDOWN(关闭状态)当调用了线程池的`shutdown()`方法后,线程池进入此状…

GIT RE-BASIN: MERGING MODELS MODULO PERMUTATION SYMMETRIES (1)

在深度学习模型的训练过程中,经常会遇到这样的现象:每次训练,虽然初始值、随机种子、训练数据的顺序不一样,但是得到的loss曲线都差不多,在验证集上的结果也差不多.这篇论文从land scape的角度解释了这个问题:神经网络的loss landscape并不是我们想象中的很混乱、毫无规律,而…

GIT RE-BASIN: MERGING MODELS MODULO PERMUTATION SYMMETRIES

在深度学习模型的训练过程中,经常会遇到这样的现象:每次训练,虽然初始值、随机种子、训练数据的顺序不一样,但是得到的loss曲线都差不多,在验证集上的结果也差不多.这篇论文从land scape的角度解释了这个问题:神经网络的loss landscape并不是我们想象中的很混乱、毫无规律,而…

hashCode()与equals()之间的关系

在Java中,`hashCode()`和`equals()`方法之间存在紧密的关系,主要体现在它们共同作用于对象的比较和存储上,尤其是在集合(如HashSet、HashMap)和哈希表的实现中。 1.hashCode()和equals()是Object类中定义的两个重要方法,用于对象的比较和哈希处理。 2.hashCode()方法:h…

文生视频大模型

简介Sora 官网地址:https://openai.com/sora文生视频指的是将文本描述转化为视频内容的技术,2024年2月15日 OpenAI 正式对外发布 Sora 人工智能模型,在人工智能领域掀起了一场风波,这是计算机视觉领域的一个突破。 Sora 这一名称起源于日文中“空”的含义,暗示了其具备的无…

泛型中extends和super的区别

泛型中的 ​​extends​​​ 和 ​​super​​ 关键字用于设置类型参数的上下界,控制可以传递给泛型类型的参数类型。它们的区别在于限制的方向和用途: 1.extends:上界限制: 使用 ​​extends​​ 关键字定义了一个类型参数的上界,意味着传入的类型必须是指定类型或其子类型…

arthas进行服务器资源监控

https://arthas.aliyun.com/doc/ 官方指导文档 1、arthas下载 wget https://arthas.aliyun.com/arthas-boot.jar2、是jar包,可直接用java启动 java -jar arthas-boot.jar 3、查看所有进程信息 4、查看某个进程信息 thread PID

变更管理的艺术:CMDB变更管理应用全解析

在信息技术快速发展和企业数字化转型的背景下,变更管理成为了确保业务连续性和系统稳定性的关键环节。CMDB作为变更管理的核心工具,能够提供全面的资产和配置视图,还支持变更管理流程的各个方面,从而提高变更的成功率。 一、什么是变更管理 变更管理是指对IT环境中的配置项…

地球空间网格编码规则

中国国家标准提出《地球空间网格编码规则》(GB/T 40087-2021)是2021年4月30日实施的一项中华人民共和国国家标准 外文名称:Geospatial grid encoding rule 规定了地球空间网格剖分要求和编码方法。该标准适用于作为空间单元与空间信息组织的地球空间网格剖分和代码标识。 编…

海柔仿真系统存储实践:混合云架构下实现高可用与极简运维

海柔创新是一家专注于箱式仓储机器人系统的研发和设计的科技公司,其仿真平台通过数字模拟技术,再现实际仓库环境和设备,利用导入的地图、订单、库存及策略配置等数据来验证和优化仓储解决方案,确保设计方案的效率和合理性。 最初,海柔的仿真平台在单机环境中运行,但随着数…