docker 删除包含关键字的镜像_30分钟带你轻松掌握Docker原理

前言

Docker是什么?

Docker是Go语言开发实现的容器。2013年发布至今,备受推崇。相关文档、学习资料十分详尽。近期有docker相关项目,得重新学习一下。博客以笔记

为什么要使用 Docker?

  • Docker 容器的启动在秒级
  • Docker 对系统资源利用率高,一台主机上可以同时运行数千个 Docker 容器。
  • Docker 基本不消耗系统资源,使得运行在 Docker 里面的应用的性能很高。

相比于传统的虚拟化技术,Docker 有哪些优势?

  • 更快速的支付和部署:开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。
  • 更高效的虚拟化:Docker 容器的运行不需要额外的 Hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效。
  • 更轻松的迁移和扩展:Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。
  • 更简单的管理:使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

容器诞生背景及优势

(1)软件开发和运维中,环境部署、配置,不胜其烦。举例说明,Python开发和部署都必须配置Python解释器;运维过程中,有时测试环境能通过,但是到线上却报错,究其原因,是环境不一致。传统运维过程中,线上有十台机器,每增加一台都需要重新部署一次,简直就是“体力劳动”。(2)虚拟机在一定程度可以解决这些问题,但是存在几个缺点:- 资源占用多 虚机启动需要占用几百M的内存。- 冗余步骤多 系统级别的操作步骤,往往无法跳过,比如用户登录。- 启动慢,往往几分钟 启动操作系统需要多久,启动虚拟机就需要多久。

(3)容器优势容器不是模拟一个操作系统,而是对进程进行隔离。属于进程级别。- 启动快, 相当于启动本机底层系统的一个进程,而不是虚拟机内部的进程,速度快很多。- 占用资源少,容器只占用需要的资源,不占用那些没有用到的资源;多个容器可以共享资源,虚拟机是独享资源。- 体积小,容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。

传统虚拟化示意图:

3c646bf59f63e494d5fd460b2aab8467.png

传统虚拟化示意图

docker虚拟化示意图:

2fa85e4eb1427484e5804593916b6adf.png

docker虚拟化示意图

Docker核心概念

docker镜像(Images):docker镜像是用于创建docker容器的模板;软件打包好的镜像,放在docker仓库中。镜像启动后的实例成为一个容器。

docker容器(Container):容器是独立运行的一个或一组应用

dokcer客户端(Client):客户端通过命令行或者其他工具使用DockerAPI与Docker的守护进程通信。连接docker主机进行操作

docker主机:一个物理或者虚拟的机器用于执行docker守护进程和容器。即安装了docker程序的机器(Docker直接安装在操作系统之上)

docker仓库(Registries):docker仓库用来保存镜像(保存打包好的软件镜像),可以理解为代码控制中的代码仓库。

dockerHub(https://hub.docker.com)提供了庞大的镜像集合供使用

使用Docker的步骤

1.安装Docker

2.去docker仓库 找到对应的软件镜像

3.使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;容器就代表当前正在运行的应用。

4.对容器的启动停止就是对软件的启动停止

安装docker

以CentOS为例:

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。

(1)卸载旧版本

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

(2)安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

(3)安装国内源

yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

(4)安装docker-ce

yum makecache fastyum install docker-ce  

也可以使用脚本自动安装:

curl -fsSL get.docker.com -o get-docker.shsh get-docker.sh --mirror Aliyun

(5)启动docker-ce

systemctl enable dockersystemctl start docker

示例:

47ca42a9a924d103c81c9fe39a6b79bc.png

(6)创建docker用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。

因此,更好的做法是将需要使用 docker 的用户加入 docker 用户组。

# 建立 docker 组:sudo groupadd docker# 将当前用户加入 docker 组:sudo usermod -aG docker $USER# 退出当前终端并重新登录,进行如下测试   

注意:本次使用的是root用户。

(7)测试docker是否安装成功

docker run hello-world  

如果出现如下信息表明安装成功了:

Unable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-worldca4f61b1923c: Pull completeDigest: sha256:97ce6fa4b6cdc0790cda65fe7290b74cfebd9fa0c9b8c38e979330d547d22ce1Status: Downloaded newer image for hello-world:latest Hello from Docker!This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.    (amd64) 3. The Docker daemon created a new container from that image which runs the    executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it    to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://cloud.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide/

(8)配置内核参数

默认配置下,如果在 CentOS 使用 Docker CE 看到下面的这些警告信息:

WARNING: bridge-nf-call-iptables is disabledWARNING: bridge-nf-call-ip6tables is disabled

添加内核配置参数以启用这些功能:

tee -a /etc/sysctl.conf <

重新加载内核配置

sysctl -p

Docker镜像操作常用命令

操作命令说明备注

检索 docker search 关键字

eg: docker search mysql

我们经常去docker hub 上检索镜像的详细信息 如镜像的TAG

拉取 docker pull 镜像名:tag:tag 是可选的,tag表示标签 多为软件的版本,默认是latest

列表 docker images 查看所有本地镜像

删除 docker rmi image-id 删除指定的本地镜像

上面命令需要在docker服务启动的情况下执行

操作命令详解

docker search mysql

34167920757e4d79f69599e3179a1582.png

对上面搜索结果的说明INDEX镜像的索引NAME镜像的名称DESCRIPTION对镜像的描述STARS有多少人关注了此镜像 单位是k 多少千人OFFICIAL表示镜像是否官方 OK表示官方的 AUTOMATED 表示是否自动配置 OK表示运行此镜像会自动配置

Docker容器操作常用命令

操作命令说明备注

运行docker run --name container -name -d image-name

eg: docker run --name mytomcat -d tomcat

--name:自定义容器名

-d:后台运行

image-name:指定镜像模板

如果镜像有标签 则镜像名称后面需要加上对应的标签

image-name:标签

注:目前这样的参数命令启动起来是外部是不能访问的,还需要添加端口映射

列表docker ps (查看运行中的容器)加上 -a 可以查看所有容器(包括停止的容器)

停止docker stop container-name/container-id停止当前你运行的容器

启动docker start container-name/container-id启动容器

删除docker rm container-id删除指定容器(删除的容器需要为停止状态)注意

rmi 是删除镜像的

rm 是删除容器的

端口映射-p 6378:6379

eg: docker run -d -p 6378:6379 --name myredis docker.io/redis

-p:主机端口(映射到)容器内部的端口

6378为服务器的端口

6379为容器的端口

真正的运行命令

镜像名称也可以只写docker.io后面的名称

容器日志docker logs container-name/container-id

更多命令https://docs.docker.com/engine/reference/commandline/docker/

注:docker容器启动时一定要 指定端口映射

如果启动命令如下图所示,通过IP+端口号 将访问失败

d4cad8c5e7bd33a9cc3cff52eea44fa2.png

注意:此时使用ip:8080的方式访问tomcat是访问不成功的,因为目前ip:8080访问的是服务器的端口,访问不到容器里面,还差一步端口号的映射

一个镜像可以启动多个容器,且每个容器都是独立的,互不干扰

81fe4760b53aeb9992a7fd6281e080a6.png

五、容器生命周期管理命令

1、docker run

docker run :创建一个新的容器并运行一个命令docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS说明:-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;-d: 后台运行容器,并返回容器ID;-i: 以交互模式运行容器,通常与 -t 同时使用;-p: 端口映射,格式为:主机(宿主)端口:容器端口-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;--name="nginx-lb": 为容器指定一个名称;--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;-h "mars": 指定容器的hostname;-e username="ritchie": 设置环境变量;--env-file=[]: 从指定文件读入环境变量;--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;-m :设置容器使用内存最大值;--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;--link=[]: 添加链接到另一个容器;--expose=[]: 开放一个端口或一组端口;

docker run --name mynginx -d nginx:latest使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginxdocker run -P -d nginx:latest使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口docker run -p 80:80 -v /data:/data -d nginx:latest使用镜像 nginx:latest,以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data。docker run -p 127.0.0.1:80:8080/tcp ubuntu bash绑定容器的8080端口,并将其映射到本地主机127.0.0.1的80端口上。docker run -it nginx:latest /bin/bash使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

2、docker start

docker start :启动一个或多少已经被停止的容器docker start [OPTIONS] CONTAINER [CONTAINER...]docker start myapp启动已被停止的容器myapp

3、docker stop

docker stop :停止一个运行中的容器docker stop [OPTIONS] CONTAINER [CONTAINER...]docker stop myapp停止运行中的容器myapp

4、docker restart

docker restart :重启容器docker restart [OPTIONS] CONTAINER [CONTAINER...]docker restart myapp重启容器myapp

5、docker kill

docker kill :杀掉一个运行中的容器。docker kill [OPTIONS] CONTAINER [CONTAINER...]OPTIONS说明:-s :向容器发送一个信号

docker kill -s KILL mynginx杀掉运行中的容器mynginx

6、docker rm

docker rm :删除一个或多个容器docker rm [OPTIONS] CONTAINER [CONTAINER...]OPTIONS说明:-f :通过SIGKILL信号强制删除一个运行中的容器-l :移除容器间的网络连接,而非容器本身-v :-v 删除与容器关联的卷

docker rm -f db01 db02强制删除容器db01、db02docker rm -l db移除容器nginx01对容器db01的连接,连接名dbdocker rm -v nginx01删除容器nginx01,并删除容器挂载的数据卷

7、docker pause

docker pause :暂停容器中所有的进程。docker pause [OPTIONS] CONTAINER [CONTAINER...]docker pause db01暂停数据库容器db01提供服务。

8、docker unpause

docker unpause :恢复容器中所有的进程docker unpause [OPTIONS] CONTAINER [CONTAINER...]docker unpause db01恢复数据库容器db01提供服务。

9、docker create

docker create :创建一个新的容器但不启动它docker create [OPTIONS] IMAGE [COMMAND] [ARG...]docker create --name myapp nginx:latest使用docker镜像nginx:latest创建一个容器,并将容器命名为myapp

10、docker exec

docker exec :在运行的容器中执行命令docker exec [OPTIONS] CONTAINER COMMAND [ARG...]OPTIONS说明:-d :分离模式: 在后台运行-i :即使没有附加也保持STDIN 打开-t :分配一个伪终端

docker exec -it mynginx /bin/sh /root/runoob.sh在容器mynginx中以交互模式执行容器内/root/runoob.sh脚本docker exec -it mynginx /bin/bash在容器mynginx中开启一个交互模式的终端

Docker Hub服务相关命令

1、docker login

docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库Docker Hub。docker logout : 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。

docker login [OPTIONS] [SERVER]docker logout [OPTIONS] [SERVER]

OPTIONS说明:-u :登陆的用户名-p :登陆的密码登陆到Docker Hubdocker login -u 用户名 -p 密码

2、docker logout

登出Docker Hubdocker logout

3、docker pull

docker pull : 从镜像仓库中拉取或者更新指定镜像docker pull [OPTIONS] NAME[:TAG|@DIGEST]OPTIONS说明:-a :拉取所有 tagged 镜像--disable-content-trust :忽略镜像的校验,默认开启从Docker Hub下载java最新版镜像。docker pull java从Docker Hub下载REPOSITORY为java的所有镜像。docker pull -a java

4、docker push

docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库docker push [OPTIONS] NAME[:TAG]OPTIONS说明:--disable-content-trust :忽略镜像的校验,默认开启

上传本地镜像myapache:v1到镜像仓库中。docker push myapache:v1

5、docker search

docker search : 从Docker Hub查找镜像docker search [OPTIONS] TERMOPTIONS说明:--automated :只列出 automated build类型的镜像;--no-trunc :显示完整的镜像描述;-s :列出收藏数不小于指定值的镜像。

从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像docker search -s 10 java

容器rootfs操作命令

1、docker commit

docker commit :从容器创建一个新的镜像。docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]OPTIONS说明:-a :提交的镜像作者;-c :使用Dockerfile指令来创建镜像;-m :提交时的说明文字;-p :在commit时,将容器暂停。将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。docker commit -a "scorpio.com" -m "my apache" a404c6c174a2 mymysql:v1

2、docker cp

docker cp :用于容器与主机之间的数据拷贝。

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

OPTIONS说明:-L :保持源目标中的链接

将主机/www/docker目录拷贝到容器96f7f14e99ab的/www目录下。docker cp /www/docker 96f7f14e99ab:/www/将主机/www/docker目录拷贝到容器96f7f14e99ab中,目录重命名为www。docker cp /www/docker 96f7f14e99ab:/www将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。docker cp 96f7f14e99ab:/www /tmp/

3、docker diff

docker diff : 检查容器里文件结构的更改docker diff [OPTIONS] CONTAINER查看容器mymysql的文件结构更改。docker diff mymysql

总结

本文介绍了Docker是什么、Docker思想、Docker核心概念、Docker安装等内容,看完本文,Docker算是入门了,但是万里长征只走完了第一步,学无止境,共勉。

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

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

相关文章

pads中如何设置等长_如何在SQL Server中设置扩展,监控系统性能

dbForge Studio for SQL Server为有效的探索、分析SQL Server数据库中的大型数据集提供全面的解决方案&#xff0c;并设计各种报表以帮助作出合理的决策。dbForge Studio for SQL Server​www.evget.com扩展事件是一种有用且方便的解决方案&#xff0c;旨在监视您的系统性能。它…

iar stm32_STM32延时函数的四种方法

关注、星标公众号&#xff0c;不错过精彩内容单片机编程过程中经常用到延时函数&#xff0c;最常用的莫过于微秒级延时delay_us()和毫秒级delay_ms()。本文基于STM32F207介绍4种不同方式实现的延时函数。普通延时这种延时方式应该是大家在51单片机时候&#xff0c;接触最早的延…

使用pm2启动node文件_PM2 是什么

目录 pm2是什么特点示例说明配置文件常用命令背景 由于需要在容器云新增一个测试环境&#xff0c;改了代码相关的配置后&#xff0c;进行部署。发现服务一直启动不了。在和运维一起排查问题&#xff0c;他看到pm2的一些信息&#xff0c; 问我pm2是不是阻塞了&#xff0c;并不是…

CP/M世界上第一个微机操作系统

CP/M世界上第一个微机操作系统 微软宣布2014年4月8日将不再对Windows XP系统进行更新&#xff0c;宣告这个存活了13年的史上寿命最长的微机操作系统基本上寿终正寝。很多人都知道这是个脱胎于DOS的系统&#xff0c;也潜意识中认为DOS是微机操作系统的鼻祖。不过&#xff0c;这大…

安卓 usb音量调节_戴尔推出面向Teams和Zoom视频通话的USB-C免提适配器

COVID-19 大流行期间&#xff0c;许多企业将会议安排在了线上举办。为方便通过 Microsoft Teams 和 Zoom 之类云视讯平台进行沟通的笔记本电脑用户&#xff0c;戴尔特地推出了新款 USB-C 音频适配器。作为一款两用配件&#xff0c;MH3021P 不仅可以作为有线通话的免提适配器(集…

word表格美化技巧:如何统一改变表格的样式

在Word中插入的表格默认都是黑边白底&#xff0c;看上去非常的单调。比如这样&#xff1a; 很多小伙伴都是在新建表格并且填完数据之后&#xff0c;应用表格样式&#xff0c;来提升档次&#xff0c;如下&#xff1a; 但是&#xff0c;每次新建表格后再选择应用【表格样式】&…

banner信息是什么_我的设计成长笔记—第10篇(banner)

Banner2019年5月9日这里是我的设计成长笔记—————————————————Banner为什么单独拿出来聊因为我有差不多一年的时间都在做这个在我的成长过程中&#xff0c;banner是过渡从平面/美工到UI设计的一个过程。在这个过程中&#xff0c;我对设计的理解分成了三个部分第…

后台原理_电气控制原理动图22张,超赞!

今天从低压电器、电动机及控制线路、传感器及控制原理三部分来分享22张超赞的原理动图。低压电器部分1按钮开关2闸刀开关3行程开关4交流接触器5热继电器6时间继电器7速度继电器电动机及控制线路1异步电动机2直流电动机3步进电动机4永磁电机5正反转控制6自动往返控制7顺序控制8多…

[word技巧]把标题、图表题注编号由“一.1”改为“1.1“

一、问题描述 写作中文报告时&#xff0c;有时会要求一级标题用类似”第一章”的中文编号&#xff0c;二级标题用1.1这类编号&#xff0c;图表题注用“表1.1”的编号。此时&#xff0c;由于一级标题用的是中文数字&#xff08;如“一”&#xff09;作为序号&#xff0c;因此wor…

excel中怎样用公式获取表单控件_挑战高手:用不到 100 行代码,在前端实现 Excel 全部功能...

(点击图片获取专属你的开发工具)SpreadJS是一款基于 HTML5 的纯前端表格控件&#xff0c;兼容 450 种以上的 Excel 公式&#xff0c;具备“高性能、跨平台、与 Excel 高度兼容”的产品特性广受世界各地名企追捧。接下来让我们看看其具有哪些独特优势吧&#xff01;四大优势&…

vissim免修改时间工具_App闪退怎么办?免越狱如何安装未签名的App?

由于最近苹果大规模的封签名&#xff0c;导致在第三方渠道下载的软件都出现闪退没法使用的现象。目前的替代方法就是使用电脑端 Cydia Impactor 来给 App 进行自签&#xff0c;虽然相对比较麻烦&#xff0c;但这也是目前针对企业签名无法使用的唯一解决方法。下面以安装 FilzaE…

word表格美化技巧:如何统一改变表格的样式2+续表制作

一、表格样式 开始-样式-新建样式-样式类型&#xff1a;表格。 单独设置标题行&#xff0c;汇总行等格式即可。表格样式会显示在-设计-样式-表格样式中。 问题&#xff1a;汇总行无效。 即可。 二、续表 直接复制表格及题注到下一页&#xff0c;然后下下面表格的题注修改为…

excel条件格式详解

1、基于公式返回的逻辑值去判断&#xff0c;True则执行条件格式&#xff0c;FALSE不执行。 2、基于区域第一个单元格的公式&#xff0c;依次根据单元格引用方式判断区域内公式是否成立。 函数&#xff1a; 使用条件格式&#xff1a; 函数&#xff1a; 条件格式&#xff1a; 函…

ccf a类会议_CCF推荐 | 人工智能领域顶级会议:截稿日期批量速递

以下为已公布截稿日期的CCF推荐&#xff0c;人工智能领域会议&#xff0c;按照时间排序。个别会议因为没有公布截稿信息而不在所列时间线内。录取率信息为网络上可获得的最近年份数据&#xff0c;不一定是上一年的&#xff0c;文中尽量选择同时带有投稿量的数据年份供大家参考.…

python递归调用详解_Python递归调用自己的函数

原博文 2019-11-16 10:36 − def fact(x): if x 1: return 1 else: return x * fact(x-1) ...0191 相关推荐 2019-09-28 21:13 − Python python是一种跨平台的计算机程序设计语言&#xff0c;是一种面向对象的动态类型语言。 最初被设计用于编写自动化脚本(shell)&#xff0c…

vue跳转到外部链接_前端实战项目:Vue.js实现外卖平台webapp,饿了么项目的翻版...

链接&#xff1a;https://github.com/ljianshu/mt-app适合没有经验的朋友。项目涉及到技术栈&#xff1a;vue全家桶&#xff1a;Vue、Vue-router、Vue-cli等 组件化&#xff1a;单Vue文件 模块化&#xff1a;ES6 Module 第三方模块&#xff1a;better-scroll axios等 基础开发环…

令xtu3service开机时立即启动_Mac开机时可以使用的快捷键 苹果电脑快捷键使用介绍...

大家都知道所有电脑在开机时&#xff0c;按住一些按键可以访问一些功能&#xff0c;当然Mac电脑也不例外。苹果电脑通过在开机启动时按住一个或多个按键可以访问一些Mac功能和工具。如果各位用户使用这些开机键组合键中的任何一个&#xff0c;可在按下电源按钮后&#xff0c;重…

word 插入图片显示不全

word插入图片显示不全&#xff1a; 解决方案&#xff1a; 选中图片-段落-行距-选择单倍、或者多倍行距都可以。即可。

操作系统-进程同步与互斥易混点

解惑1&#xff1a; 为使多个进程能互斥的访问某临界资源&#xff0c;只须为该资源设置 一个互斥信号量 mutex&#xff0c;初值为 1&#xff08;代表临界资源只有一个&#xff09; mutex初值为1.取值范围为[-1,0,1] 当mutex1时&#xff0c;表示两个进程皆未进入需要互斥访问的…