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

Docker安装、卸载,以及各种操作

docker是一个软件,是一个运行与linux和windows上的软件,用于创建、管理和编排容器;docker平台就是一个软件集装箱化平台,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,也可以实现虚拟化,并且容器之间不会有任何接口。

安装Docker

我的安装在了centos 7-64-2上面了

(1).需要会一点linux基础

(2).Centos7以上版本

(3).使用xshell连接远程服务器进行操作

1.环境查看 

查看系统内核 uname -r      需要系统内核3.10以上的

2.查看系统版本
语法:建议使用这条命令查看cat /etc/os-release   或 cat /etc/redhat-release 这个是适合redhat系的linux
需要7版本以上的

3.使用docker官网帮助文档

4.找到Developers里面有个Docs,双击打开

5.Get Docker就是下载docker,找到自己要下载的,我要下载linux版本,根据需求下载

6.找到Docker Engine 这是docker引擎,在下面找到Centos

7.卸载旧的安装包,开始前尽量卸载一下,以防万一

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

8.出现这个没有匹配说明你没装过docker

8.下载安装包

sudo yum -y install  yum-utils 或 sudo yum  install -y yum-utils    ----y放哪都可以


9.设置镜像仓库

官网默认是国外的镜像,速度太慢不建议用,建议用阿里云的镜像,放在下面了
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

这个是阿里云镜像,使用国内阿里云的镜像 ,十分快(推荐用这个镜像)

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

10.更新yum软件包索引

yum makecache fast

11.安装docker相关内容   docker-ce就是社区版本(一般使用的都是社区版)  docker-ee就是企业版本

yum -y install  docker-ce docker-ce-cli containerd.io

12.启动docker (只要下面没提示就是执行成功)

systemctl start docker

如果启动docker报错  

报错原因:这是因为缺少 rhel-push-plugin.socket 单元,该单元是rhel-push-plugin软件包的一部分

接着执行  curl -sSL https://get.docker.com/ | sh

13.使用docker version验证是否安装成功

14.用hello-world测试一下docker引擎,执行 docker run hello-world

15.查看一下下载的这个hello-world镜像 docker images

16.同时也可以给docker设置开机自启状态,这样每次都不用手动启动了

systemctl enable docker  开启自启动

systemctl status docker  查看docker状态

查看已启动的服务

systemctl list-units --type=service

查看是否设置开机启动

systemctl list-unit-files | grep enable

到此docker下载完成

卸载Docker

想要卸载docker怎么做?

只需要两步:

1.卸载依赖

yum remove docker-ce docker-ce-cli containerd.io

2.删除资源

rm -rf /var/lib/docker             /var/lib/docker 是docker默认工作路径          

Docker镜像加速器

1.百度aliyun

2.找到容器镜像服务ACR

3.搞一个个人版,用身份证验证一下就行了,很简单

4.找到镜像加速器Centos

5.在xshell执行下面4条命令:4条命令直接从上面加速器中粘贴,不容易出错

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://qhceg9a4.mirror.aliyuncs.com"] } EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

到此镜像加速器配置完成

Run流程和Docker原理

这个就是Run流程和Docker原理图

底层原理

Docker是怎么工作的?

Docker是一个Client -Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。

DockerServer接收到Docker-Client指令,就会执行这个命令

为什么Docker比VM快?

1.Docker有着比虚拟机更少的抽象

由于docker不需要Hypervisor(虚拟机),实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU,内存利用率上docker有绝对优势

2.Docker利用的是宿主机的内核,不需要加载操作系统OS内核,而VM需要Guest OS内核

新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核,虚拟机需要加载OS,返回新建过程是分钟级别,而docker直接利用宿主机操作系统,省略了此过程,因此新建一个docker容器,只需要几秒

Docker和VM区别

1,启动速度不同:docker启动快速属于秒级别,而虚拟机通常需要几分钟去启动;2、性能不同:docker需要的资源更少;3、隔离性不同:docker属于进程之间的隔离,隔离性较弱,而虚拟机可以实现系统级别的隔离。4.安全不同,docker 的安全性更弱,5.利用率不同:利用率上docker有绝对优势

Docker常用命令

官方文档找到docker命令大全

docker version   显示docker的版本信息

docker info         显示docker的系统信息,包括镜像和容器的数量

docker --help      帮助命令  如:docker images --help

镜像命令

docker images  查看所有本机的主机上的镜像

REPOSITORY  镜像的仓库    TAG 镜像的标签   IMAGE D   镜像的id  

CREATED   镜像创建的时间   SIZE  镜像的大小

查看镜像的常用选项 docker images --help  一般常用的选项就是-a和-q

常用的两个选项

  -a         列出所有镜像
  -q         只显示镜像id

一般 -aq一块使用

docker search 搜索镜像

这个搜索和你在官网上搜索的效果是一样的

我去搜索mysql镜像 docker search mysql

docker search --help  查看可用选项

案例:docker search mysql --filter=STARS=3000

索索出来的镜像是STARS大于3000的

docker pull 下载镜像

下载mysql镜像 docker pull mysql   不指定默认下载最新版本

指定版本下载

docker pull mysql:5.7   版本一定是官网有的,不能乱写

再次查看镜像docker images  

docker rmi 删除镜像

指定删除mysql5.7的镜像,根据镜像id去删除  docker rmi -f 镜像id

也可以指定多个镜像一块删除  docker rmi -f 镜像id1 镜像id2 镜像id3 

递归删除所有镜像 docker rmi -f $(docker images -aq)

查看rmi可用选项

容器命令

说明:我们有了镜像才能去创建容器,我们下载个centos镜像来测试学习

下载centos镜像

新建容器并启动    启动就是用run     语法: docker run [参数] 镜像

查看run常用选项  docker run --help   上面图就是常用选项 -d,-it -p,-P

进入了容器,从主机名变成就id号

ls查看容器内的centos,与外部的centos没有一点关系 容器内部命令还不算完善

退出容器,容器直接退出停止exit     想要退出容器不想停止容器按ctrl+p+q

列出所有运行的容器

docker ps 列出正在运行的容器

docker ps -a 列出正在运行的容器和历史运行的容器

docker ps -n=?显示最近创建的容器  docker ps -n=2

docker ps -q 只显示容器的编号id   一般与a连用

删除容器

语法:docker rm 容器id         指令删除容器,不能删除正在运行的容器,强制删除docker rm -f id

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

docker ps -a -q |xargs docker rm  也是删除所有容器

启动和停止容器操作

docker start 容器id       #启动容器

docker restart 容器id    重启容器

docker stop 容器id       停止正在运行的容器

docker kill 容器id         强制停止当前容器(如果stop不能停掉,就用kill)

一个images镜像通过run命令启动成容器

常用其他命令

通过镜像centos启动容器  docker run -d centos     -d选项是后台运行方式

当你docker ps 查看,发现没启动

常见的坑:docker容器使用后台运行(docker run -d centos),必须要有一个前台进程(docker run -it centos ),如果没有,docker发现没有应用,就会停止掉

查看日志

语法:docker logs -tf --tail 10 id号

logs帮助命令:docker logs --help

-tf  显示日志 

--tail number  显示日志条数

查看容器的进程信息top命令

语法:docker top 容器id

查看镜像元数据

语法:docker inspect 容器id

inspect的帮助命令

进入当前正在运行的容器

语法1:docker exec -it 容器id /bin/bash         -it就是交互式进入

语法2:docker attach 容器id

两者的区别:

docker exec  进入容器后开启一个新的终端,可以在里面操作(常用)

docker attach  进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上

语法:docker cp 容器id: 容器内路径  目的的主机路径    (冒号别忘记)

大致流程:进入容器 docker attach 容器id  ,在容器创建一个文件,然后退出容器exit,查看容器docker ps 尽管容器关闭了,只要他的容器id在就没事,接着开始拷贝,因为我们拷贝到/home目录,一定要cd切换到home目录查看。

docker部署Nginx

1.去搜索Nginx    docker search nginx

2.下载Nginx   docker pull nginx       不指定默认是最新版

3.查看下载的nginx镜像

4.通过镜像去run启动容器

-d  就是后台运行   --name   给容器取个新名字

-p 3344:80 宿主机端口和容器端口(nginx默认端口就是80)

5.本机测试一下3344      curl localhost:3344    看到了Welcome to nginx 说明测试通过

6.通过公网可以访问:   http://192.168.211.15:3344

7.进入容器 docker exec -it nginx01 /bin/bash

8.查找一下nginx配置文件  whereis nginx

9.退出容器,并停止容器

10.发现访问不了了

思考一个问题:我们每次改动nginx配置文件,都需要进入容器内部十分麻烦,我要可以在容器外部提供一个映射路径,达到在容器外修改文件,容器内就可以自动修改,该怎么做到,以后再学习-v 就是数据卷 就能达到这个效果

端口暴露的概念

docker部署tomcat

相关文章:

Docker安装、卸载,以及各种操作

docker是一个软件&#xff0c;是一个运行与linux和windows上的软件&#xff0c;用于创建、管理和编排容器&#xff1b;docker平台就是一个软件集装箱化平台&#xff0c;是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xf…...

深入理解 C 语言的内存管理

文章目录 引言内存管理的重要性C语言内存布局C语言内存管理堆和栈内存的区别和用途内存分配和释放的过程C语言动态内存分配的概念和原因malloc()、calloc() 和 realloc() 等函数的使用悬挂指针和野指针内存泄漏和如何避免结论 引言 C语言是充满力量且灵活的编程语言&#xff0…...

利用Caddy实现http反向代理

利用Caddy实现http反向代理 1 Caddy是什么 Caddy是一个开源的&#xff0c;使用Golang编写的&#xff0c;支持HTTP/2的Web服务端。它的一个显著特征就是默认启用HTTPS。 和nginx类似。 2 多个后端服务 假如现在有3个后端http服务&#xff1a;分别在启动在 app1 http://10…...

【Qt之QVariant】使用

介绍 QVariant类类似于最常见的Qt数据类型的联合。由于C禁止联合类型包括具有非默认构造函数或析构函数的类型&#xff0c;大多数有趣的Qt类不能在联合中使用。如果没有QVariant&#xff0c;则QObject::property()和数据库操作等将会受到影响。 QVariant对象同时持有一个单一…...

xv6实验课程--xv6的写时复制fork(2023)

7. xv6实验课程--xv6的写时拷贝(COW)(2021) 7. xv6实验课程--xv6懒惰分页分配&#xff08;lazy)(2020) 本文来源&#xff1a; https://mp.weixin.qq.com/s/XJkhjrlP232ZDsRyXd0oHQ 已完成的实验代码可以从下列网站获取&#xff1a; git clone https://gitee.com/lhwhit196…...

在Windows或Mac上安装并运行LLAMA2

LLAMA2在不同系统上运行的结果 LLAMA2 在windows 上运行的结果 LLAMA2 在Mac上运行的结果 安装Llama2的不同方法 方法一&#xff1a; 编译 llama.cpp 克隆 llama.cpp git clone https://github.com/ggerganov/llama.cpp.git 通过conda 创建或者venv. 下面是通过conda 创建…...

Spring底层原理学习笔记--第七讲--(初始化与销毁)

初始化与销毁 Spring提供了多种初始化和销毁手段它们的执行顺序 A07Application.java package com.lucifer.itheima.a07;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springfram…...

基于斑马算法的无人机航迹规划-附代码

基于斑马算法的无人机航迹规划 文章目录 基于斑马算法的无人机航迹规划1.斑马搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用斑马算法来优化无人机航迹规划。 1.斑马搜索算法 …...

干货 | 接口自动化测试分层设计与实践总结

接口测试三要素&#xff1a; 参数构造 发起请求&#xff0c;获取响应 校验结果 一、原始状态 当我们的用例没有进行分层设计的时候&#xff0c;只能算是一个“苗条式”的脚本。以一个后台创建商品活动的场景为例&#xff0c;大概流程是这样的(默认已经是登录状态下)&#…...

【Linux】服务器与磁盘补充知识,硬raid操作指南

服务器硬件 cpu 主板 内存 硬盘 网卡 电源 raid卡 风扇 远程管理卡 1.硬盘尺寸: 目前生产环境中主流的两种类型硬盘 3.5寸 和2.5寸硬盘 2.5寸硬盘可以通过使用硬盘托架后适用于3.5寸硬盘的服务器 但是3.5寸没法转换成2.5寸 2.如何在服务器上制作raid 华为服务器为例子做…...

【java】实现自定义注解校验——方法二

自定义注解校验的实现步骤&#xff1a; 1.创建注解类&#xff0c;编写校验注解&#xff0c;即类似NotEmpty注解 2.编写自定义校验的逻辑实体类&#xff0c;编写具体的校验逻辑。(这个类可以实现ConstraintValidator这个接口&#xff0c;让注解用来校验) 3.开启使用自定义注解进…...

算法通关村第六关|白银|二叉树的层次遍历【持续更新】

1.二叉树基本的层序遍历 仅仅遍历并输出全部元素。 List<Integer> simpleLevelOrder(TreeNode root) {if (root null) {return new ArrayList<Integer>();}List<Integer> res new ArrayList<Integer>();LinkedList<TreeNode> queue new Lin…...

vue中通过js控制scss变量

<!--* Description:* Author: 李大玄* Date: 2022-07-28 20:34:43* FilePath: /web-framework-demo/src/views/layout.vue* LastEditors: 李大玄* LastEditTime: 2022-11-01 09:25:31 --> <template><div height"100%" class"b"><inp…...

深度学习理论知识入门【EM算法、VAE算法、GAN算法】和【RBM算法、MCMC算法、HMC算法】

目录 深度学习理论知识入门首先&#xff0c;让我们了解第一个流程&#xff1a;现在&#xff0c;让我们看看第二个流程&#xff1a; EM算法GMM&#xff08;高斯混合模型&#xff09; 深度学习理论知识入门 首先&#xff0c;让我们了解第一个流程&#xff1a; EM&#xff08;Exp…...

Java8实战-总结47

Java8实战-总结47 CompletableFuture&#xff1a;组合式异步编程让代码免受阻塞之苦使用定制的执行器 对多个异步任务进行流水线操作 CompletableFuture&#xff1a;组合式异步编程 让代码免受阻塞之苦 使用定制的执行器 就这个主题而言&#xff0c;明智的选择似乎是创建一个…...

功能: 在web应用程序中、读取文件

通过使用文件 API&#xff0c;web 内容可以要求用户选择本地文件&#xff0c;然后读取这些文件的内容。这种选择可以通过使用 HTML <input type"file"> 元素或通过拖放来完成。 1.通过 click() 方法使用隐藏的文件 input 元素 你可以隐藏公认难看的文件 <…...

TDD、BDD、ATDD以及SBE的概念和区别

在软件开发或是软件测试中会遇到以下这些词&#xff1a;TDD 、BDD 、ATDD以及SBE&#xff0c;这些词代表什么意思呢&#xff1f; 它们之间有什么关系吗&#xff1f; TDD 、BDD 、ATDD以及SBE的基本概念 TDD&#xff1a;&#xff08;Test Driven Development&#xff09;是一种…...

Android studio:打开应用程序闪退的问题

目录 问题描述分析原因解决方法 在开发Android应用程序的过程中遇到的问题 问题描述 在开发&#xff08;或者叫测试&#xff0c;这么简单的程序可能很难叫开发&#xff09;好一个android之后&#xff0c;在Android studio中调试开发好的app时&#xff0c;编辑器没有提示错误&a…...

Mysql数据库性能优化--performance_SCHEMA.STATEMENTS语句分析

使用performance_schema解决常见的故障案例 1 检查sql语句 使用performance_schema很容易找到引起性能问题的查询以及原因。 要启动语句检测&#xff0c;需要启动statement类型的插装。 插装类&#xff1a; statement/sql sql语句&#xff0c;如select,或者create table。s…...

[C/C++]数据结构 链表OJ题: 反转链表

描述: 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表 示例: 方法一: 让链表指向反向 如图所示: 代码思路: struct ListNode* reverseList(struct ListNode* head) {struct ListNode* n1NULL;struct ListNode* n2head;struct ListNode*…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...