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

Docker知识点总结

二、Docker基本命令:

Docker支持CentOs 6 及以后的版本;
CentOs7系统可以直接通过yum进行安装,安装前可以

1、查看一下系统是否已经安装了Docker:

                yum list installed | grep docker

2、安装docker:

                yum install docker -y

        -y 表示自动确认,中途就不需要确认了,安装成功如下:

3、卸载docker:

        把这三个都卸载掉:

 4、查看docker版本:

                docker --version / docker -v

5、安装之后启动Docker服务:

                systemctl start docker 或者 service docker start

6、停止:

                systemctl stop docker 或者 service docker stop

7、重启:

                systemctl restart docker 或者 service docker restart

8、检查docker进程的运行状态:

                systemctl status docker 或者 service docker status

9、查看docker进程:

                ps -ef | grep docker

10、查看docker系统信息:

                docker info

11、查看所有的帮助信息:

                docker


12、查看某个commond命令的帮助信息:

                docker commond  --help

13、设置开机启动docker:

                systemctl enable docker
 

三、Docker的使用初体验

3.1、Docker的运行机制:

我们知道Docker并不是容器,而只是一个管理容器的引擎;

Docker的底层运行原理:
Docker服务启动→下载镜像→启动该镜像得到一个容器→容器里运行着我们想要的程序;

        我们在linux命令行操作时实质上相当于是docker引擎的客户端client,我们通过客户端发送一些指令,发送给docker daemon(docker里面核心的底部引擎),发送给它之后,docker容器引擎开始解析,首先它会去本地里找有没有这个镜像,如果有的话就直接启动起来这个镜像,得到对应的容器,程序就运行在容器里面;本地仓库没有这个镜像的话就去Registry仓库里找,去下载镜像,Registry是一个仓库,找到之后它就会下载。

3.2、 配置Docker镜像加速器

        默认情况下,将从docker hub(https://hub.docker.com/)上下载docker镜像,现在已经访问不了,所以配置一下镜像加速器:

         中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["镜像加速地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker# 示例
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]	
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3.3、 Docker 镜像相关命令
1、搜索镜像:

         从网络中查找需要的镜像:docker search 镜像名称
         例如: docker search tomcat  搜索tomcat镜像

2、下载镜像:

        从Docker 仓库下载镜像到本地,镜像名称格式为 名称号:版本号,如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。如果你反复执行pull,它会把这个镜像下载到最新版本。

                 docker pull 镜像名称

                 例如:docker pull  tomcat 


3、运行镜像:

                docker run tomcat     前台运行,前台运行的话 ctrl+c就可以关掉了

                docker run tomcat -d 后台运行,加参数-d

                docker run  镜像的ID号 -d

                docker run  名称号:版本号     -d

        docker run tomcat 报这个错:
        Cannot find /usr/local/tomcat/bin/setclasspath.sh 

解决方案:先下载docker pull tomcat:9.0.56,然后docker run -d tomcat:9.0.56

          镜像启动后你就得到了一个容器,通过ps-ef | grep tomcat查看,检查tomcat镜像是否启动容器成功:

4、显示本地已有的镜像:

                docker images
                docker images -q #查看所有镜像的id

         在列出信息中,可以看到几个字段信息:

  •         REPOSITORY:来自于哪个仓库,比如docker.io/tomcat
  •         TAG:镜像的标记,比如latest
  •         lMAGE ID:镜像的ID号(每一个镜像都有一个唯一的ID)
  •         CREATED:创建时间,表示你这个镜像官方是在什么时候创建的
5、删除镜像:删除本地镜像

              docker rmi 镜像id/名称号:版本号             #删除指定本地镜像
              docker rmi 'docker images -q'                 #删除所有本地镜像

              注意是rmi,不是rm,rm是删除容器

6、查看当前运行的容器:

                 docker ps

  • CONTAINER ID:   容器的ID     
  • IMAGE :  容器是通过什么镜像运行的(是通过Tomcat镜像运行的)           
  • COMMAND: 运行的命令是catalina.sh run         
  • CREATED:  容器是什么时候启动的         
  • STATUS: 运行状态(运行了三小时)             
  • PORTS :  端口是8080(也就是容器里面的Tomcat端口是8080)            
  • NAMES:容器的名称,这个名字是docker引擎自动生成的
7、如何关闭/停止容器:

                docker stop 容器ID/容器的名称

        注意:启动镜像用的是镜像名字或者镜像ID!!!镜像启动后你就得到了一个容器,但是关闭容器实用的容器名字或容器ID 

8、这两个命令都可以查看容器是否在运行:

                ps -ef | grep tomcat    docker ps

 9、查看所有的容器:

                docker ps -a

                docker ps只是查看运行着的容器

10、启动容器的两种方式:

        启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态的容器重新启动。

               通过镜像启动容器: docker run -d redis

                docker run  镜像的ID号 -d

                docker run  名称号:版本号     -d

                端口映射:docker run -d -p 8080:8080 tomcat:9.0.56


                已经停止的容器,我们可以使用命令docker start来启动。

                开启容器:

                                docker start 容器id或容器名称
                因为Docker的容器实在太轻量级了,很多时候用户都是随时删除和新建容器
 

 11、删除容器:

                docker rm  容器id或容器名称
                删除容器时,容器必须是停止状态,否则会报错;

                删除所有容器 :docker rm $(docker ps -aq)

12、进入容器内部:

                docker exec  -it  容器id或容器名称  bash

13、查看容器的更多信息:

                docker inspect +容器id或容器名称

14、查看运行着的容器id:

                docker ps -q 

15、查看所有容器id (包括未运行的容器的id):

                 docker ps -aq 

16、停用全部运行中的容器:

                docker stop $(docker ps -q)

                docker ps -q 查看运行着的容器id     docker images -q #查看所有镜像的id

                docker ps --help 查看参数说明

 17、删除所有容器:

                docker rm $(docker ps -aq)

18、一条命令实现停用并删除容器:

                docker stop $(docker ps -q)& docker rm -f $(docker ps -aq)

                -f 表示强制移出,一定要加上

3.4、Docker的网络访问机制:

        tomcat镜像启动后你就得到了一个容器,通过ps-ef | grep tomcat查看进程,tomcat镜像启动容器成功:

        但是这个Tomcat不是直接运行在Linux上,而是运行在docker容器中,当然本身也在Linux上,Linux上有一个容器,容器里有一个Tomcat。

        理论上我们应该可以去访问这个Tomcat,我们如果是在虚拟机Linux里面运行着一个Tomcat,那我们可以在浏览器输入IP+端口可以去访问,tomcat的默认端口是8080,但是我们现在访问失败:

        如何去访问Docker中的tomcat呢,这就涉及到了Docker的网络机制 :

  • 容器内的网络服务和外部机器不能直接通信
  • 外部机器和宿主机可以直接通信
  • 宿主机和容器可以直接通信
  • 当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射到宿主机的端口上。外部机器访问宿主机的端口,从而间接访问容器的服务
  • 这种操作称为:端口映射

        从客户机上访问容器,需要有端口映射,docker容器默认采用桥接模式与宿主机通信,需要将宿主机的ip端口映射到容器的ip端口上;

        现在我们的浏览器中输入ip+端口 要去访问,我们不能直接访问docker里面的Tomcat,用户在访问的时候首先肯定是访问的Linux,这个Linux然后要转发到Tomcat里面去,我们需要Tomcat和当前Linux做一个端口映射,然后就可以转发进去了。

         docker容器里面的Tomcat的网络通讯与Linux本身采用一种网络桥接模式来通讯的,桥接模式通讯,我们就需要基于一个端口映射才可以让我们访问到docker容器里面的Tomcat。

具体操作如下:

1、我们先关闭tomcat容器: docker stop 215e46e97685

2、关闭容器后,重新启动容器:docker run -d -p 8080:8080 tomcat:9.0.56

         加上参数-p,意思是把你当前Linux上的某一个端口映射到容器里面的某一个端口,这样就可以实现端口映射:我们浏览器访问Linux里面的8080,然后Linux里的8080转发到容器里的8080,这样我们就可以实现访问了

3、我们再来查看一下运行着的容器 : docker ps 

         tomcat进程正在运行: ps -ef | grep tomcat

       总结:docker ps     ps -ef | grep tomcat  这两种方式都可以查看tomcat是否在运行。

4、我们现在再来访问试试:

 3.5、进入docker容器内部:

        前面我们已经把Tomcat镜像启动了,接下来我们进入Docker容器,看一下容器里面有一些什么东西:

        进入容器:  打开一个标准的输入流分配到一个虚拟的控制台,然后在这个控制台上执行bash就可以进入docker容器的命令行。简单点其实就是进入docker容器的命令行

                   docker exec -it 容器id  bash

  •          其中i表示交互式的、保持标准输入流打开;
  •          t表示虚拟控制台,分配到一个虚拟控制台;
  •          bash:linux的shell命令

          docker exec -it 8fca7219b9a8 bash:

        退出容器:exit

                                                 

 以redis为例:

 

 

相关文章:

Docker知识点总结

二、Docker基本命令&#xff1a; Docker支持CentOs 6 及以后的版本; CentOs7系统可以直接通过yum进行安装&#xff0c;安装前可以 1、查看一下系统是否已经安装了Docker: yum list installed | grep docker 2、安装docker&#xff1a; yum install docker -y -y 表示自动确认…...

Redis 消息队列:构建消息代理的 4 个简单步骤

消息代理是一种使系统、应用程序和服务能够通信和交换信息的软件。它在正式消息传递协议之间转换消息,并允许相互依赖的服务直接“对话”,即使是用不同语言编写或在不同平台上实现也是如此。在微服务中使用异步通信时,通常会使用消息代理。 消息代理可确保可靠且稳定的通信,…...

kafka三节点集群平滑升级过程指导

一、前言 Apache Kafka作为常用的开源分布式流媒体平台&#xff0c;可以实时发布、订阅、存储和处理数据流,多用于作为消息队列获取实时数据&#xff0c;构建对数据流的变化进行实时反应的应用程序&#xff0c;已被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型…...

Golang 简介与基本语法学习

Go&#xff0c;也被称为 Golang&#xff0c;是一门由 Google 设计的开源编程语言。它旨在提供高效的开发体验&#xff0c;同时具备并发性、内存安全和简洁性。本篇博客将介绍 Golang 的基本语法和一些示例&#xff0c;帮助读者快速入门这门令人着迷的语言。 简介 Go 语言的设…...

深入理解网络通信基本原理和tcp/ip协议

深入理解网络通信基本原理和tcp/ip协议 一、计算机网络体系1&#xff0c;计算机网络体系结构2&#xff0c;网络中数据传输2.1&#xff0c;浏览器中输入一个url的执行流程2.2&#xff0c;数据在网络中是的传输流程 3&#xff0c;三次握手和四次挥手3.1&#xff0c;三次握手3.1.1…...

Jetson系统烧录环境搭建

一 序言 Jetson 系列产品烧录系统的方法一般有两种&#xff0c;一种为使用 NVIDIA 官方提供 的 SDK manager 软件给 Jetson 设备烧录系统&#xff08;请查看说明文档《Jetson 产品使用 SDKmanager 烧录系统》&#xff09;。另一种即为当前文档所描述的&#xff0c;在安装 Ubun…...

【MySQL】:约束全解析

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. 约束概述二. 约束演示三. 外键约束3.1 介绍3.2 语法3.3 删除/更新行为 &…...

设计一基于Text generation web UI的语言模型部署与远程访问的方案​

前言 Text generation web UI可为类ChatGPT的大型语言模型提供能够快速上手的网页界面&#xff0c;不仅可以提高使用效率&#xff0c;还可满足私有化部署&#xff0c;或对模型进行自定义。目前&#xff0c;该Web UI已经支持了许多流行的语言模型&#xff0c;包括LLaMA、llama.…...

大数据概述

学习大数据有什么用&#xff1f; 2010年&#xff1a;大数据技术体系开始在国内火热 2015年&#xff1a;国务院印发《促进大数据发展行动纲要》 2016年&#xff1a;发改委发布关于组织实施促进大数据发展重大工程的通知 2017年&#xff1a;工信部印发大数据产业规划(2016-20…...

Muduo库编译学习(1)

1.muduo库简介 muduo是由Google大佬陈硕开发&#xff0c;是一个基于非阻塞IO和事件驱动的现代C网络库&#xff0c;原生支持one loop per thread这种IO模型&#xff0c;该库只支持Linux系统&#xff0c;网上大佬对其褒贬不一&#xff0c;作为小白用来学习就无可厚非了。 git仓库…...

【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug

文章目录 前言 State断点 Transition断点 条件断点 按State步进 Watch Data Value Sequence Viewer 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑…...

ZYNQ--MIG核配置

文章目录 MIG核配置界面多通道AXI读写DDR3MIG核配置界面 Clock Period: DDR3 芯片运行时钟周期,这个参数的范围和 FPGA 的芯片类型以及具体类型的速度等级有关。本实验选择 1250ps,对应 800M,这是本次实验所采用芯片可选的最大频率。注意这个时钟是 MIG IP 核产生,并输出给…...

MySQL 多表查询 连接查询 内连接

介绍 内连接查询是两张表中交集的部分 连接模式 隐式内连接 SELECT 字段列表 FROM 表1,表2 WHERE 条件显式内连接 SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 连接条件案例 有两张表一个表为学生表&#xff0c;另一个表为班级表&#xff0c;现在需要查询学生时候在查…...

T - SQL使用事务 及 在Winform使用事务

事务适用场景 1 事务使用在存储过程中&#xff0c;直接在数据库中进行编写 2 事务使用在Winfrom项目中 SQl&#xff1a;使用事务转账操作的实例 一般都会找一个变量记录错误的个数&#xff0c;error记录上一句sql的错误和错误编号 declare errornum int 0 -- 定义…...

string(三)--实现

大家看了这么久的string了&#xff0c;可能对string的简单实现有兴趣&#xff0c;所以我实现了一个string类的常用接口&#xff0c;大家可以自行查看&#xff1a; 我是分多文件写的&#xff1a; string.h: #pragma once #define _CRT_SECURE_NO_WARNINGS 1 #include <ios…...

textbox跨线程写入

实现实例1 实现效果 跨线程实现 // 委托&#xff0c;用于定义在UI线程上执行的方法签名 //public delegate void SetTextCallback(string text);public void textBoxText(string text){// 检查调用线程是否是创建控件的线程 if (textBox1.InvokeRequired){// 如果不是&#…...

幻兽帕鲁专用服务器搭建之Linux部署配置教程

大家好我是飞飞&#xff0c;上一期我分享了Windows系统的幻兽帕鲁服务器搭建教程。因为幻兽帕鲁这游戏对服务器的配置有一定的要求&#xff0c;很多小伙伴就寻思用Linux系统搭建占用会不会小一点&#xff1f;有计算机基础的小伙伴都知道Linux系统和Windows系统相比&#xff0c;…...

Kubernetes: 本地部署dashboard

本篇文章主要是介绍如何在本地部署kubernetes dashboard, 部署环境是mac m2 下载dashboard.yaml 官网release地址: kubernetes/dashboard/releases 本篇文章下载的是kubernetes-dashboard-v2.7.0的版本&#xff0c;通过wget命令下载到本地: wget https://raw.githubusercont…...

Outlook邮箱IMAP密码怎么填写?账户设置?

Outlook邮箱IMAP密码是什么&#xff1f;Outlook如何设置IMAP&#xff1f; 许多用户会选择通过IMAP协议将邮箱与各种邮件客户端进行连接。而在设置过程中&#xff0c;填写IMAP密码是必不可少的一步。那么&#xff0c;Outlook邮箱的IMAP密码应该如何填写呢&#xff1f;接下来&am…...

[计算机网络]--I/O多路转接之poll和epoll

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、poll函…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...