目录
2.1 点击"未列出?"启动虚拟机,默认账号密码为root/root
一 Docker技术介绍
掌握Docker是什么,基本架构是怎样的,有哪些核心对象以及其运行机制。
1 定义以及作用
Docker是一个虚拟化平台( 官网https://www.docker.com/),诞生于 2013 年初,基于 Google 公司的 Go 语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器。
基于这种方式,可更快地打包、测试以及部署应用程序。因此docker属于运维技术.
现阶段,很多应用软件的安装都在向基于docker方式的安装进行实现。例如mysql,那么为什么不直接在操作系统中安装一个mysql,而是用容器呢?因为,安装MySql过程并不简单,要配置安装源,安装依赖包,对mysql进行配置…如果要在多台主机上安装,每台主机都要进行这些繁琐的操作,万一服务器挂了,这一系列操作还要再重来一遍,但有了docker,一个安装配置好的mysql容器,可以直接拿到另一台主机上启动,而不必重新安装mysql。另外,docker还有一重要的用处,就是可以保证开发,测试和生产环境的一致.
2 版本介绍
Docker分成了两个版本:Docker EE (企业版)和Docker CE(社区版本),其中,Docker EE由公司支持,可在经过认证的操作系统和云提供商中使用。Docker CE是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。
二 Docker的核心对象
1 镜像(Image)
Docker 镜像是一个特殊的文件系统(https://hub.docker.com/),除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。例如JDK镜像、Centos镜像、MySQL镜像等,可以暂时先将其理解为一个安装程序。
2 容器(Container)
Docker容器可以将其理解为一个运行镜像的载体,镜像(Image)和容器(Container)的关系,就像是光盘和光驱。容器基于镜像创建、启动,然后运行镜像的中的文件。
三 Docker 应用架构分析
1 架构图
Docker 是一种Client/Server架构的应用程序,
如图所示(参考docker 官网https://docs.docker.com/get-started/overview/)
- Docker Host是我们的docker宿主机(就是安装了docker的操作系统)
- Registry是docker拉取镜像的远程仓库,提供大量的镜像供下载,下载完成之后保存在Images中
- Docker Daemon是docker的服务线程,处理Docker客户端命令。
- Images 是Docker本地的镜像仓库,可以通过docker images查看镜像文件。
- Docker运行机制
2 Docker运行机制
2.1 docker pull 执行过程
- 客户端将指令发送给docker daemon
- docker daemon 先检查本地images中有没有相关的镜像
- 如果本地没有相关的镜像,则向镜像服务器请求,将远程镜像下载到本地
2.2 docker run 执行过程
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系# Docker安装统(简版linux系统),并在只读的镜像层外面挂载一层可读写层
- 从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
四 Docker的安装
Linux平台下Docker的安装过程,重点掌握在线安装,假如网络不好,可以尝试离线安装。
1 准备
- 准备CentOS(用课前资料中的CentOS7964),本次以CentOS7为例进行安装。
- 基于vmware打开CentOS
3. 克隆CentOS(选择链接克隆-更省空间,不影响本身的虚拟机状态),命名为CentOS7964-docker
2 开启虚拟机系统
2.1 点击"未列出?"启动虚拟机,默认账号密码为root/root
登陆后进入桌面:
左上方的应用程序可以进行上网,使用的是window共享的访问
2.2 右键桌面打开终端,通过ifconfig指令检查网络
ip地址不一样,复制IP地址,后面Mobaxterm需要使用ip
2.3 通过MobaXterm工具链接虚拟机系统
把复制的ip地址粘贴到第二步中,第三步设为root即可打开
密码:root
3 卸载Docker
假如已经有docker,可通过执行如下指令卸载Docker
sudo yum remove docker-ce \
docker-ce-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
4 在线安装Docker
4.1 安装一组工具
sudo yum install -y yum-utils
4.2 设置 yum 仓库地址,防止在中央仓库下载慢
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.3 更新 yum 缓存
sudo yum makecache fast #yum 是包管理器
4.4 安装新版 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
5 离线安装Docker
5.1 下载docker离线包
https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz
也可以从https://download.docker.com/linux/static/stable/网址下载指定版本
5.2 下载离线安装工具
https://github.com/Jrohy/docker-install/
将下载好的这个工具解压
5.3 将下载好的资源解压,放在一个目录
1) 在linux环境下,创建/root/setup/docker目录,然后拷贝下载好的资源到此目录(可通过MobaXterm工具直接上传到linux目录),例如
2) 使用linux命令查看是否拉取成功
[root@centos7964 ~]# cd /root/setup/docker/
[root@centos7964 docker]# pwd
/root/setup/docker
[root@centos7964 docker]# ls -l
总用量 68132
-rw-r--r--. 1 root root 69637582 8月 4 13:04 docker-20.10.6.tgz
-rw-r--r--. 1 root root 114793 8月 4 13:04 docker.bash
-rwxr-xr-x. 1 root root 7546 8月 4 13:04 install.sh
[root@centos7964 docker]#
5.4 执行安装操作
# 进入/root/setup/docker 文件夹
cd docker-install
# 为 install.sh添加执行权限
chmod +x install.sh
# 安装
./install.sh -f docker-20.10.6.tgz
5.5 安装成功以后,检查安装状态
docker info
6 Docker内存不够时,调解虚拟机的内存
以后启动容器时,可能是因为内存不够,所以需要以下操作:
- 关机Linux系统的docker虚拟机
- 编辑虚拟机内存,调到4G内存,重启虚拟机
五 Docker服务基本操作
重点讲解了Docker服务的启动,停止,重启、镜像加速、查看docker信息等基本操作.
1 启动docker服务
systemctl start docker
2 设置开机自启
systemctl enable docker
禁止开机启动:
systemctl disable docker
3 重新启动docker服务
systemctl restart docker
说明:Linux系统的重启命令是: reboot
4 查看Docker信息
查看安装信息,版本,目录等
docker info
5 停止docker服务
systemctl stop docker
6 查看Docker状态
systemctl status docker
7 Docker镜像加速
由于国内网络问题,需要配置加速器来加速。修改配置文件 /etc/docker/daemon.json
下面命令直接生成文件 daemon.json
最后重启docker服务
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
EOF
说明:在执行如上指令时,保证你的登录用户为root管理员用户。