首页 > 其他分享 >[豪の学习笔记] CI/CD相关 - Docker

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

时间:2024-11-11 15:19:09浏览次数:1  
标签:容器 CI 目录 CD nginx mysql 镜像 docker Docker

一、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






标签:容器,CI,目录,CD,nginx,mysql,镜像,docker,Docker
From: https://www.cnblogs.com/SchwarzShu/p/18539783

相关文章

  • visualvm远程连接Docker容器中部署的java应用并监控
    visualvm远程连接Docker容器中部署的java应用前言jdk1.8中自带了,java11中需要单独下载下载地址visualvm下载地址简介java虚拟机监控,故障排查及性能分析工具。网络配置局域网与docker内网打通,请参考:办公网络与Docker内网网络互通服务于网络服务名称节点IPj......
  • 搭建云网站数据处理的环境——安装docker
    1、打开会话查询docker版本号输入:docker-v得到相关版本号回复:例如:2、在终端中输入命令来查看GPU驱动版本输入:nvidia-smi3、添加或者修改docker配置文件输入:cd/etc/docker再输入:sudovimdaemon.json进入文本修改界面点击按键“i”进行修改,修改内容如下:点击查看代......
  • 海力士 H9HCNNNBKUMLXR-NEE 在售中 ,Platinum P41 M.2 PCIE 4.0 2TB固态硬盘,Dram颗粒编
    主控:海力士ARIES主控(ACNS8075PMT762.00S-1)闪存:海力士SK4DV7176L(H25T3TCG8CX59),单颗容量为1TB,IO速率为1600MT/s缓存:海力士LPDDR4DDR4-426616Gb,容量为2048MB产品名称:海力士PlatinumP41SSD2TB闪存特写和缓存图片请参考相关资料。海力士PlatinumP41固态硬盘的性......
  • redis cluster集群部署(docker部署)
    1.集群说明  三台测试机器172.16.4.78、172.16.4.79、172.16.4.80,做三主三从,请提前安装好docker以及docker-compose主从槽位容器名称库连接方式172.16.4.78:26379172.16.4.78:263800-5460redis_26379、redis_26380cluster集群只有0库代理三个主库做轮询172.16.4......
  • XXL-JOB docker 初始化
    一、因为xxl-job使用的是mysq数据库,所有在yaml文件中,需要优先启动mysqlversion:'3'services:mysql:image:mysql:8.0container_name:mysql8restart:alwaysenvironment:MYSQL_ROOT_PASSWORD:123456MYSQL_DATABASE:xxl_jobpo......
  • SciTech-BigDataAIML-Statistical Model-Topics Model主题模型-LDA(Latent Dirichilet
    SciTech-BigDataAIML-Algorithm-Heuristic启发式-StatisticalModel(统计概率模型)的一种TopicsModel(主题模型)LDA(LatentDirichiletAllocation)TopicsModel主题模型。LDA(LatentDirichiletAllocation,潜在狄利克雷分布)是一种TopicsModel(主题模型),用于在Lar......
  • [CKS] K8S Dockerfile和yaml文件安全检测
    最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于Dockerfile和yaml文件安全检测的题目。​专栏其他文章:[CKS]Create/Read/MountaSecretinK8S-CSDN博客[CKS]AuditLogPolicy-CSDN博客-[CKS]利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS]......
  • Kali安装配置docker
    Kali安装配置dockerDocker概述:Docker是一种开源平台,可用于自动化应用程序的部署、扩展和管理。在KaliLinux上安装和配置Docker可以为开发人员和管理员提供更轻松的容器化环境。本文将介绍如何在KaliLinux中安装和配置Docker。更新换源:apt-getupdateapt-getu......
  • macOS 下使用 Docker 安装 ElasticSearch(学习环境用)
    当前环境操作系统:macOS15.0.1Docker版本:DockerDesktop:Version4.34.3(170107)DockerEngine:27.2.0安装步骤提示:此部署只为学习使用,没有挂载本地文件1、安装ElasticSearch#安装命令#1.1创建网络somenetwork用于docker间通讯dockernetworkcreateso......
  • Docker容器镜像打成tar包
    简述需求:用户要求分系统输出镜像tar包,上传zip包利用平台统一管理。利用docker容器保存镜像进行打包,在另一台服务上使用。利用Dockerfile来打tar包什么是Dockerfile?Dockerfile是一个文本文件,包含了构建Docker镜像的所有指令。Dockerfile是一个用来构建镜像的文本文件,文......