Docker架构及常用的命令

一、初识Docker

1、 docker是一个快速交付应用、运行应用的技术,具备下列优势:

  • 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
  • 运行时利用沙箱机制形成隔离容器,各个应用互不干扰
  • 启动、移除都可以通过一行命令完成,方便快捷

2、镜像和容器

镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见。

3、DockerHub 镜像托管平台

DockerHub是一个官方的Docker镜像的托管平台。这样的平台称为Docker Registry

4、Docker架构

Docker是一个CS架构的程序,由两部分组成:

  • 服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等
  • 客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令

二、CentOS安装Docker及启动

1、安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

2、如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

3、设置docker本地镜像源

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast

4、开始安装docker-ce

docker-ce为社区免费版本

yum install -y docker-ce

Docker应用需要用到各种端口,如果只是练习建议直接关闭防火墙!否则就去释放对应的端口就行

5、关闭防火墙

  • 关闭 systemctl stop firewalld
  • 禁止开机启动防火墙 systemctl disable firewalld

6、启动Docker服务

  • systemctl start docker # 启动docker服务
  • systemctl stop docker # 停止docker服务
  • systemctl restart docker # 重启docker服务
  • systemctl enable docker #开机自启

使用docker -v查询docker版本,systemctl status docker查询启动状态

三、镜像基本操作及命令

1、镜像名称组成规则

镜像名称一般分两部分组成:[repository]:[tag]。 在没有指定tag时,默认是latest,代表最新版本的镜像。例如mysql:5.7mysql是repository ,5.7则是tag
在这里插入图片描述

2、镜像命令

常见的镜像操作命令如图:
在这里插入图片描述

2.1 查看镜像(docker images)

docker images

2.2 删除镜像(docker rmi)

docker rmi 例如:docker rmi nginx:latest

2.3 拉取镜像(docker pull)

docker pull 例如:docker pull nginx

需求:从DockerHub中拉取一个nginx镜像并查看

1)首先去镜像仓库搜索nginx镜像,建议找官方的)
在这里插入图片描述

2)点进去详情,复制docker pull nginx命令
在这里插入图片描述
在这里插入图片描述

2.4 保存镜像(docker save)

docker save 例如:docker save -o nginx.tar nginx:latest 将nginx:latest保存为nginx.tar

2.5 导入镜像(docker load)

docker load 例如:docker load -i nginx.tar

四、容器基本操作及命令

1、容器命令

容器操作的命令如图:
在这里插入图片描述
容器保护三个状态:

  • 运行:进程正常运行
  • 暂停:进程暂停,CPU不再运行,并不释放内存
  • 停止:进程终止,回收进程占用的内存、CPU等资源
1.1 创建并运行一个容器(docker run)

docker run 例如: docker run --name mn -p 8080:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器
  • –name : 给容器起一个名字,比如叫做mn
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx
1.2 让运行的容器暂停(docker pause)

docker pause 例如:docker pause mn

1.3 让容器从暂停状态恢复运行(docker unpause)

docker unpause 例如:docker unpause mn

1.4 停止运行的容器(docker stop)

docker stop 例如:docker stop mn

1.5 让停止的容器再次运行(docker start)

docker start 例如:docker start mn

1.6 删除容器(docker rm)

docker rm 例如:docker rm mn,如果该容器未处于暂停的状态下删除,则会失败。可使用 docker rm -f mn 强制删除

1.7 查看运行的容器及状态(docker ps)

docker ps 仅查看运行的容器,如想查全部的容器可用 docker ps -a

1.8 进入某个容器

docker exec -it mn bash 命令解读:

  • docker exec :进入容器内部,执行一个命令
  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • mn :要进入的容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

四、常用的容器基本创建及运行命令

Nginx

docker run --name containerName -p 8081:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器
  • –name : 给容器起一个名字,比如叫做mn
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口,也就是说用户可以通过主机名+8081访问到容器的nginx
  • -d:后台运行容器
  • nginx:镜像名称
Redis

docker run --name mr -p 6379:6379 -d redis redis-server --appendonly yes
命令解读:

  • docker run :创建并运行一个容器
  • –name : 给容器起一个名字,比如叫做mr
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口,也就是说用户可以通过主机名+6379访问到容器的redis
  • -d:后台运行容器
  • redis:镜像名称
  • -redis-server –appendonly yes 在容器执行redis-server启动命令,并打开redis持久化配置
  • 努力学习中,多多指教~~~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux搭建nacos集群

准备 检查是否安装jdk [roothao /usr/local/software/elk/logstash]# java -version java version "1.8.0_341" Java(TM) SE Runtime Environment (build 1.8.0_341-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)配置nacos 去github下载…

一文3000字从0到1用Python进行gRPC接口测试!

gRPC 是一个高性能、通用的开源RPC框架,其由 Google 主要面向移动应用开发并基于HTTP/2 协议标准而设计,基于 ProtoBuf(Protocol Buffers) 序列化协议开发,且支持众多开发语言。 自gRPC推出以来,已经广泛应用于各种服务之中。在测…

Vue2脚手架搭建+项目基础依赖安装

文章目录 1. 安装 node.js2. 安装 vue-cli 脚手架3. 创建 vue2 项目4. 安装基础依赖 1. 安装 node.js 可以参考这篇文章 https://blog.csdn.net/weixin_43721000/article/details/134284418 2. 安装 vue-cli 脚手架 安装 vue-clinpm install -g vue/cli查看是否安装成功vue -…

用23种设计模式打造一个cocos creator的游戏框架----(七)代理模式

1、模式标准 模式名称:代理模式 模式分类:结构型 模式意图:为其他对象提供一种代理以控制对这个对象的访问。 结构图: ​ 适用于: 远程代理:也称为大使,这是最常见的类型,在分…

Data Mining数据挖掘—2. Classification分类

3. Classification Given a collection of records (training set) – each record contains a set of attributes – one of the attributes is the class (label) that should be predicted Find a model for class attribute as a function of the values of other attribu…

vuepress-----14、保护私密信息

秘钥存储文件 使用秘钥 忽略提交

通过异步序列化提高图表性能 Diagramming for WPF

通过异步序列化提高图表性能 2023 年 12 月 6 日 MindFusion.Diagramming for WPF 4.0.0 添加了异步加载和保存文件的功能,从而提高了响应能力。 MindFusion.Diagramming for WPF 提供了一个全面的工具集,用于创建各种图表,包括组织结构图、图…

『PyTorch学习笔记』如何快速下载huggingface模型/数据—全方法总结

如何快速下载huggingface模型/数据—全方法总结 文章目录 一. 如何快速下载huggingface大模型1.1. IDM(Windows)下载安装连接1.2. 推荐 huggingface 镜像站1.3. 管理huggingface_hub cache-system(缓存系统) 二. 参考文献 一. 如何快速下载huggingface大模型 推荐 huggingface…

苹果mac电脑如何彻底删除卸载软件?

在苹果电脑上安装和使用软件非常容易,但是卸载软件却可能会变得复杂和困难。不像在Windows上,你不能简单地在控制面板中找到已安装的程序并卸载它们。因此,在这篇文章中,我们将讨论苹果电脑怎么彻底删除软件。 CleanMyMac X全新版…

通信线缆是什么

通信线缆 电子元器件百科 文章目录 通信线缆前言一、通信线缆是什么二、通信线缆的类别三、通信线缆应用实例四、通信线缆的作用原理总结前言 每种线缆都有其特定的特性和用途。通信线缆起到连接和传输信号的作用,是实现通信和数据传输的重要组成部分。 一、通信线缆是什么 …

高级搜索——ST表,离线RMQ问题

文章目录 前言可重复贡献问题ST表的定义ST表的存储结构ST表的预处理预处理的实现 ST表的区间查询对于k的获取区间查询的实现 OJ链接 前言 对于查询区间最值的方法,我们常用的就是线段树,树状数组,单调队列,而树状数组更适合用于快…

AI报告专题:创造性和生成式人工智能

今天分享的AI系列深度研究报告:《AI报告专题:创造性和生成式人工智能》。 (报告出品方:Capgemini) 报告共计:64页 AI一代 生成式人工智能 (AI)正在迅速改变我们与技术的交互方式,使机器能够创…

Java实现屏幕截图程序(一)

在Java中,可以使用Robot类来实现屏幕截图程序。Robot类提供了一组用于生成输入事件和控制鼠标和键盘的方法。 Java实现屏幕截图的步骤如下: 导入Robot类 import java.awt.Robot;创建Robot对象 Robot robot new Robot();获取屏幕分辨率信息 Dimensi…

redis-学习笔记(hash)

Redis 自身已经是 键值对 结构了 Redis 自身的键值对就是通过 哈希 的方式来组织的 把 key 这一层组织完成后, 到了 value 这一层, 还可以用 哈希类型 来组织 (简单的说就是哈希里面套哈希 [数组里面套数组 -> 二维数组] ) [ field value ] hset key field value [ field va…

urllib 异常、cookie、handler及代理(四)

目录 一、urllib异常 二、urllib cookie登录 三、urllib handler 处理器的基本使用 四、urllib 代理和代理池 参考 一、urllib异常 URLError/HTTPError 简介: 1.HTTPError类是URLError类的子类 2.导入的包urllib.error.HTTPError urllib.error.URLError 3.h…

如何将idea中导入的文件夹中的项目识别为maven项目

问题描述 大家经常遇到导入某个文件夹的时候,需要将某个子文件夹识别为maven项目 解决方案

XUbuntu22.04之8款免费UML工具(一百九十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【计算机组成体系结构】SRAM和DRAM

RAM — Random Access Memory 随机访问存储器 —指定某一存储单元地址的时候,存储单元的读取速度并不会因为存储单元的物理位置改变 SRAM即为 Static RAM 静态随机访问存储器 — 用于主存DRAM即为 Dynamic RAM 动态随机访问存储器 — 用于Cache 一、SRAM和DRAM的特…

oomall课堂笔记

一、项目分层结构介绍 controller层(控制器层): 作用:负责输出和输入,接收前端数据,把结果返回给前端。 1.处理用户请求,接收用户参数 2.调用service层处理业务,返回响应 servi…

Javaweb之Maven仓库的详细解析

2.3 Maven仓库 仓库:用于存储资源,管理各种jar包 仓库的本质就是一个目录(文件夹),这个目录被用来存储开发中所有依赖(就是jar包)和插件 Maven仓库分为: 本地仓库:自己计算机上的一个目录(用来存储jar包) 中央仓库&a…