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

Source

Docker的简单安装及部署

一、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教程