【docker】docker总结

一、Docker简介

  • Docker是开源应用容器引擎,轻量级容器技术。
  • 基于Go语言,并遵循Apache2.0协议开源
  • Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux系统上,也可以实现虚拟化
  • 容器完全使用沙箱技术,相互之间不会有任何接口
  • 类似于虚拟机技术(vmware、vitural),但docker直接运行在操作系统(Linux)上,而不是运行在虚拟机中,速度快,性能开销极低

白话文,简介就是:

Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。
运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操 作系统,安装好后什么都有了。

二、Docker核心概念

  • docker镜像(Images):Docker镜像是用于创建Docker容器的模板
  • docker容器(Container):镜像启动后的一个实例称为容器,容器是独立运行的一个或一组应用,
  • docker客户端(Client):客户端通过命令行或其他工具使用Docker API(https://docs.docker.com/reference/api/docker_remote_api)与Docker的守护进程进行通信
  • docker主机(Host):一个物理或虚拟的机器用来执行Docker守护进程和容器
  • docker仓库(Registry):Docker仓库用来存储镜像,可以理解为代码控制中的代码仓库,Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用

三、Docker安装及启停

1. 查看centos版本

Docker 要求 CentOS 系统的内核版本高于 3.10

通过命令:

uname -r

查看当前centos版本,如版本不符,需升级系统版本

2 升级软件包及内核(可选)
yum update
3. 安装docker
yum install docker
4. 启动docker
systemctl start docker
5. 将docker服务设为开机启动
systemtctl enable docker
5. 停止docker
systemtctl stop docker

四、Docker常用命令及操作

4.1 docker镜像命令

通常情况下,Docker的镜像都放在Docker的官网 Docker Hub上,点此前往官网

4.1.1 镜像检索

除了可以在Docker Hub上搜索镜像外,还可以通过命令 docker search xxx 进行搜索,下面以 mysql 为例:

docker search mysql

结果如下:

请添加图片描述

4.1.2 镜像下载

下载命名为:docker pull 镜像名:tag,其中tag多为系统的版本,可选的,默认为least

docker pull mysql
4.1.3 镜像列表

获取已下载镜像列表命令:docker images
请添加图片描述

其中,

RESPOSITORY为镜像名
TAG为镜像版本,least代表最新版
IMAGE_ID为该镜像唯一ID
CREATED为该镜像创建时间
SIZE为该镜像大小

4.1.1 镜像删除

删除指定镜像:

docker rmi image-id

删除所有镜像:

docker rmi $(docker images -q)
4.2 容器操作

可以理解为软件下载(下载QQ)–>安装(QQ)–>运行(QQ)的过程。
下面以Tomcat为例

4.2.1 搜索镜像
docker search tomcat
4.2.2 下载镜像
docker pull tomcat
4.2.3 根据镜像启动容器

最简单的运行镜像为容器的命令如下:

docker run --name container-name -d image-name

运行一个容器,使用docker run命令即可。

-- name:为容器起一个名称
-d:detached,执行完这句命令后,控制台将不会阻塞,可以继续输入命令操作
image-name:要运行的镜像名称

4.2.4 查看运行中容器

可通过如下命令,查看运行中的容器列表:

docker ps

请添加图片描述

CONTAINER ID:启动时生成的ID
IMAGE:该容器使用的镜像
COMMAND:容器启动时执行的命令
CREATED:容器创建时间
STATUS:当前容器状态
PORTS:当前容器所使用的默认端口号
NAMES:启动时给容器设置的名称

4.2.5 停止运行中容器

通过以下命令来停止运行中的容器:

docker stop container-name/container-id
4.2.5 查看所有的容器

通过以下命令可查看运行和停止的所有容器:

docker ps -a
4.2.6 启动容器

通过以下命令启动容器:

docker start container-name/container-id
4.2.7 删除容器

删除单个容器:

docker rm container-id

删除所有容器:

docker rm $(docker ps -a -q )
4.2.8 启动做端口映射的容器

Docker运行容器之后却发现没IP,没端口,也就是说,启动容器的时候如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。 所以需要通过Docker端口映射来实现网络访问。

Docker的端口映射通过-p参数实现,命令如下:

docker run --name tomcat1 -d tomcat
docker run --name tomcat2 -d -p 8888:8080 tomcat

如上,就把主机端口8888请求映射到Docker容器内部端口8080了。

执行完这两条命令后,通过docker ps查看:

请添加图片描述

通过PORTS可以看出,tomcat2是做了端口映射的,tomcat1是没进行映射过的。

分别通过浏览器访问:

http://*.*.*.*:8080/ // tomcat1默认端口

http://*.*.*.*:8888/ //

做过端口映射的Tomcat2,8888会转发请求到tomcat2的8080
结果如下:

第一个请求是无法请求到的,原因开篇处说过了。
第二个请求是可以正常进行请求的,会由tomcat2容器进行处理

端口映射格式:

ip:hostport:containerport  #指定ip、指定主机port、指定容器port
ip::containerport        #指定ip、未指定主机port、指定容器port
hostport:container         #未指定ip port、指定主机port、指定容器port  
4.2.9 查看容器日志

查看当前容器日志,可通过如下命令:

docker logs container-id/container-name
4.2.10 查看端口映射

可以通过如下命令查看容器映射了哪些端口及协议:

docker port container-id

示例:

[root@docker ~]#docker port 46114af6b44e
8080/tcp -> 0.0.0.0:8888
[root@docker ~]#docker port cea668ee4db0

如果返回空,则代表没进行端口映射。

4.2.11 登录退出容器

运行中的容器其实是一个功能完备的Linux操作系统,所以我们可以像常规系统一样进行登陆及退出操作。

登录命令为:

docker exec -it container-id/container-name bash

退出命令为:

exit
4.2.12 更多操作命令

更多命令可以参考:
https://docs.docker.com/engine/reference/commandline/docker/

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

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

相关文章

No matching variant of com.android.tools.build:gradle:7.4.2 was found.

一、报错信息 创建个新项目,运行直接报错,信息如下: No matching variant of com.android.tools.build:gradle:7.4.2 was found. The consumer was configured to find a runtime of a library compatible with Java 8, packaged as a jar,…

shell 条件语句

目录 测试 test测试文件的表达式 是否成立 格式 选项 比较整数数值 格式 选项 字符串比较 常用的测试操作符 格式 逻辑测试 格式 且 (全真才为真) 或 (一真即为真) 常见条件 双中括号 [[ expression ]] 用法 &…

关于一些bug的解决1、el-input的输入无效2、搜索之后发现数据不对3、el多选框、单选框点击无用4、

el-input输入无效 原来的代码是 var test null 但是我发现不能输入任何值 反倒修改test的初始值为123是可以的 于是我确定绑定没问题 就是修改的问题 于是改成 var test ref() v-model绑定的值改成test.value就可以了 因为ref是相应式的 可以通过输入…

Go语言多线程爬虫万能模板它来了!

对于长期从事爬虫行业的技术员来说,通过技术手段实现抓取海量数据并且做到可视化处理,我在想如果能写一个万能的爬虫模板,后期遇到类似的工作只要套用模板就能解决大部分的问题,如此提高工作效率何乐而不为? 以下是一个…

Mac自带的看图如何连续查看多张图片

一、问题 mac看访达里的图片时,双击打开一张图片,然后按上下左右键都没法切换到另外的图片。而且也没找到像window一样单击缩略图可以看到预览图。其实是自己不懂得怎么使用,哈哈哈😂 二、方法 2.1、图标方式 可以看到缩略图&a…

新的centos7.9安装jenkins(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 接上一节文章。 这个版本默认git也安装好了,所以全局配置这个不需要了。 maven安装3.9.3版本…

前缀和——DP35 【模板】二维前缀和

文章目录 🍎1. 题目🍒2. 算法原理🍅3. 代码实现 🍎1. 题目 题目链接:【模板】二维前缀和_牛客题霸_牛客网 (nowcoder.com) 描述 给你一个 n 行 m 列的矩阵 A ,下标从1开始。 接下来有 q 次查询&#xff0…

【OpenCV实现图像:使用OpenCV生成拼图效果】

文章目录 概要通用配置不考虑间隔代码实现考虑间隔代码实现小结 概要 概要: 拼图效果是一种将图像切割为相邻正方形并重新排列的艺术效果。在生成拼图效果时,可以考虑不同的模式,包括是否考虑间隔和如何处理不能整除的部分。 不考虑间隔&a…

【NLP】GPT 模型如何工作

介绍 2021 年,我使用 GPT 模型编写了最初的几行代码,那时我意识到文本生成已经达到了拐点。我要求 GPT-3 总结一份很长的文档,并尝试了几次提示。我可以看到结果比以前的模型先进得多,这让我对这项技术感到兴奋,并渴望…

HQL刷题 50道

HQL刷题 50道 尚硅谷HQL刷题网站 答案 1.查询累积销量排名第二的商品 select sku_id from (select sku_id, dense_rank() over (order by total desc) rnfrom (select sku_id, sum(sku_num) totalfrom order_detailgroup by sku_id) t1) t2 where rn 2;2.查询至少连续三天下…

php 时区查看和设置

php的时区&#xff0c;关系到相关时间函数的结果 其他相关&#xff1a; linux时区设置&#xff1a;链接 pgsql时区设置&#xff1a; 一、查看可以用的时区列表 新建一个php文件&#xff0c;输入下面程序即可 <?php echo "<pre>"; var_dump(timezone_id…

IOS+Appium+Python自动化全实战教程

由于公司的产品坐落于不同的平台&#xff0c;如ios、mac、Android、windows、web。因此每次有新需求的时候&#xff0c;开发结束后&#xff0c;留给测试的时间也不多。此外&#xff0c;一些新的功能实现&#xff0c;偶尔会影响其他的模块功能正常的使用。 网上的ios自动化方面的…

计算机网络之物理层(数据通信有关)

一、概述 1.1物理层引入的目的 屏蔽掉传输介质的多样性&#xff0c;导致数据传输方式的不同&#xff1b;物理层的引入使得高层看到的数据都是统一的0,1构成的比特流 1.2.物理层如何实现屏蔽 物理层靠定义的不同的通信协议&#xff08;一般称通信规程&#xff09; 这些协议…

基于高质量训练数据,GPT-4 Turbo更出色更强大

11月7日消息&#xff0c;OpenAI在首届开发者大会上正式推出了GPT-4 Turbo。 与GPT-4相比&#xff0c;GPT-4 Turbo主要有6方面的提升&#xff1a; 1、扩展下文对话长度&#xff1a;GPT4最大只能支持8k的上下文长度&#xff08;约等于6000个单词&#xff09;&#xff0c;而GPT-4…

智能小车速通版——手把手教程

考虑到大部分学校&#xff0c;会发放简易小车来作为智能车初期培训和筛选的工具&#xff0c; 于是&#xff0c;我写一个简单的教程&#xff0c;能够实现简单小车的电磁循迹。 通过这个教程&#xff0c;能够通过简化的步骤搭建寻迹小车&#xff0c;进而了解整个智能车是如何实…

Redis-Redis持久化,主从哨兵架构详解

Redis持久化 RDB快照&#xff08;snapshot&#xff09; 在默认情况下&#xff0c; Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。 你可以对 Redis 进行设置&#xff0c; 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时&#xff0c; 自动保存一次数…

【操作系统】I/O软件层次结构

文章目录 1. 前言2. I/O软件层次结构2.1 用户层软件2.2 设备独立性软件2.3 设备驱动程序2.4 中断处理程序 1. 前言 偶然看到“程序员的护城河是什么”这个话题&#xff0c;作为一个工作两年多的程序员吧&#xff0c;经常看到网上关于各种35岁危机、裁员甚至猝死之云云。最近也…

modbus协议及modbus TCP协议

一、Modbus协议 1.起源 Modbus由Modicon公司于1979年开发&#xff0c;是一种工业现场总线协议标准。 Modbus通信协议具有多个变种&#xff0c;其中有支持串口&#xff0c;以太网多个版本&#xff0c;其中最著名的是Modbus RTU&#xff08;通信效率最高&#xff0c;基于串口&am…

springboot前后端分离项目配置https接口(ssl证书)

文章目录 说明vue.js前端部署vue.js项目axios请求配置本地创建日志文件创建Dockerfile文件配置ssl证书nginx.confvue项目打包上传创建容器部署 后端springboot项目部署配置ssl证书打包部署 补充&#xff1a;jsk证书和pfx证书补充&#xff1a;两种证书的转化JKS转PFXPFX 转 JKS …

Elasticsearch:将最大内积引入 Lucene

作者&#xff1a;Benjamin Trent 目前&#xff0c;Lucene 限制 dot_product (点积) 只能在标准化向量上使用。 归一化迫使所有向量幅度等于一。 虽然在许多情况下这是可以接受的&#xff0c;但它可能会导致某些数据集的相关性问题。 一个典型的例子是 Cohere 构建的嵌入&#x…