Docker 基础

文章目录

    • 1.Docker概述
    • 2.Docker安装
    • 3.Docker与虚拟机VM
    • 4.Docker命令
      • 1.帮助命令
      • 2.镜像命令
        • 1.images
        • 2.search
        • 3.pull
        • 4.rmi
      • 3.容器命令
        • 1.run
        • 2.ps
        • 3.rm
        • 4.start
        • 5.stop
        • 6.restart
        • 7.kill
      • 4.常用其他命令
        • 1.后台启动容器
        • 2.查看日志(logs)
        • 3.查看进程信息(top)
        • 4.查看镜像源数据(inspect)
        • 5.进入当前运行容器(exec)
        • 6.连接运行中容器(attach)
        • 7.数据拷贝(cp)
    • 5.小结

1.Docker概述

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

  • 传统:开发jar,运维来做。
  • 现在:开发打包部署,一套流程。

2.Docker安装

环境准备:

  1. 需要会一点Linux的基础
  2. CentOS 7
  3. 使用Xshell连接远程服务器

Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

1.卸载旧的版本

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

2.需要的安装包

yum install -y yum-utils

3.设置镜像的仓库(阿里云)

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

更新软件包索引

yum makecache fast

4.安装docker

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

5.启动docker

sudo systemctl start docker

6.查看是否安装成功

docker version

在这里插入图片描述
7.验证是否正确安装

docker run hello-world

在这里插入图片描述

8.查看一下下载的hello-world镜像

docker images

在这里插入图片描述

9.卸载docker

# 1.卸载依赖
yum remove docker-ce docker-ce-cli containerd.io

# 2.删除资源
rm -rf /var/lib/docker

10.配置阿里云镜像加速器

登录阿里云,找到容器镜像服务,点击镜像加速器,然后依次执行命令即可。

在这里插入图片描述

# 应该只能使用自己的
sudo mkdir -p /etc/docker

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

sudo systemctl daemon-reload

sudo systemctl restart docker

3.Docker与虚拟机VM

docker Run的流程
在这里插入图片描述
docker底层原理
Docker是一个 Client-Server 结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。

docker与虚拟机区别

Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。
在这里插入图片描述
虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。
在这里插入图片描述

4.Docker命令

1.帮助命令

# 查看基本信息
docker version

# 系统信息,包括镜像和容器数
docker info

# 万能命令
docker 命令 --help

2.镜像命令

1.images
# 列出本地镜像
docker images 

# 具体使用方法可以输入命令 docker images --help

Options:
  -a, --all             Show all images (default hides intermediate images)
      --digests         Show digests
  -f, --filter filter   Filter output based on conditions provided
      --format string   Format output using a custom template:
                        'table':            Print output in table format with column headers (default)
                        'table TEMPLATE':   Print output in table format using the given Go template
                        'json':             Print in JSON format
                        'TEMPLATE':         Print output using the given Go template.
                        Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates
      --no-trunc        Don't truncate output
  -q, --quiet           Only show image IDs
2.search
# 从Docker Hub查找镜像
docker search [OPTIONS] TERM

OPTIONS说明:

  • -f <过滤条件>:列出收藏数不小于指定值的镜像。

在这里插入图片描述
参数说明:

  • NAME: 镜像仓库源的名称
  • DESCRIPTION: 镜像的描述
  • OFFICIAL: 是否 docker 官方发布
  • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
  • AUTOMATED: 自动构建。
3.pull
# 从镜像仓库中拉取或者更新指定镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

# 不写tag,默认就是最新版本
# 拉取最新的java镜像
docker pull java

# 从Docker Hub下载REPOSITORY为java的所有镜像
docker pull -a java

# 拉取指定版本
docker pull mysql:5.7
4.rmi
# 删除本地一个或多个镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]

# 举例
# 删除单个
docker rmi -f 容器id

# 删除多个
docker rmi -f 容器id 容器id 容器id...

# 删除全部容器
docker rmi -f $(docker images -aq)

OPTION说明:

  • -f :强制删除

在这里插入图片描述

3.容器命令

说明:我们有了镜像才可以创建容器,下载一个centos镜像。

docker pull centos
1.run

新建容器并启动

docker run [可选参数] image

# 参数说明
--name="Name" # 容器名字,区分容器
-d            # 后台方式运行
-it           # 使用交互方式允许,进入容器查看内容
-p            # 指定容器的端口
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口(常用)
	-p 容器端口
	容器端口
-P            # 随机指定端口

# 测试,启动并进入容器
[root@iZ0jl2pjllvr5lfp1bkua1Z ~]# docker run -it centos /bin/bash
[root@f1a9e93b0ff6 /]# 

# 查看内部
[root@f1a9e93b0ff6 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

# 从容器退回主机
exit


exit            # 直接退出容器并关闭
Ctrl + P + Q    # 容器不关闭退出
2.ps
# 列出容器
docker ps [OPTIONS]

# 列出当前加历史允许过的容器
docker ps -a

OPTIONS说明:

  • -a :显示所有的容器,包括未运行的。
  • -f :根据条件过滤显示的内容。
  • -n :列出最近创建的n个容器。
  • -l :显示最近创建的容器。

在这里插入图片描述
参数说明:

  • CONTAINER ID: 容器 ID
  • IMAGE: 使用的镜像
  • COMMAND: 启动容器时运行的命令
  • CREATED: 容器的创建时间
  • STATUS: 容器状态
  • PORTS: 容器的端口信息和使用的连接类型(tcp\udp)
  • NAMES: 自动分配的容器名称
3.rm
# 删除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]

# 删除指定容器,不能删除正确允许的容器,如果强制删除rm -f
docker rm 容器id

# 删除所有的容器
docker rm -f $(docker ps -aq)
4.start
# 启动一个或多个已经被停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]

# 启动
docker start 容器id
5.stop
# 停止一个运行中的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]

# 停止
docker stop 容器id
6.restart
# 重启容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]

# 重启
docker restart 容器id
7.kill
# 杀掉一个运行中的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]

# 杀掉
docker kill 容器id

在这里插入图片描述

4.常用其他命令

1.后台启动容器
# 命令 docker run -d 镜像名
docker run -d centos

# 问题docker ps 发现 centos停止

# 常见的坑, docker 容器使用后台运行, 就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx, 容器启动后,发现自己没有提供服务,就会立即停止,就是没有程序

在这里插入图片描述

2.查看日志(logs)
# 获取容器的日志
docker logs [OPTIONS] CONTAINER

# 显示容器10条日志
docker logs -tf --tail 10 f272a950b815

OPTIONS说明:

  • -f : 跟踪日志输出
  • –since :显示某个开始时间的所有日志
  • -t : 显示时间戳
  • –tail :仅列出最新N条容器日志
3.查看进程信息(top)
# 查看容器中运行的进程信息,支持 ps 命令参数
docker top [OPTIONS] CONTAINER [ps OPTIONS]

# 举例
docker top f272a950b815

在这里插入图片描述

4.查看镜像源数据(inspect)
# 获取容器/镜像的元数据
docker inspect [OPTIONS] NAME|ID [NAME|ID...]

# 举例
docker inspect f272a950b815

在这里插入图片描述

5.进入当前运行容器(exec)
# 在运行的容器中执行命令
# 进入容器后开启一个新的终端,可以在里面操作
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

# 举例
docker exec -it f272a950b815 /bin/bash

6.连接运行中容器(attach)
# 连接到正在运行中的容器
# 进入容器正在执行的终端,不会启动新的进程
docker attach [OPTIONS] CONTAINER

# 举例
docker attach f272a950b815
7.数据拷贝(cp)
# 用于容器与主机之间的数据拷贝
docker cp 容器id:容器内路径    目的地主机路径

docker cp 3ff49a3c1032:/home/test.java /home

在这里插入图片描述

5.小结

学习docker过程中,搞不清镜像与容器的关系,把它们搞混淆分不清。
简单点理解:docker容器是由docker镜像创建的运行实例。

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

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

相关文章

双十一的祈祷【算法赛】

问题描述 双十一&#xff0c;不仅是购物狂欢节&#xff0c;更有 "光棍节" 之称。这源于 11:1111:11 由四个 11 构成&#xff0c;象征着单身。 作为大学生的小蓝也想经历甜甜的校园恋爱&#xff0c;于是他找到了爱神丘比特&#xff0c;向他祈祷能为自己带来一段邂逅…

如何将 element-ui 中的 el-select 默认展开

<el-form-item label"藕粉桂花糖糕" prop"state" required><el-selectref"mySelect"v-model"form.state"style"width: 280px"placeholder"请选择"><el-option label"藕粉" :value"…

摆动排序 II

题目链接 摆动排序 II 题目描述 注意点 将数组重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序题目数据保证&#xff0c;对于给定的输入 nums &#xff0c;总能产生满足题目要求的结果用 O(n) 时间复杂度和 / 或原地 O(1) 额外空间来实现 解答思路 如…

第九节HarmonyOS 常用基础组件11-TextPicker

1、描述 滑动选择文本内容的组件。 2、接口 TextPicker(options?: {range: string[]|Resource, selected?: number, value?: string}) 3、参数 参数名称 参数类型 必填 描述 range string[]|Resource 是 选择器的数据。 selected number 否 设置默认选中项在…

Linux系统使用超详细(八)~磁盘管理

目录 一、认识磁盘 二、磁盘运行机制 三、磁盘检查 3.1查找设备名称和分区号 3.1.1使用lsblk命令&#xff1a; 3.1.2使用fdisk命令&#xff1a; 3.1.3使用blkid命令&#xff1a; 3.2检查方向 3.2.1文件系统完整性&#xff1a; 3.2.2磁盘健康状态&#xff1a; 3.2.3磁…

【AI视野·今日NLP 自然语言处理论文速览 第七十期】Thu, 4 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Thu, 4 Jan 2024 Totally 29 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Multilingual Instruction Tuning With Just a Pinch of Multilinguality Authors Uri Shaham, Jonathan Herzi…

概念解析 | ISTA:稀疏信号恢复的优雅算法

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:迭代收缩阈值算法(ISTA)。 概念解析 | ISTA:稀疏信号恢复的优雅算法 https://arxiv.org/pdf/math/0307152.pdf 1. 背景介绍 在信号处理、机器学习等领域,我们常常需要从含有噪声…

【leetcode】力扣热门之反转链表【简单难度】

题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 用例 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 输入&#xff1a;head [] 输出&#xff1a;[…

海康威视摄像头+服务器+录像机配置校园围墙安全侦测区域入侵侦测+越界侦测

一、适用场景 1、校园内&#xff0c;防止课外时间翻越围墙到校外、从校外翻越围墙到校内&#xff1b; 2、通过服务器摄像头的侦测功能及时抓图保存&#xff0c;为不安全因素提供数字化依据&#xff1b; 3、网络录像机保存监控视频&#xff0c;服务器保存抓拍到的入侵与越界&am…

目标检测COCO数据集与评价体系mAP

1.mAP 2.IoU IoU也就是交并比&#xff0c;也称为 Jaccard 指数&#xff0c;用于计算真实边界框与预测边界框之间的重叠程度。它是真值框与预测边界框的交集和并集之间的比值。Ground Truth边界框是测试集中手工标记的边界框&#xff0c;用于指定目标图像的位置以及预测的边界框…

【AI视野·今日NLP 自然语言处理论文速览 第六十九期】Wed, 3 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 3 Jan 2024 Totally 24 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers An Autoregressive Text-to-Graph Framework for Joint Entity and Relation Extraction Authors Zaratiana Ur…

鸿蒙系列--组件介绍之Video

接口 Video(value: {src?: string | Resource, currentProgressRate?: number | string |PlaybackSpeed, previewUri?: string |PixelMap | Resource, controller?: VideoController}) 参数&#xff1a; src&#xff1a;视频播放源的路径。支持本地路径和网络路径currentP…

网络安全保险发展起始阶段的挑战及应对措施

文章目录 前言一、网络安全保险的有序发展二、当前我国网络安全保险发展的初期态势&#xff08;一&#xff09;网络安全风险类型&#xff08;二&#xff09;网络安全保险的作用&#xff08;三&#xff09;与外国网络安全保费的规模对比 三、我国网络安全保险发展初期面临的挑战…

MYSQL双主节点–更换ip

MYSQL双主节点–更换ip 一、更换双主节点ip 1.停止mysql服务 #安装了supervisor supervisorctl stop mysql #未安装 systemctl stop mysqld2.修改网卡配置信息 注&#xff1a;ens33是网卡名称&#xff0c;可能网卡不叫ens33 vi /etc/sysconfig/network-scripts/ifcfg-ens333…

ConcurrentHashMap的原理分析学习

ConcurrentHashMap 的初步使用及场景 CHM 的使用 ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap&#xff0c;所以ConcurrentHashMap 在并发编程的场景中使用的频率比较高&#xff0c;那么这一节课我们就从ConcurrentHashMap 的使用上以及源码层面来…

亚马逊鲲鹏系统:点赞提升评论排名的得力助手

作为一个卖家&#xff0c;我深知在亚马逊和其他电商平台上&#xff0c;用户评论对商品销售的重要性。在这个竞争激烈的市场中&#xff0c;点赞已经成为提升评论排名、吸引更多顾客的有效手段之一。在我经营店铺的过程中&#xff0c;亚马逊鲲鹏系统给予了我巨大的帮助&#xff0…

msckf-vio 跑Euroc数据集,并用evo进行评估

所需材料&#xff1a; Euroc数据集主页&#xff1a;https://projects.asl.ethz.ch/datasets/doku.php?idkmavvisualinertialdatasetsevo评估工具代码&#xff1a;https://github.com/MichaelGrupp/evo向msckf-vio中添加保存位姿的代码&#xff0c;可参考https://blog.csdn.ne…

SpringBoot整合Activiti7——终止结束事件(十三)

文章目录 终止结束事件终止结束事件代码实现xml文件测试流程流程执行步骤 终止结束事件 终止结束事件 主要是对流程进行终止的事件&#xff0c;可以在一个复杂的流程中&#xff0c;如果某方想要提前中断这个流程&#xff0c;可以采用这个事件来处理。terminateAll属性&#xf…

mysql服务多实例运行

1、官网下载mysql安装包 https://downloads.mysql.com/archives/community/ 2、解压安装包 tar -zxvf mysql-8.1.0-linux-glibc2.28-aarch64.tar.xz -C /usr/localmv /usr/local/mysql-8.1.0-linux-glibc2.28-aarch64 /usr/local/mysql 3、创建mysql用户组 groupadd…

某月瓜网站js盾动态调试方案

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;若有侵权&#xff0c;请添加&#xff08;wx&#xff1a;wyqlxl99&#xff09;联系删除 本文章同步微…