Docker入门 --- 简单安装及部署

news2025/1/6 19:28:30

Docker的简单安装及部署

文章目录

  • Docker的简单安装及部署
    • 一、Docker概述
      • 1. 什么是Docker
      • 2. Docker架构
      • 3. DockerHub
      • 4. Docker运行模式
      • 5. Docker和虚拟机的区别
    • 二、安装Docker
      • 1. 环境准备
      • 2. 安装
      • 3. 配置镜像加速器
    • 三、Docker服务、镜像、容器命令
      • 1. 服务(进程)相关命令
      • 2. 镜像相关命令
      • 3. 容器相关命令
    • 四、Docker容器部署MySQL
    • 五、Windows桌面版的安装

一、Docker概述

1. 什么是Docker

在这里插入图片描述

• Docker 是一个开源的应用容器引擎(是一个快速交付应用、运行应用的技术)

• 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)

• Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的

Linux 机器上。其启动、移除都可以通过一行命令完成,方便快捷

• 容器是完全使用沙箱机制,相互隔离,性能开销极低

• Docker能解决依赖兼容问题、应用部署的环境问题、操作系统环境差异

• 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。

• Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)

Docker可以运行在MAC、Windows、CentOS、Ubuntu等操作系统上,本教程基于CentOS 7

Docker官网: https://www.docker.com https://www.docker.com/community-edition

2. Docker架构

在这里插入图片描述

镜像(Image) : Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像,相当于是一个 root 文件系统。比如官方镜像 ubuntu:22.04 就包含了完整的一套 Ubuntu22.04 最小系统的 root 文件系统。

容器( Container) :镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见。镜像(Image)和容器(Contain er)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

仓库(Repository) :仓库可看成一个代码控制中心, 用来保存镜像。

概括来说:一切应用最终都是代码组成,都是硬盘中的一个个的字节形成的文件。只有运行时,才会加载到内存,形成进程。而镜像,就是把一个应用在硬盘上的文件、及其运行环境、部分系统函数库文件一起打包形成的文件包。这个文件包是只读的。容器呢,就是将这些文件中编写的程序、函数加载到内存中允许,形成进程,只不过要隔离起来。因此一个镜像可以启动多次,形成多个容器进程。

3. DockerHub

开源应用程序非常多,打包这些应用往往是重复的劳动。为了避免这些重复劳动,人们就会将自己打包的应用镜像,例如Redis、MySQL镜像放到网络上,共享使用,就像GitHub的代码共享一样。

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

  • 国内也有类似于DockerHub 的公开服务,比如 网易云镜像服务、阿里云镜像库等。

我们一方面可以将自己的镜像共享到DockerHub,另一方面也可以从DockerHub拉取镜像:

在这里插入图片描述

4. Docker运行模式

我们要使用Docker来操作镜像、容器,就必须要安装Docker。

Docker是一个基于C/S架构的程序,由两部分组成:(如下图)

  • 服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等

  • 客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。

在这里插入图片描述

5. Docker和虚拟机的区别

虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。

**Docker ** 仅仅是封装函数库,并没有模拟完整的操作系统,如下图:
在这里插入图片描述
在这里插入图片描述

• docker是一个系统进程;虚拟机是在操作系统中的操作系统

• docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

二、安装Docker

1. 环境准备

  1. VMware17 虚拟机环境 https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html
  2. Centos7.9镜像 https://mirror.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/
  3. Xshell7&Xftp7远程连接工具 https://www.xshell.com/zh/free-for-home-school/

2. 安装

# 1、yum 包更新到最新 
yum update -y
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 添加yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y 
yum install -y docker-ce
# 5、 查看docker版本信息,验证是否安装成功
docker version

在这里插入图片描述

3. 配置镜像加速器

默认情况下,将来从docker hub上下载docker镜像,太慢了。所以我们一般都会配置镜像加速器:

• USTC:中科大镜像加速器(https://lug.ustc.edu.cn/wiki/mirrors/help/docker/)

• 阿里云: https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors

这里推荐使用阿里云的镜像加速:(每个人的不一样,自己登录后去查看)

通过修改daemon配置文件 /etc/docker/daemon.json来使用加速器

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

其它的常用镜像站:

阿里云镜像站 https://developer.aliyun.com/mirror/
网易云镜像站 http://mirrors.163.com/
清华大学镜像站 https://mirror.tuna.tsinghua.edu.cn/
华中科技大镜像站 http://mirror.hust.edu.cn/
中国科学技术大学镜像站 https://mirror.bjtu.edu.cn/
中国科技大学镜像站 https://pypi.mirrors.ustc.edu.cn/simple/
搜狐镜像站 http://mirrors.sohu.com/
豆瓣镜像站 http://pypi.douban.com/simple/

三、Docker服务、镜像、容器命令

docker 的命令有很多,先掌握常用命令,剩下的用到时候查就行了

⭐ 菜鸟教程 Docker 命令大全

1. 服务(进程)相关命令

启动docker服务:

systemctl start docker 

停止docker服务:

systemctl stop docker

重启docker服务:

systemctl restart docker

查看docker服务状态:

systemctl status docker

设置开机启动docker服务:

systemctl enable docker

2. 镜像相关命令

在这里插入图片描述

查看镜像:

docker images    # 查看本地所有的镜像
docker images –q # 查看所有镜像的id

搜索镜像: 从网络中查找需要的镜像

docker search 镜像名称

拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。

docker pull 镜像名称

删除镜像: 删除本地镜像

docker rmi 镜像id # 删除指定本地镜像
docker rmi `docker images -q`	# 删除所有本地镜像

3. 容器相关命令

查看容器

docker ps # 查看正在运行的容器
docker ps –a # 查看所有容器

创建并启动容器

docker run 参数

参数说明:
• -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
• -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。
• -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
• -it 创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器
• --name:为创建的容器命名。

进入容器

docker exec 参数 # 退出容器,容器不会关闭

停止容器

docker stop 容器名称

启动容器

docker start 容器名称

删除容器:如果容器是运行状态则删除失败,需要停止容器才能删除

docker rm 容器名称

查看容器信息

 docker inspect 容器名称

四、Docker容器部署MySQL

  1. 搜索mysql镜像
docker search mysql
  1. 拉取mysql镜像
docker pull mysql:5.7
  1. 创建容器,设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 13306:3306 \
--name=yxn_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
- 参数说明:
  - -p 13306:3306:将容器的 3306 端口映射到宿主机的 13306 端口。
  - -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
  - -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
  - -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
  - -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
  1. 进入容器,操作mysql
docker exec -it yxn_mysql /bin/bash

在这里插入图片描述

  1. 使用外部机器连接容器中的mysql

这里我使用SQLyog - 64 bit Trial进行连接

在这里插入图片描述
在这里插入图片描述

可见可正常进行操作.

五、Windows桌面版的安装

同时呢,如果你不想安装虚拟机,可以直接使用 Docker Desktop 。Docker Desktop是可以部署在windows运行docker的应用服务,其基于windos的Hyper-V服务和WSL2内核在windos上创建一个子系统(linux),从而实现其在windows上运行docker。

下载地址:https://docs.docker.com/get-docker/

安装完成如下图所示,使用方法同上
在这里插入图片描述

安装可参考:
https://zhuanlan.zhihu.com/p/411618091
https://huaweicloud.csdn.net/633122f7d3efff3090b536c7.html


参考文章: Docker 安装 MySQL

参考视频: 黑马程序员Docker容器化技术,从零学会Docker教程

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【大数据处理技术】「#2」Hive数据分析

文章目录操作Hive简单查询分析测试简单指令查询条数统计分析关键字条件查询分析以关键字的存在区间为条件的查询根据用户行为分析用户实时查询分析操作Hive 启动Hive在“hive>”命令提示符状态下执行下面命令&#xff1a; hive> use dbtaobao; # 使用dbtaobao数据库 hi…

1.7 TCP粘包、缺包问题解决

文章目录1、TCP粘包问题1.1、客户端粘包现象1.2、服务端粘包1.3、粘包、缺包解决2、包头设计1、TCP粘包问题 1.1、客户端粘包现象 因为客户端有一个优化算法(Nagle)&#xff0c; send(“abc”); send(“123”); send(“def”); 如果这三次发送非常紧密时间非常短&#xff0c;会…

一、Endnote简介

一、简介 1.Edit-Preference-Libraries&#xff1a;设置默认打开时的操作。&#xff08;默认打开最近一次&#xff09; 2.文献库的建立File-New 生成一个数据库文件和一个文件夹 3.在线数据库搜索 &#xff08;1&#xff09;设置不同的检索字段&#xff1a; &#xff08;2&am…

零基础小白想学Python爬虫,但是不理解原理?5分钟带你理顺思路

很多人私信我&#xff0c;说自己是0基础学习Python&#xff0c;但是学爬虫的时候不太理解这个原理&#xff0c;下面我来给大家分享一下我的对Python爬虫的原理。 首先我们要知道什么是Python爬虫&#xff1f; 我们可以把互联网看成是各种信息的站点及网络设备在一起组成的一…

UG/NX二次开发Siemens官方NXOPEN实例解析—2.1 AssemblyViewer

列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析—2.1 AssemblyViewer 目录 列文章目录 前言 一、知识点提取汇总 二、案例需求分析 1、最终效果图 2、需求分解 三、程序分析 1、源码所在目录 2、主要功能分析 前言 随着工业智能化的不断发展&#xff0c;UG二次开发…

[1]物联网基础知识

前言 学习教程&#xff1a;B站太极创客&#xff0c;原教程采用的开发板为ESP8266&#xff0c;开发环境Arduino 本人使用开发板&#xff1a;ESP32S3&#xff0c;开发环境Vscode中的platformio&#xff0c;框架为Arduino 乐鑫科技&#xff1a;ESPRESSIF 注意&#xff1a;引脚…

机器人开发--CanOpen

机器人开发--CanOpen1 介绍1.1 概述1.2 应用2 历史发展3 协议3.1 协议细节&#xff08;来自CiA文档&#xff09;3.2 协议框架OSI 模型服务COB-IDNMTSYNC紧急事件对象 (EMCY)服务数据对象 (SDO)SDO 下载SDO 上传SDO 加速写传输报文过程数据对象PDO3.3 应用细节&#xff08;伺服电…

基于springboot+mybatis+mysql+layui员工工资管理系统

基于springbootmybatismysqllayui员工工资管理系统一、目的二、需求功能划分系统结构设计软件界面截图三、系统开发配置一、目的 ​ 运用JavaEE企业级系统开发、数据库系统、面向对象技术及UML以及软件需求工程所学专业知识&#xff0c;解决所设定业务领域软件开发中的需求分析…

2021一带一路暨金砖大赛之企业信息系统安全赛项AWD_writeup

更多详情私聊博主 订阅专栏解锁更多~~觉得不错麻烦点个赞~~~ AWD_writeup 主要考点:后门账户、数据库操作、cve漏洞、后门漏洞、自动化攻击 1、解法一 ssh弱口令账户 用户登录后cat /etc/passwd 发现系统存在额外账户 使用msf进行ssh爆破尝试 msfconsole use auxiliary/sca…

洛谷 最长公共子序列

LCS 题面翻译 题目描述&#xff1a; 给定一个字符串 sss 和一个字符串 ttt &#xff0c;输出 sss 和 ttt 的最长公共子序列。 输入格式&#xff1a; 两行&#xff0c;第一行输入 sss &#xff0c;第二行输入 ttt 。 输出格式&#xff1a; 输出 sss 和 ttt 的最长公共子序…

程序的动态链接(4):动态链接信息

前言 操作系统在执行动态链接的可执行文件时&#xff0c;会首先加载动态链接器&#xff0c;然后由动态链接器根据保存在可执行文件中的动态链接信息&#xff0c;完成依赖动态库的加载、符号解析以及重定位等工作。这些动态链接信息包括但不限于&#xff1a; 动态链接器路径&a…

联邦调查局和国际执法合作加强打击非法DDS攻击

©网络研究院 美国司法部在12月14日查封了48个出售“booter”或“stresser”服务的域名&#xff0c;这些服务使非技术用户可以轻松、廉价地发起强大的分布式拒绝服务(DDoS)攻击&#xff0c;旨在离线攻击目标。 司法部还指控六名美国男子犯有计算机罪&#xff0c;他们涉嫌…

基于simulink的PV光伏发电MPPT仿真

up目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 由于人口增加、城市化和工业化&#xff0c;能源需求与日俱增&#xff0c;可再生能源是我们传统能源的替代品&#xff0c;因为传统能源是有限的&#xff0c;而且会过期。 太阳能、风能和水能等清洁能源变得越来越…

老生常谈React的diff算法原理-面试版

第一次发文章 not only&#xff08;虽然&#xff09;版式可能有点烂 but also &#xff08;但是&#xff09;最后赋有手稿研究 finally看完他你有收获 diff算法&#xff1a;对于update的组件&#xff0c;他会将当前组件与该组件在上次更新是对应的Fiber节点比较&#xff0c;将比…

关于2022年国内软件质量调查问卷的一些感悟与收获

&#x1f4cb;前言 1️⃣关于2022年国内软件质量调查主题征文活动 CSDN《2022年国内软件质量调查》正式开启&#xff0c;我们诚邀各位博主&#xff0c;特别是测试领域的各位技术er参与调查&#xff0c;并围绕主题&#xff0c;撰写《我填写“2022年国内软件质量调查问卷”的感想…

刷了一个月面试题,终于拿到了字节跳动的offer

一面 自我介绍项目中的监控&#xff1a;那个监控指标常见的有哪些&#xff1f;微服务涉及到的技术以及需要注意的问题有哪些&#xff1f;注册中心你了解了哪些&#xff1f;consul 的可靠性你了解吗&#xff1f;consul 的机制你有没有具体深入过&#xff1f;有没有和其他的注册…

(二)fiber的基本认识

上一篇文章我们了解了react新老结构的差异以及存在的缺点&#xff0c;其中react的解决方案就是采用fiber架构和添加Schedule模块。 ✍️&#xff1a;Schedule模块的主要工作是任务的调度&#xff0c;负责调度不同优先级任务的执行时机&#xff0c;这个我们后面再讲&#xff0c;…

Ardor公链生态与Jelurida产业区块链布局

Ardor公链 Ardor公链&#xff08;ARDR&#xff09;基于NXT公链&#xff0c;并于2018年1月1日推出了多链架构&#xff0c;旨在克服单链本质上的局限性。根据Ardor平台的白皮书&#xff0c;其主要目标是&#xff1a; 解决最终用户必须拥有作为手续费&#xff08;Gas费&#xff…

FineReport复杂表格软件- 相对层次坐标

1. 概述 相对层次坐标是用来描述目标单元格和当前单元格之间的位置关系的表达式&#xff0c;概念图如下图所示&#xff1a; 说明&#xff1a; 参数 说明 Cellx 表示需要返回结果的单元格 Celly 表示位移时参考的单元格 z 代表相对位移的位置 注&#xff1a;相对后移需要…

【Linux】必须掌握的Linux常见指令分类讲解

目录一.Linux下的文件树二.工作目录切换命令1.ls——显示当前路径下的文件和目录2.pwd——显示当前目录的绝对值路径3.cd——切换至指定目录三.文件目录管理命令1.touch——创建空文件2.tree——树状打印目录3.mkdir——创建目录4.rmdir 和 rm ——删除目录5.cp——拷贝文件或目…