容器之王--Docker的部署及基本操作演练

1.2 部署docker

1.2.1 容器工作方法
image-20250804195207336
1.2.2 部署第一个容器

官方站点:https://docs.docker.com/

1.2.2.1 配置软件仓库
]# cd /etc/yum.repos.d
]# vim docker.repo
[docker]
name = docker-ce
baseurl = https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable
gpgcheck = 0
1.2.2.2 安装docker-ce并启动服务
# 删除红帽自带docker工具
[root@docker-node1 ~]# rpm -qa | grep podman
podman-4.6.1-5.el9.x86_64
cockpit-podman-76-1.el9_3.noarch
[root@docker-node1 ~]# rm -f podman-4.6.1-5.el9.x86_64
[root@docker-node1 ~]# rm -f cockpit-podman-76-1.el9_3.noarch
# 以下跟实验步骤没有关系:
# 这里介绍一下:如果想在虚拟机下载好的东西打包并发送给windows可以根据我以下的方法:
[root@docker-node2 ~]# dnf  download --resolve  docker-ce  --downloaddir=/mnt	#  --resolve 下载主包及所有依赖  --downloaddir= 下载到指定路径 [root@docker-node2 ~]# cd /mnt
[root@docker-node2 mnt]# ls
containerd.io-1.7.27-3.1.el9.x86_64.rpm       docker-ce-cli-28.3.3-1.el9.x86_64.rpm
docker-buildx-plugin-0.26.1-1.el9.x86_64.rpm  docker-ce-rootless-extras-28.3.3-1.el9.x86_64.rpm
docker-ce-28.3.3-1.el9.x86_64.rpm             docker-compose-plugin-2.39.1-1.el9.x86_64.rpm[root@docker-node2 mnt]# mkdir docker
[root@docker-node2 mnt]# mv *.rpm docker
[root@docker-node2 mnt]# ls
docker[root@docker-node2 mnt]# tar zcf docker.tar.gz docker/
[root@docker-node2 mnt]# ls
docker  docker.tar.gz# 此时可以使用sftp技术进行传输到windows上
# 安装docker(或者解压自己的并dnf install *.rpm 即可至/mnt)
# 记得tar完之后要下载install
# [root@docker-harbor mnt]# ls
# docker  docker.tar.gz packages  packages.zip
# [root@docker-harbor mnt]# cd docker/
# 
# [root@docker-harbor docker]# yum install *.rpm]# yum install -y docker-ce# 编辑docker启动文件,设定其使用iptables的网络设定方式,默认使用nftables
[root@docker ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=true[root@docker-node1 ~]# systemctl daemon-reload
[root@docker-node1 ~]# systemctl restart docker[root@docker-node1 ~]# echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
[root@docker-node1 ~]# sysctl -p
net.ipv4.ip_forward = 1]# systemctl  enable --now docker
]# docker info
1.2.2.3 激活内核网络选项

(企业9不需要做,企业7需要做)

]# echo br_netfilter > /etc/modules-load.d/docker_mod.conf
]# modprobe br_netfilter
]# vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1]# sysctl --system
]# systemctl  restart docker

2.Docker的基本操作

2.1 Docker镜像管理

2.1.1 搜索镜像
[root@Docker-node1 ~]# docker search  nginx
NAME           DESCRIPTION                                      STARS     OFFICIAL
nginx          Official build of Nginx.                         20094     [OK]
@@@省略内容
参数说明
NAME镜像名称
DESCRIPTION镜像说明
STARS点赞数量
OFFICIAL是否是官方的
2.1.2 拉取镜像
# 从镜像仓库中拉取镜像
[root@Docker-node1 ~]# docker pull busybox
[root@Docker-node1 ~]# docker pull nginx:1.26-alpine# 查看本地镜像
[root@Docker-node1 ~]# docker images
REPOSITORY                        TAG           IMAGE ID       CREATED         SIZE
nginx                             latest        900dca2a61f5   7 weeks ago     188MB
nginx                             1.26-alpine   b32ed582bddb   7 weeks ago     43.2MB
ubuntu                            latest        35a88802559d   2 months ago    78.1MB
busybox                           latest        65ad0d468eb1   15 months ago   4.26MB
centos                            7             eeb6ee3f44bd   2 years ago     204MB
centos                            latest        5d0da3dc9764   2 years ago     231MB
gcr.io/distroless/base-debian12   latest        7273f3276b21   N/A             20.7MB
gcr.io/distroless/base-debian11   latest        2a6de77407bf   N/A             20.6MB

[!NOTE]

alpine 版本:nginx镜像的最小安装发型版本

2.1.3 查看镜像信息
[root@Docker-node1 ~]# docker image inspect nginx:1.26-alpine
2.1.4 导入与导出镜像
[root@docker-node1 mnt]# cd packages/
[root@docker-node1 packages]# ls[root@docker-node1 packages]# docker load -i busybox-latest.tar.gz
d51af96cf93e: Loading layer [==================================================>]  4.495MB/4.495MB
Loaded image: busybox:latest
[root@docker-node1 packages]# cd
[root@docker-node1 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
busybox      latest    65ad0d468eb1   2 years ago   4.26MB
# 保存镜像
[root@Docker-node1 ~]# docker image save nginx:latest -o nginx-latest.tar.gz
[root@Docker-node1 ~]# docker image save nginx:latest nginx:1.26-alpine -o nginx.tag.gz# 保存所有镜像    
[root@Docker-node1 ~]# docker save  `docker images | awk 'NR>1{print $1":"$2}'` -o images.tar.gz

[!NOTE]

  • -o:指定导出镜像的位置;
  • 可以同时导出多个镜像到一个文件中;
  • 指定.tar.gz 可以导出并压缩。
2.1.5 删除镜像
[root@Docker-node1 ~]# docker rmi nginx:latest[root@Docker-node1 ~]# docker rmi  `docker images | awk 'NR>1{print $1":"$2}'`

2.2 容器的常用操作

2.2.1 启动容器
[root@docker-node1 ~]# docker load -i /mnt/packages/mario.tar.gz[root@docker-node1 ~]# docker load -i /mnt/packages/centos-7.tar.gz[root@docker-node1 ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED       SIZE
centos            7         eeb6ee3f44bd   3 years ago   204MB
timinglee/mario   latest    9a35a9e43e8c   9 years ago   198MB[root@Docker-node1 ~]# docker run  -d --name mario -p 2222:8080 timinglee/mario
# 可以在浏览器中测试172.25.254.10:2222,如下图所示[root@Docker-node1 ~]# docker run -it --name centos7 centos:7
[root@3ba22e59734f /]#	#进入到容器中,按<ctrl>+<d>退出并停止容器,#按<ctrl>+<pq>退出但不停止容器# 重新进入容器
[root@docker-node1 ~]# docker attach centos-7
[root@e5b52a8ec38e ~]# exit			# 直接退出
exit#在容器中执行命令
[root@docker ~]# docker exec -it  test ifconfig
lo        Link encap:Local Loopbackinet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

image-20250805153002932

image-20250805153455511
-d			# 后台运行
-i			# 交互式运行
-t			# 打开一个终端
--name		# 指定容器名称
-p			# 端口映射 -p 80:8080	把容器8080端口映射到本机80端口
--rm		# 容器停止自动删除容器
--network 	# 指定容器使用的网络
2.2.2 查看容器运行信息
[root@Docker-node1 ~]# docker ps					# 查看当前运行容器
[root@Docker-node1 ~]# docker ps -a					# 查看所有容器
[root@Docker-node1 ~]# docker inspect busybox		# 查看容器运行的详细信息
2.2.3 停止和运行容器
[root@Docker-node1 ~]# docker stop busybox			# 停止容器
[root@Docker-node1 ~]# docker kill busybox			# 杀死容器,可以使用信号
[root@Docker-node1 ~]# docker start busybox			# 开启停止的容器

[!NOTE]

容器内的第一个进程必须一直处于运行的状态,否则这个容器,就会处于退出状态!

2.2.4 删除容器
[root@Docker-node1 ~]# docker rm centos7			#删除停止的容器[root@Docker-node1 ~]# docker rm -f busybox			#删除运行的容器[root@Docker-node1 ~]# docker container prune -f	#删除所有停止的容器
2.2.5 容器内容提交

默认情况下,容器被删除后,在容器中的所有操作都会被清理,包括要保存的文件

如果想永久保存,那么我们需要把动作提交,提交后会生成新的镜像

当我们在运行新镜像后即可看到我们提交的内容

commit操作必须在容器运行时进行提交(再开一个终端进行操作即可)

[root@Docker-node1 ~]# docker run -it --name test busybox
/ # touch leefile											#在容器中建立文件
/ # ls
bin      etc      leefile  lib64    root     tmp      var
dev      home     lib      proc     sys      usr
/ #
[root@Docker-node1 ~]# docker rm test	#删掉容器后	
test
[root@Docker-node1 ~]# docker run -it --name test busybox	#删掉容器后开启新的容器文件不存在	
/ # ls
bin    dev    etc    home   lib    lib64  proc   root   sys    tmp    usr    var
/ #[root@Docker-node1 ~]# docker commit -m "add leefile" test  busybox:v1
sha256:c8ff62b7480c951635acb6064acdfeb25282bd0c19cbffee0e51f3902cbfa4bd
[root@Docker-node1 ~]# docker images
REPOSITORY                        TAG           IMAGE ID       CREATED          SIZE
busybox                           v1            c8ff62b7480c   12 seconds ago   4.26MB[root@Docker-node1 ~]# docker image history busybox:v1
IMAGE          CREATED         CREATED BY                          SIZE      COMMENT
c8ff62b7480c   2 minutes ago   sh                                  17B       add leefile
65ad0d468eb1   15 months ago   BusyBox 1.36.1 (glibc), Debian 12   4.26MB

[!NOTE]

此方法不利于企业审计,所以不推荐使用,在企业中我们多用Dockerfile来构建镜像

2.2.6 系统中的文件和容器中的文件传输
[root@Docker-node1 ~]# docker cp  test2:/leefile /mnt		# 把容器中的文件复制到本机
Successfully copied 1.54kB to /mnt
[root@Docker-node1 ~]# docker cp /etc/fstab  test2:/fstab	# 把本机文件复制到容器中
2.2.7 查询容器内部日志
[root@Docker-node1 ~]# docker logs ...

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

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

相关文章

VFTO与局部放电-高压设备绝缘系统的双重挑战与防护策略

目录 引言VFTO的定义与形成机理VFTO对高压设备绝缘系统的影响局部放电的危害与机制VFTO与局部放电的关联性分析检测与监测技术防护与抑制措施未来技术发展趋势结论与展望引言 在现代电力系统中&#xff0c;超快速暂态过电压&#xff08;Very Fast Transient Overvoltage, VFTO&…

Windows下Rust编码实现MP4点播服务器

Rust编码可以实现众多简洁、可靠、高效的应用&#xff0c;但语法逻辑要求严格&#xff0c;尤其是依赖库的选择调用&#xff0c;需要耐心坚持“推敲”。借助DeepSeek并反复编程调试和问答改进&#xff0c;可以最终得到完整有效的Rust编码。下面分享Windows下Rust编码实现MP4点播…

ubuntu-相关指令

1、串口1.1确认在系统中检查设备是否正常加载&#xff0c;在终端输入以下命令&#xff1a;way1&#xff1a;ll /dev | grep ttyUSB&#xff08;ll是LL的小写&#xff09; way2&#xff1a;ll /dev | grep ttyACM way3&#xff1a;ll /dev | grep ttyCH343USB&#…

docker容器临时文件去除,服务器容量空间

概述&#xff1a; 接到告警提醒&#xff0c;服务器容量不足&#xff0c;去查看了一下&#xff0c;发现确实100g左右容量已基本用完&#xff1b;分析&#xff1a; 1&#xff09;查看根目录下哪些文件夹占用容量较大 使用命令“ du -ah --max-depth1 / ” 查看目标目录下所有文件…

损耗对信号质量的影响

损耗通常分为介质损耗与导体损耗&#xff1a;介质损耗&#xff1a;介质被施加电场后介质内部带电粒子在外加电场的作用力下进行微小移动介质损耗与频率成正比导体损耗&#xff1a;导体由于存在电阻&#xff0c;在有电流流过时产生的热量造成的损耗为导体损耗。同时&#xff0c;…

【42】【OpenCV C++】 计算图像某一列像素方差 或 某一行像素的方差;

文章目录1 要使用到的函数 和 原理1.1 cv::meanStdDev 函数详解——计算均值和标准差1 .2 方差的通俗解释2 代码实现3 问题3.1 入口参数const cv::Mat& img 和 const cv::Mat img区别项目要求&#xff1a;C OPenCV 中 图像img ,当 string ROIdirection “H”时&#xff0c;…

元图 CAD 插件化革命:突破效率瓶颈,重构智能协作新范式

在建筑、机械、机电等工程领域&#xff0c;传统CAD软件的功能固化与场景割裂已成为效率提升的瓶颈。设计师常面临“通用工具难适配专业需求”、“跨平台协作效率低下”、“数据孤岛阻碍创新”等痛点。元图CAD凭借“场景插件化“核心技术&#xff0c;以模块化能力突破行业桎梏&a…

T:归并排序

归并排序.逆序对简介.归并排序.习题.逆序对简介 \;\;\;\;\;\;\;\;简单介绍一下归并排序的原理&#xff0c;逆序对的基本概念&#xff0c;然后收集相关的练习。 直接用一个基础问题来引入。 因此知道了: \;\;\;\;\;\;\;\;逆序对就是一对数满足 i<j&&nums[i]>nu…

三极管三种基本放大电路:共射、共集、共基放大电路

文章目录一、共集放大电路1.静态分析2.动态分析二、共基放大电路1.静态分析2.动态分析总结如何判断共射、共集、共基放大电路&#xff1f; 电路的输入回路与输出回路以发射极为公共端的电路称为共射放大电路。 电路的输入回路与输出回路以集电极为公共端的电路称为共集放大电路…

Function AI 助力用户自主开发 MCP 服务,一键上云高效部署

作者&#xff1a;靖苏 在 AI 与云原生协同创新的浪潮下&#xff0c;多模型、多场景智能应用日益普及。开发者面临的首要挑战&#xff0c;是如何实现模型之间、服务之间的高效协同&#xff0c;以及如何便捷地将自主研发能力拓展到云端&#xff0c;形成灵活可扩展的智能服务。MC…

c++编译环境安装(gcc、cmake)

一、gcc下载 下载地址&#xff1a;https://ftp.gnu.org/gnu/gcc/ 选择想要下载的版本&#xff0c;然后解压&#xff0c;查看 contrib/download_prerequisites 中的依赖。 以我下载的 gcc-7.3.0 为例&#xff0c; 二、安装依赖包 【gmp】 https://ftp.gnu.org/gnu/gmp/ 【is…

基于贝叶斯的营销组合模型实战案例(PyMC实践)

文章出自&#xff1a;基于营销预算优化的媒体投入分配研究 本篇技术亮点在于结合了广告饱和度和累积效应&#xff0c;通过数学模型和数值优化方法&#xff0c;精确计算电视与数字媒体的最佳预算分配比例&#xff0c;实现增量销售最大化。该方法适合有多渠道广告投放需求、预算…

react_05create-react-app脚手架详细解析(export)

脚手架是什么&#xff1f; 是一种工具:快速生成项目的工程化结构&#xff0c;让项目从搭建到开发&#xff0c;到部署&#xff0c;整个流程变得快速和便捷。 安装过程: 1.安装node,安装完成后验证版本,出现对应版本就表示成功 node --version npm --version2.React脚手架默认是使…

Uncaught TypeError: Illegal invocation

报错信息Uncaught TypeError: Illegal invocation关键代码$.operate.post(prefix "/edit", { "taskId": taskId, "taskStatus": completed });<input id"taskId" style"display: none;">[[${completeTask.taskId}]]&…

深入解析Go设计模式:责任链模式实战

什么是责任链模式? 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它通过构建处理者链来传递请求。每个处理者既能自行决定是否处理当前请求,也可将请求转交给后续处理者。该模式的核心优势在于解耦请求发送方与处理方,使多个对象都能获得处理请求的机…

机器视觉系统工业相机的成像原理及如何选型

机器视觉系统是一种模拟人类视觉功能&#xff0c;通过光学装置和非接触式传感器获取图像数据&#xff0c;并进行分析和处理&#xff0c;以实现对目标物体的识别、测量、检测和定位等功能的智能化系统。其目的是让机器能够理解和解释视觉信息&#xff0c;从而做出决策或执行任务…

Java如何快速实现短信登录?

全文目录&#xff1a;开篇语前言1. 短信登录的工作原理2. 短信登录的优点3. 短信登录的缺点4. 短信登录的实现示例&#xff1a;使用 Java 实现短信登录的流程4.1 发送短信验证码&#xff08;伪代码&#xff09;4.2 使用第三方短信平台发送短信&#xff08;以阿里云为例&#xf…

HTML已死,HTML万岁——重新思考DOM的底层设计理念

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

客户管理系统的详细项目框架结构

以下是针对客户管理系统的详细项目框架结构&#xff0c;整合了核心业务模块&#xff08;客户信息、合同管理、售前售后等&#xff09;&#xff0c;并补充了实用扩展模块&#xff08;如数据统计、标签管理等&#xff09;&#xff0c;严格遵循Django模块化设计原则&#xff1a; c…

【01】OpenCV C#——C#开发环境OpenCvSharp 环境配置 工程搭建 及代码测试

文章目录一、OpenCV 介绍二、OpenCvSharp 介绍三、OpenCvSharp环境搭建3.1 创建新项目3.2 添加 NuGet组件3.3 代码测试3.4 相较于 C OpenCV不同的之处四、LearnOpenCV有时候&#xff0c;单纯c#做前端时会联合C实现的dll来落地某些功能由于有时候会用C - Opencv实现算法后封装成…