将下边晦涩难懂的灰色描述方式简化为下边蓝色字体的描述方式, 请背诵这段蓝色文字。
Docker是一个用来开发软件、 运行软件、传输软件的平台。 可以将软件的运行环境和软件放到一个容器中封装到一块儿。 不论是进行软件测试, 还是软件部署,还是通过网络远程传输来升级软件都可以将这个整体传递到另一端来进行测试、部署、或升级。这样不会出现开发没问题,但是因为软件的运行环境版本问题导致 测试失败、部署失败、或升级后无法运行。
我们把软件和它的运行环境封装成一个整体, 把这个整体进行传输或保存时是以镜像image文件的形式进行的。 如果要把这个整体运行起来,是根据镜像文件来启动的,根据镜像文件来启动出来的这个正在执行的整体称作容器container。
其他:
1.镜像image和容器container的使用都要依赖Docker软件。
2.镜像服务器(registry):有很多网站收集了很多定制好的镜像, 比如mysql镜像。 我们从这些网站下载这个镜像到本地仓库后,再根据本地仓库的镜像启动出一个容器, 我们的linux中就可以使用这个软件了。
3.本地镜像仓库repository: 存储下载好的镜像的一个仓库(一个文件夹)
注意: Docker学习主要是上边的蓝色文字比较重要,以及下边的第六七八项比较重要。
Docker是一个用来开发、运输和运行应用程序的开放平台。使用Docker可以将应用程序与基础结构分离,以便快速交付软件。使用Docker,您可以以管理应用程序的方式管理基础架构。通过利用Docker的方法快速传送、测试和部署代码,可以显著减少编写代码和在生产中运行代码之间的延迟。
Docker是一个用来开发、运输和运行应用程序的开放平台。使用Docker可以将应用程序与基础结构分离,以便快速交付软件。使用Docker,您可以以管理应用程序的方式管理基础架构。通过利用Docker的方法快速传送、测试和部署代码,可以显著减少编写代码和在生产中运行代码之间的延迟。
1.1.解压RockyLinux_8.5_VBM.7z
获得1.78GB的文件,然后打开这个文件夹
1.2.双击蓝色图标
会自动开启virtualbox虚拟机,并加载当前镜像
注意:必须保证当前镜像文件所在全部路径都没有中文
选中镜像,点击设置,修改usb设置
1.3.设置网络桥连
二、启动虚拟机:
2.1.上面配置完成之后,可以启动虚拟机
启动虚拟机之后,等待出现登录页面
注意:用户名密码默认都是rockylinux
登录之后,我们的用户是rockylinux用户,这个用户并不是系统最高权限的用户
我们需要登录系统最高权限的用户root才能畅通无阻的配置和安装系统软件
2.2.输入右边命令切换到root账户 :
sudo su -
2.3.然后用passwd命令为root用户设置一个密码,方便今后登录
passwd
2.4.设置完成之后,我们尝试连接网络,如果能够有周期响应表示当前虚拟机可以使用网络
如果没有响应,尝试重新调整网卡网络共享配置和虚拟机的网卡桥接配置
ping www.baidu.com
注意:Ctrl+C可以随时退出当前运行的程序 返回到命令符
2.5.查虚拟机ip地址:
虚拟机启动后,如果用宿主机(真实电脑)访问虚拟机, 则虚拟机必须有一个ip地址
ifconfig 或 ifconfig | more
ipconfig|more是分页显示
上边命令可以查看当前虚拟机网络情况, 查看自己的ip,比如: 192.168.0.125
后边可以用linux客户端软件根据此ip来连接虚拟机
无论是虚拟机还是实际的物理服务器
我们想远程的控制这个机器的话,都需要使用一个客户端软件,来专门连接服务器,并向服务器发送指令的客户端。
市面上有很多可以连接linux远程服务器的客户端软件比如xshell,我们给大家介绍的Bitvise SSH Client属于免费软件中比较易用的。
连接服务器的核心参数如下:
输入记录的ip地址 192.168.0.125
端口号22
输入用户名 root
输入密码 root
Docker是一个用来开发、运输和运行应用程序的开放平台。使用Docker可以将应用程序与基础结构分离,以便快速交付软件。使用Docker,您可以以管理应用程序的方式管理基础架构。通过利用Docker的方法快速传送、测试和部署代码,可以显著减少编写代码和在生产中运行代码之间的延迟。
传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。
随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。
应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。
Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor [管理程序] 支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。
首先需要了解什么是容器,容器就是一个进程,内部是独立运行的一个或者是一组应用。它可以被启动、开始、停止、删除。每个容器都是相互隔离的,保证安全的平台。
注意: 每个容器都有用于通信的ip, 容器之间可以通过ip进行通信(还有用户自定义桥接网络 User-defined networks通信等方式)
镜像(Image)就是一个只读的模板文件。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。 就好似 Java 中的 类和对象,类就是镜像,容器就是对象!也可以把镜像看成是模具,而镜像创建出来的容器就是通过这个模具创建的一个个的实际产品
宿主机就是我们调用命令使用镜像创建容器的服务器。
一个用来容纳多个镜像的仓库,可以链接仓库获取你想要的内部镜像,一般一个镜像仓库中包含多个不同tag的镜像。
镜像仓库占用的服务器,这里注意一个镜像服务器未必只有一个仓库,可以有很多仓库,每个仓库又保管的是不同镜像。
调用docker命令,操作镜像,容器的进程。只要能链接宿主机,操作docker的进程都是docker-client。
Home - Docker
所有步骤,均参考官方文档:
Install Docker Engine on CentOS | Docker Documentation
Docker Hub
三种方式中,从仓库安装是最简单的
但是需要虚拟机有网络环境
我们使用的rockylinux支持yum命令
yum命令就像手机中的应用商店一样
6.1.安装yum-utils包: 为了实现方便的安装各种"应用商店"中包含的程序
yum install -y yum-utils
6.2.指定docker仓库路径:
yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
7.1.下面开始安装Docker环境(安装Docker软件):
也是使用yum命令
yum -y install docker-ce docker-ce-cli containerd.io
运行后,当前linux系统就具备了启动Docker的环境
7.2.使用下面的命令启动Docker
systemctl start docker
7.3.测试Docker
Docker软件有一个专用的测试镜像
docker run hello-world
看到下面的信息
Hello from Docker!
This message shows that your installation appears to be working correctly.
表示docker一切正常
Docker命令的语法结构
docker 子命令 [选项]
docker都有哪些子命令呢,我们可以使用docker的helper子命令查看
docker --help
如果想查询具体的子命令的使用方式
docker 子命令 --help
我们最常用的子命令之一:启动docker容器的run的相关帮助可以
docker run --help
当然也可以吃查询官方文档或百度了解更多内容
Reference documentation | Docker Documentation
docker images命令主要能完成查看当前本地镜像库的内容
docker images
这个命令的返回结果显示:
调用docker images的常用选项如下:
我们在从网络中拉去镜像之前,需要先搜索正确的镜像名称
借助search命令
docker search mysql
这个命令的返回结果显示:
当我们搜索到想要下载拉取的镜像后
就可以使用pull命令,从镜像服务器下载拉取镜像到本地仓库
docker pull mysql
下载默认是最新版本
如果想指定版本号(版本号官方文档可查)
docker pull mysql:5.7.35
当本地系统中的镜像较多时,可以删除不适用的镜像,节省空间
使用rmi命令,删除时指定的是镜像id
所以一般都会先使用docker images查看要删除的镜像id 然后复制
docker rmi feb5d9fea6a5
删除运行中的镜像会报错 如果需要强制删除这个镜像加-f选项
docker rmi feb5d9fea6a5 -f
rmi命令的选项:
docker run 可以指定本地仓库的镜像文件启动,创建新的容器然后运行
要注意一个镜像是可以创建多个容器启动,然后运行的
docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/data:/var/lib/mysql mysql:5.7.35
1: --name mysql:该容器启动后的名字:(自定义命名)如果没有设置,系统会自动设置一个,毕竟如果开启太多的容器,记不住就很尴尬,建议加上见名知意。
2:-d 代表后台启动该服务
3:-p 3306(这是liunx的端口号,我习惯说成宿主机,如果我们想要远程服务的话,访问的端口就是这个端口):3306(docker容器的端口,每一个容器都是独立的,可理解成操作系统层面的系统),访问这个端口就是先通过远程访问宿主机的端口,再映射到docker容器的端口访问mysql。
4:-e MYSQL_ROOT_PASSWORD=123456 这是说mysql启动需要的开机密码,默认的账号是root ,密码就是上面设置的:123456
5:-v /root/data:/var/lib/mysql /root/data/:这是宿主机的数据存放路径(你也可以自定义), /var/lib/mysql:这是mysql容器存放数据的地方。也是为了同步数据,防止,容器被删除以后,数据就不存在了。
6:启动成功后就返回一个容器ID
当容器启动后,我们在宿主机输入docker ps可以查看当前正在运行的容器列表
docker ps
ps命令中常见的选项如下:
当前正在启动的容器如果想停止就使用stop命令
如果想删除容器,就stop命令停止之后执行rm命令
注意:这里rm删除的是容器,不是本地镜像,和rmi命令要区分
首先使用docker ps命令查询所有正在运行的容器
docker stop [容器id] docker rm [容器id]
rm的选项有:
-f:强制删除容器,无论是否运行,如果不加,运行的容器无法删除。
课堂作业 自己安装运行一个redis
docker run -itd --name redis-test -p 6379:6379 redis docker exec -it redis redis-cli
zhaoYQ 2022-07-13