当前位置: 首页 > news >正文

云原生部署_Docker入门

Docker是啥

        Docker是一个开源的容器化平台,可以帮助开发者将应用程序其依赖的环境打包成一个可移植、可部署的容器。

        Docker的主要目标是通过容器化技术,实现应用程序的快速部署、可移植性和可扩展性,从而简化应用程序的开发、测试和部署过程。

Docker与传统虚拟机的区别

        虚拟机是一个主机模拟出多个主机(多个虚拟机),需要先拥有独立的系统。传统虚拟机,利用hypervisor,模拟出独立的硬件和系统,在此之上创建应用。(与主机而言,是同等地位)

        docker 是在主机系统中建立多个应用及配套环境,把应用及配套环境独立打包成一个单位,是进程级的隔离。(于主机而言是个运行的进程)

Docker相对虚拟机的优势:

  • 轻量级: 容器与宿主机共享操作系统内核,因此容器本身非常轻量级,启动和停止速度快,资源占用少。
  • 可移植性: 容器可以在任何支持相应容器运行时的系统上运行,无需关注底层操作系统的差异,提供了高度的可移植性。
  • 快速部署: 容器化应用程序可以通过简单的操作进行打包、分发和部署,减少了部署过程的复杂性和时间成本。
  • 弹性扩展: 可以根据应用程序的需求快速创建、启动和停止容器实例,实现应用程序的弹性扩展和负载均衡。
  • 环境隔离: 每个容器都具有独立的运行环境,容器之间相互隔离,不会相互干扰,提供了更好的安全性和稳定性。

Docker与Maven 类比

Docker Registry:可分为 公有Docker Registry 和 私有Docker Registry。 最常⽤的Docker Registry莫过于官方的 Docker Hub, 这也是默认的Docker Registry. 

Docker架构

Docker Registry:可分为 公有Docker Registry 和 私有Docker Registry。 最常⽤的Docker Registry莫过于官方的 Docker Hub, 这也是默认的Docker Registry. 

Images( Docker镜像):Docker镜像是一个只读模板,它包含创建 Docker容器的说明。

Container(容器):容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。

Client(客户端):Docker客户端是 Docker的用户界面,它可以接受用户命令和配置标识。

Docker命令

Docker安装

        Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)

  • 安装:

        yum install -y docker-ce-3:24.0.2-1.el7.x86_64 # 这是指定版本安装

  • 启动并加入开机启动:

        systemctl start docker && systemctl enable docker

  • 验证是否安装成功/docker版本查看

        docker version

镜像相关命令

  • 搜索镜像

        docker search java : 在Docker Hub中搜索含有 java这个关键词的镜像仓库

  • 下载镜像

        docker pull java:8 // 下载最新版本的 Java镜像,如果要下载指定版本则在java后面加冒号指定版本

  • 列出下载镜像

        docker images

  • 删除镜像

        docker rmi java   // 强制删除加 -f

容器相关命令

1、新建并启动容器

docker run -d -p 91:80 nginx

docker run命令即可新建并启动一个容器,该命令是最常用的命令,它有很多选项,下面将列举一些常用的选项。

docker run命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该名称的镜像, Docker就会自动从 Docker Hub下载镜像并启动一个 Docker容器。

-d选项:表示后台运行

-P选项:随机端口映射

-p选项:指定端口映射,有以下四种格式。

-- ip:hostPort:containerPort

-- ip::containerPort

-- hostPort:containerPort

-- containerPort

--net选项:指定网络模式,该选项有以下可选参数:

--net=bridge:默认选项,表示连接到默认的网桥。

--net=host:容器使用宿主机的网络。--net=container:NAME-or-ID:告诉 Docker让新建的容器使用已有容器的网络配置。

--net=none:不配置该容器的网络,用户可自定义网络配置。

2、列出运行中的容器

docker ps

3、停止容器

docker stop f0b1c8ab3633 -- 容器id

4、强制停止容器

docker kill f0b1c8ab3633

5、启动已经停止的容器

docker start f0b1c8ab3633  

6、查看容器所有信息

docker inspect f0b1c8ab3633

7、查看容器日志

docker container logs f0b1c8ab3633

8、查看容器里的进程

docker top f0b1c8ab3633

9、容器与宿主机相互复制文件

docker cp 容器id:要拷贝的文件在容器里面的路径 宿主机的相应路径

如:docker cp 7aa5dc458f9d:/etc/nginx/nginx.conf /mydata/nginx

docker cp 要拷贝的宿主机文件路径 容器id:要拷贝到容器里面对应的路径

10、进入正在运行的容器

docker exec -it f0b1c8ab3633 /bin/bash (有的容器需要把 /bin/bash 换成 sh)

// 如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了

11、删除容器

docker rm f0b1c8ab3633 // 该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数

Dockerfile构建Docker镜像

Dockerfile是一个文本文件,其中包含了若干条指令,指令描述了构建镜像的细节。

在Dockerfile所在路径执行以下命令构建镜像:docker build -t nginx:tuling .

其中,-t指定镜像名字,命令最后的点(.)表示Dockerfile文件所在路径

使用Dockerfile构建微服务镜像

以项目tulingmall-member为例,将该微服务的可运行jar包构建成docker镜像

1、将jar包上传linux服务器/root/tulingmall/tulingmall-member目录,在jar包所在目录创建名为Dockerfile的文件。

2、在Dockerfile中添加以下内容

# 基于哪个镜像

From java:8

# 复制文件到容器

ADD tulingmall-member-0.0.5.jar  /tulingmall-member-0.0.5.jar

# 声明需要暴露的端口

EXPOSE 8877

# 配置容器启动后执行的命令

ENTRYPOINT java ${JAVA_OPTS} -jar /tulingmall-member-0.0.5.jar

3、使用docker build命令构建镜像

docker build -t tulingmall-member:0.0.5 .

4、启动镜像,加-d可在后台启动

docker run -d -p 8877:8877 tulingmall-member:0.0.5

加上JVM参数启动:

# --cap-add=SYS_PTRACE  这个参数是让docker能支持在容器里能执行jdk自带类似jinfo,jmap这些命令,如果不需要在容器里执行这些命令可以不加

docker run -d -p 8877:8877 \

-e SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=192.168.65.174:8848 \

-e JAVA_OPTS='-Xmx1g -Xms1g -XX:MaxMetaspaceSize=512m' \

--cap-add=SYS_PTRACE \

tulingmall-member:0.0.5

5、访问会员服务接口

服务部署完成,即可以访问了。

将微服务镜像发布到阿里云远程镜像仓库

将微服务镜像发布到私有镜像仓库

1. 搭建私有docker镜像仓库

2.上传镜像到私有仓库


文章转载自:

http://LCh0N50O.qbtkg.cn
http://x9wCG8p6.qbtkg.cn
http://CSfjiQb6.qbtkg.cn
http://QBKS1mkN.qbtkg.cn
http://0Iy7oL8h.qbtkg.cn
http://fJUsk4vZ.qbtkg.cn
http://8WYpcyxF.qbtkg.cn
http://c8aK5w56.qbtkg.cn
http://MKosAdUr.qbtkg.cn
http://JOfgEc2M.qbtkg.cn
http://lrydTa68.qbtkg.cn
http://ofNuff8u.qbtkg.cn
http://JnVc4Rbt.qbtkg.cn
http://qoZCNVgF.qbtkg.cn
http://k3genTsW.qbtkg.cn
http://Xz1g2Gry.qbtkg.cn
http://shuupkxW.qbtkg.cn
http://8GcTgRde.qbtkg.cn
http://2hQF3Vax.qbtkg.cn
http://xo28HRYb.qbtkg.cn
http://ud1VPXMm.qbtkg.cn
http://xwk5ATWl.qbtkg.cn
http://rhFoFkVZ.qbtkg.cn
http://4SJaz1Db.qbtkg.cn
http://EqTJiqJN.qbtkg.cn
http://EmseUJv0.qbtkg.cn
http://bEYSDl1O.qbtkg.cn
http://nYVt1T24.qbtkg.cn
http://GlS6fUsd.qbtkg.cn
http://OTM9jVBI.qbtkg.cn
http://www.dtcms.com/a/368186.html

相关文章:

  • javaweb(【概述和安装】【tomeat的使用】【servlet入门】).
  • 基于SpringBoot的社区智能垃圾管理系统【2026最新】
  • 基于飞算JavaAI的在线图书借阅平台设计实现
  • dbeaver工具连接inceptor星环数据库
  • Linux内核网络安全序列号生成机制解析
  • Buzz语音转文字:开源神器,高效记录会议
  • Docker 容器核心指令与数据库容器化实践
  • 自制扫地机器人 (五) Arduino 手机远程启停设计 —— 东方仙盟
  • docker 安装kafaka常用版本
  • Pytorch Yolov11 OBB 旋转框检测+window部署+推理封装 留贴记录
  • PyTorch 中.backward() 详解使用
  • conda配置pytorch虚拟环境
  • Conda环境隔离和PyCharm配置,完美同时运行PaddlePaddle和PyTorch
  • PyTorch训练循环详解:深入理解forward()、backward()和optimizer.step()
  • PyTorch 训练显存越跑越涨:隐式保留计算图导致 OOM
  • PyTorch图像数据转换为张量(Tensor)并进行归一化的标准操作
  • 图像去雾:从暗通道先验到可学习融合——一份可跑的 PyTorch 教程
  • EN-DC和CA的联系与区别
  • python + Flask模块学习 1 基础用法
  • 【Flask】测试平台中,记一次在vue2中集成编辑器组件tinymce
  • 【分享】基于百度脑图,并使用Vue二次开发的用例脑图编辑器组件
  • 【Python】QT(PySide2、PyQt5):点击不同按钮显示不同页面
  • flask的使用
  • Qt添加图标资源
  • 配置WSL2的Ubuntu接受外部设备访问
  • 产线相机问题分析思路
  • VisionPro联合编程相机拍照 九点标定实战
  • c++工程如何提供http服务接口
  • Linux查看相机支持帧率和格式
  • 必知!机器人的分类与应用:RPA、人形与工业机器人