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

[Docker]一.Docker 简介与安装

一、Docker简介与为什么要用 Docker

1.1Docker 介绍

Docker 是一个跨平台的开源的 应用容器引擎 ,诞生于 2013 年初,基于 Go语言 并遵从 Apache2.0 协议开源, Docker 可以把它理解成虚拟机,但是 Docker  和传统虚拟化方式 有所不同 :传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系 \统上再运行所需应用进程;Docker 相比传统的虚拟化技术要 更轻量级 Docker 容器内的应用程序是 直接运行 宿主内核中 的,容器内没有自己的内核,也没有进行硬件虚拟

因此 Docker 容器要比传统虚拟机 占用资源更小 系统支持量更大 启动速度更快 更容易
维护和扩展
Docker官网: https://hub.docker.com

1.2、为什么要使用 Docker 

除了刚才说的 Docker 容器要比传统虚拟机占用资源更小、系统支持量更大、启动速度更快、 更容易维护和扩展外,Docker 还是 世界领先的软件容器平台
(1).开发人员利用 Docker 快速部署调试 我们的应用
(2).开发人员利用 Docker 可以消除协作编码时 在我的机器上可正常工作,其他机器不能正
常工作 的问题, Docker 可以 提供一致的运行环境 ,开发过程中一个常见的问题是环境一致
性问题,由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现
(3).运维人员利用 Docker 可以在隔离容器中并行运行和管理应用
(4).Serverless 也是基于 docker 容器技术

1.4、学习 Docker 必备基础

docker 容器都是基于 linux 内核,所以学习 docker 必须具备 linux 基础,如果不会 linux 请参: 一些经常使用的linux命令, linux内存、cpu、进程、端口、硬盘管理, Linux 目录结构介绍

Docker 环境要求

(1).linux 系统

使用安装docker需要的最小内核是 3.10,Centos7 Centos8 都能满足要求,查看内核命令: uname -r

(2).Windows

安装 docker 建议使用 win10

(3).macOS

must be version 10.14 or newer

二、Docker 的安装 

2.1Windows 中安装 Docker

注意 :windows操作系统需要启用 Hyper-V 和适用 Linux 的子系统
Hyper-V 微软开发的虚拟机 ,类似于 VMWare VirtualBox 仅适用于 Windows 10 ,这
Docker Desktop for Windows 所使用的虚拟机,但是,这个虚拟机一旦启用, QEMU
VirtualBox VMWare Workstation 15 及以下版本将无法使用,如果必须在电脑上使用其
他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V

2.1.1、下载软件包 

下载软件包:https://docs.docker.com/engine/install/ 

 

2.1.2、安装软件

双击软件,点击'下一步',安装即可

注意:此方法仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版 

2.1.3、运行软件

如果第一次打开提示下面错误,请下载安装 wslupdatex64.mis后重启 docker 

 

 下载 wslupdatex64.mis 安装后重启 docker

 2.1.4、镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,可以需要配置加速器来解决,可以使用阿里的镜像地址:https://02xz0m84.mirror.aliyuncs.com
在任务栏点击 Docker for mac 应用图标 -> Perferences... -> Docker Engine
{
... "registry-mirrors": ["https://02xz0m84.mirror.aliyuncs.com"]
... 
}

 

2.1.5、通过运行 hello world 映像来验证 Docker 引擎安装是否正确 

docker run hello-world
[root@localhost /]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:df5fxxx491a9e
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal. To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/

 2.2Macos 中安装 Docker

2.2.1、下载安装

下载地址:https://docs.docker.com/docker-for-mac/install/

如同 macOS 其它软件一样,安装也非常简单,双击下载的 .dmg 文件,然后将图标拖拽到 Application 文件夹即可

 从应用中找到 Docker 图标并点击运行。可能会询问 macOS 的登陆密码,输入即可

第一次点击图标,可能会看到这个安装成功的界面,点击 "Got it!" 可以关闭这个窗口 

启动终端后,通过命令可以检查安装后的 Docker 版本 

docker --version

2.2.2、镜像加速

操作同windows镜像加速一致,之后可以通过 docker info 来查看是否配置成功

$ docker info
... Registry Mirrors:
http://hub-mirror.c.163.com
Live Restore Enabled: false

2.2.3、通过运行 hello world 映像来验证 Docker 引擎安装是否正确

启动 hello-world 容器
docker run hello-world
[root@localhost /]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal. To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/

2.3Linux 中安装 docker

建议使用 Centos7 或者 Centos8 Centos7 Centos8 用法配置都是一样的
linux 安装 docker 官方文档: https://docs.docker.com/install/linux/docker-ce/centos/

2.3.1Linux 中安装 Docker 的准备工作

为了方便测试请关闭 selinux、关闭防火墙 

 SELinux 防火墙的设置:

[root@localhost ~]# getenforce
Disabled
修改/etc/selinux/config 文件
将 SELINUX=enforcing 改为 SELINUX=disabled
Firewalld 防火墙的设置:
见 【精选】CentOS8防火墙相关命令
1、firewalld 的基本使用:
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
2、firewall-cmd 的基本使用:
那怎么开启一个端口呢:
firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent 永久生效,
没有此参数重启后失效)
重新载入:
firewall-cmd --reload 修改 firewall-cmd 配置后必须重启
查看:
firewall-cmd --zone= public --query-port=80/tcp
删除:
firewall-cmd --zone= public --remove-port=80/tcp --permanent
查看所有打开的端口:
firewall-cmd --zone=public --list-ports

2.3.2Linux Centos 中安装 Docker 

安装需要的软件包
yum install -y yum-utils
配置 docker
yum-config-manager --add-repo
https://download.docker.com/linux/centos/d
ocker-ce.repo
或者阿里云源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.re
po
yum search docker
安装 docker
yum install docker-ce docker-ce-cli containerd.io -y

2.3.3 、启动 docker

systemctl start docker
开机启动
systemctl enable docker
docker 状态
systemctl status docker
查看自启动
systemctl list-unit-files|grep enabled
systemctl list-unit-files | grep enabled |grep docker
第一个 docker 命令
docker info
[root@localhost zph]# docker info
Client:Context:    defaultDebug Mode: falsePlugins:app: Docker App (Docker Inc., v0.9.1-beta3)buildx: Docker Buildx (Docker Inc., v0.7.1-docker)scan: Docker Scan (Docker Inc., v0.12.0)Server:Containers: 31Running: 2Paused: 0Stopped: 29Images: 391Server Version: 20.10.12Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueNative Overlay Diff: trueuserxattr: falseLogging Driver: json-fileCgroup Driver: cgroupfsCgroup Version: 1Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslogSwarm: inactiveRuntimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linuxDefault Runtime: runcInit Binary: docker-initcontainerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5drunc version: v1.0.2-0-g52b36a2init version: de40ad0Security Options:seccompProfile: defaultKernel Version: 4.18.0-348.el8.x86_64Operating System: CentOS Linux 8OSType: linuxArchitecture: x86_64CPUs: 1Total Memory: 782MiBName: localhost.localdomainID: DA45:YS5F:4YIO:2ZL3:U4YN:JISO:CWPI:W3A3:OBV3:PGDO:7ZTP:KNPXDocker Root Dir: /var/lib/dockerDebug Mode: falseRegistry: https://index.docker.io/v1/Labels:Experimental: falseInsecure Registries:127.0.0.0/8Live Restore Enabled: false
第二个命令查看 docker 版本
[root@localhost zph]# docker --version
Docker version 20.10.12, build e91ed57

2.3.4、安装指定版本的 docker

要安装 特定版本 Docker Engine ,请在 repo 中列出可用版本,然后选择并安装: 列出并排序您的存储库中可用的版本,此示例按版本号对结果进行排序,从高到低, 并被截断
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.i
o

2.3.5docker daemon.json 配置阿里云加速器

当需要对 docker 服务进行调整配置时,不用去修改主文件 docker.service 的参数,通过
daemon.json 配置文件来管理,更为安全、合理
mkdir -p /etc/docker
vi /etc/docker/daemon.json
{ 
"registry-mirrors": ["https://02xz0m84.mirror.aliyuncs.com"]
}

 如果没有/etc/docker 这个目录就创建这个目录,然后重新加载 daemon 重启 docker

加载配置文件
systemctl daemon-reload
systemctl restart docker
docker info

2.3.6、通过运行 hello world 映像来验证 Docker 引擎安装是否正确

启动 hello-world 容器

[root@localhost docker]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385e32844: Pull complete 
Digest: sha256:88ec0acaa3ec199d3b7eaf73588f4518c25f9d34f58ce9a0df68429c5af48e8d
Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

2.3.7、卸载 docker

(1).卸载 Docker EngineCLI Containerd 包:
$ sudo yum remove docker-ce docker-ce-cli containerd.io
(2).删除所有镜像、容器和卷
主机上的映像、容器、卷或自定义配置文件不会自动删除,使用命令删除
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd

必须手动删除任何已编辑的配置文件

2.4、阿里云 Docker 镜像加速器

访问 https://www.aliyun.com/ 搜索 容器镜像服务

相关文章:

[Docker]一.Docker 简介与安装

一、Docker简介与为什么要用 Docker 1.1、Docker 介绍 Docker 是一个跨平台的开源的 应用容器引擎 &#xff0c;诞生于 2013 年初&#xff0c;基于 Go语言 并遵从 Apache2.0 协议开源, Docker 可以把它理解成虚拟机&#xff0c;但是 Docker 和传统虚拟化方式 有所不同 …...

计算机网络-计算机网络体系结构-传输层

目录 一、UDP 二、TCP 特点 首部格式 连接管理 可靠传输 流量控制(点对点) 拥塞控制(全局) 三、拥塞控制算法 慢开始&拥塞避免 快重传&快恢复 功能一&#xff1a;提供进程与进程之间的逻辑通信 功能二&#xff1a;复用和分用 功能三&#xff1a;对收到的报…...

buuctf[HCTF 2018]WarmUp 1

题目环境&#xff1a; 发现除了表情包&#xff0c;再无其他F12试试发现source.php文件访问这个文件&#xff0c;格式如下&#xff1a;url/source.php回显如下&#xff1a;PHP代码审计&#xff1a; <?php highlight_file(__FILE__); class emmm {public static function ch…...

开源博客项目Blog .NET Core源码学习(4:生成验证码)

开源博客项目Blog中的后台管理登录界面中支持输入验证码&#xff08;如下图所示&#xff09;&#xff0c;本文学习并记录项目中验证码的生成及调用方式。   博客项目中调用VerifyCode类生成验证码&#xff0c;该类位于App.Framwork项目中&#xff0c;命名空间为App.Framwork…...

gin框架39--重构 BasicAuth 中间件

gin框架39--重构 BasicAuth 中间件 介绍gin BasicAuth 解析自定义newAuth实现基础认证注意事项说明 介绍 每当我们打开一个网址的时候&#xff0c;会自动弹出一个认证界面&#xff0c;要求我们输入用户名和密码&#xff0c;这种BasicAuth是最基础、最常见的认证方式&#xff0…...

编译pycaffe过程中遇到的问题及解决

pycaffe是python调用caffe的方式&#xff0c;编译它就是要得到一个so库_pycaffe.so。 如题&#xff0c;在caffe的源码目录下&#xff0c;执行make pycaffe&#xff0c;跳出来一个错误: $ make pycaffe CXX/LD -o python/caffe/_caffe.so python/caffe/_caffe.cpp /usr/bin/ld…...

自然语言处理---Transformer机制详解之Transformer优势

1 Transformer的并行计算 对于Transformer比传统序列模型RNN/LSTM具备优势的第一大原因就是强大的并行计算能力. 对于RNN来说&#xff0c;任意时刻t的输入是时刻t的输入x(t)和上一时刻的隐藏层输出h(t-1)&#xff0c;经过运算后得到当前时刻隐藏层的输出h(t)&#xff0c;这个…...

改进YOLO系列 | YOLOv5/v7 引入 Dynamic Snake Convolution | 动态蛇形卷积

准确分割拓扑管状结构,如血管和道路,在各个领域中至关重要,可以确保下游任务的准确性和效率。然而,许多因素使任务复杂化,包括细小的局部结构和可变的全局形态。在这项工作中,我们注意到管状结构的特殊性,并利用这一知识来引导我们的DSCNet,以在三个阶段同时增强感知:…...

postgresql14-表的管理(四)

表table 创建表 CREATE TABLE table_name --表名 (column_name data_type column_constraint, --字段名、字段类型、约束字段&#xff08;可选&#xff09;column_name data_type, --表级别约束字段...,table_constraint );CREATE TABLE emp1 --创建表 AS SELECT * FROM empl…...

Java--Object类

Java中Object类是所有类的父类&#xff0c;是Java中最高层的类。用户创建一个类时&#xff0c;除非指定继承了某个类&#xff0c;否则都是继承于Object类。 由于所有类都继承于Object类&#xff0c;所以所有类都可以重写Object类中的方法。但是Object类中被final修饰的getClass…...

交换机端口灯常亮 端口up状态 服务器设置ip交换机获取不到服务器网卡mac地址 不能通信

环境: 深信服防火墙 8.0.75 AF-2000-FH2130B-SC S6520X-24ST-SI交换机 version 7.1.070, Release 6530P02 问题描述: 交换机一个vlan下有3台服务器,连接端口2、3、4,2和3连接的服务器正常,交换机3端口灯常亮 端口up状态 服务器自动获取不了地址,改为手动设置ip后,交…...

Linux笔记之diff和vimdiff

Linux笔记之diff和vimdiff code review! 文章目录 Linux笔记之diff和vimdiff一.diff1.1.使用diff比较文件夹1.2.使用diff比较文件1.4.colordiff——带颜色输出差异 二.vimdiff2.1.vimdiff颜色差异2.2.vimfiff调整栏宽2.3.修改颜色变谈&#xff0c;使代码可以看清楚2.4.vimdif…...

目标检测YOLO实战应用案例100讲-基于改进的YOLOV5算法的垃圾分类模型

目录 前言 国内外研究现状 目标检测算法发展现状 YOLO算法的发展现状...

我做不到受每个人喜欢

我做不到受每个人喜欢 我想描述一下昨天发生争吵后我个人的观点&#xff0c;希望能够重新呈现出一种积极的态度。 首先&#xff0c;让我简要梳理一下事件的经过&#xff0c;当天我像往常一样去另一个宿舍找人聊天&#xff0c;可能因为说话声音有点大&#xff0c;坐在我后面的那…...

Linux笔记之diff工具软件P4merge的使用

Linux笔记之diff工具软件P4merge的使用 code review! 文章目录 Linux笔记之diff工具软件P4merge的使用1.安装和配置2.使用&#xff1a;p4merge a.cc b.cc3.配置git 参考博文: Ubuntu Git可视化比较工具 P4Merge 的安装/配置及使用 1.安装和配置 $ wget https://cdist2.per…...

使用 OpenSSL 扩展来实现公钥和私钥加密

首先&#xff0c;你需要生成一对公钥和私钥。可以使用 OpenSSL 工具来生成&#xff1a; 1、生成私钥 openssl genpkey -algorithm RSA -out private_key.pem 2、从私钥生成公钥&#xff1a; openssl rsa -pubout -in private_key.pem -out public_key.pem现在你有了一个私钥…...

二、安全与风险管理—安全与风险管理基础

目录 目录 1.什么是信息与信息的生命周期 2.信息安全的基本目标 3.风险管理与控制类型...

rust学习——栈、堆、所有权

文章目录 栈、堆、所有权栈(Stack)与堆(Heap)栈堆性能区别所有权与堆栈 所有权原则变量作用域所有权与函数返回值与作用域 栈、堆、所有权 栈(Stack)与堆(Heap) 栈和堆是编程语言最核心的数据结构&#xff0c;但是在很多语言中&#xff0c;你并不需要深入了解栈与堆。 但对于…...

如何从小白成长为AI工程师笔记

&#x1f4da;入门机器学习基础 对于本科生来说&#xff0c;需要打好数学基础&#xff0c;包括高数、概率论和线性代数。 对于已经上研究生或工作想转行的人来说&#xff0c;可以直接开始学习机器学习算法&#xff0c;重要的是理解算法的原理和推导过程。如果有时间和需要&am…...

fail-fast 和 fail-safe 迭代器

fail-fast 和 fail-safe 迭代器是两种不同的迭代器设计策略&#xff0c;用于在遍历集合&#xff08;如 ArrayList、HashMap&#xff09;时处理并发修改的情况。它们的行为和应对策略有所不同&#xff1a; Fail-Fast 迭代器&#xff1a; Fail-Fast 迭代器在遍历集合期间&#x…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...