一.概述
Docker提供了在松散隔离的环境(称为容器)中打包和运行应用程序的功能。隔离和安全性使您可以在给定主机上同时运行多个容器。容器是轻量级的,包含运行该应用程序所需的所有内容,因此您无需依赖主机上当前安装的内容。您可以在工作时轻松共享容器,并确保与您共享的每个人都能以相同的方式获得相同的容器。
1.容器化技术
虚拟机技术缺点:
-
资源占用十分多
-
冗余步骤多
-
启动很慢
容器化技术不上模拟的一个完整的操作系统
比较docker和虚拟机的不同:
- 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
- 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
- 每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响
2.DevOps(开放、运维)
应用更快速的交付和部署
传统:一堆帮助文档,安装程序
Docker:打包镜像发布测试,一键运行
更便捷的升级和扩缩容
使用了Docker之后,我们部署应用就和搭积木一样,项目打包为一个镜像,扩展服务器A,服务B
更简单的系统运维
在容器化之后,我们的开发,测试环境都是高度一致的
更高效的计算资源利用
Docker 是 内核级别的虚拟化,可以再一个物理机上可以运行很多容器实例!服务器的性能可以被压榨到极致。
二. Docker 安装
1.Docker基本组成
镜像(image):
好比一个模板,可以通过模板来创建容器服务,tomcat镜像->run->tomcat01容器(提供服务器),通过这个镜像可以创建很多个容器,最终服务或者项目运行是在容器中
容器(container):
Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的
启动,停止,删除,基本命令
目前可以把这个容器理解为一个简易的Linux系统
创库(repository):
存放镜像的地方,分为共有/私有,Docker Hub(默认是国外的,速度慢)
阿里云......都有容器服务器(配置镜像加速)
2. 安装
环境查看
#系统内核是 3.10以上
[root@VM-0-15-centos ~]# uname -r
4.18.0-240.1.1.el8_3.x86_64
#系统版本
[root@VM-0-15-centos ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
安装步骤:
https://docs.docker.com/engine/install/centos/
#卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#需要的安装包
sudo yum install -y yum-utils
#设置镜像仓库
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 #阿里云的镜像仓库地址
#更新yum软件包索引
yum makecache fast
#安装docker相关的 docker-ce社区版 docker-ee企业版
yum list docker-ce --showduplicates | sort -r
#启动Docker
sudo systemctl start docker
#查看Docker信息,有就安装成功了
docker version
#运行hello-world 没有镜像会自己去拉取然后运行
sudo docker run hello-world
#查看一下下载的镜像都有哪些
docker images
卸载docker
#卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io
#卸载资源
sudo rm -rf /var/lib/docker #docker的默认工作路径
sudo rm -rf /var/lib/containerd
3.阿里云镜像加速
登录阿里云,找到容器镜像加速服务
配置使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://19gis32c.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
run流程
Docker底层原理
Docker是怎么工作的?
Docker 是一个Client -Server 结构的系统,Docker 的守护进行运行在主机上。通过 Soket 从客户端访问!
DockerServer 接收到 Docker - Client 的指令,就会执行这个命令!
Docker 为什么比VM快?
1、Docker 有着比虚拟机更少的抽象层。
2、Docker 利用耳朵是宿主机的内核,vm需要是 Guest OS。
总结: 新建一个容器的时候,docker 不需要像虚拟机一样重新加载一个操作系统的内核,虚拟机是加载 Guest OS,分钟级别的, 而Docker 是利用 宿主机的操作系统
三、Docker常用命令
1.帮助命令
#docker 的版本信息
sudo docker version
#docker 的详细信息
sudo docker info
#docker 帮助命令
sudo docker --help
查询地址:https://docs.docker.com/engine/reference/commandline/docker/
2.镜像命令
查看镜像
[root@xianfang local]docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rabbitmq latest f50f482879b3 3 months ago 156MB
redis latest 74d107221092 3 months ago 104MB
portainer/portainer-ce latest a0a227bf03dd 6 months ago 196MB
hello-world latest bf756fb1ae65 14 months ago 13.3kB
#REPOSITORY 镜像的仓库名字
#TAG 镜像的标签
#IMAGE ID 镜像的id
#CREATED 镜像的创建时间
#SIZE 镜像的大小
#可选项
-a # 列出所有镜像
-q #只显示镜像的id
搜索镜像
[root@xianfang local]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10557 [OK]
mariadb MariaDB Server is a high performing open sou… 3942 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 774 [OK]
# 可选项,通过搜索
[root@xianfang local]# docker search mysql --filter=STARS=5000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10557 [OK]
下载镜像
#下载镜像,默认下载最新版 latest
[root@xianfang local]# docker pull mysql
Using default tag: latest # 如果不写 tag,默认就是 latest
latest: Pulling from library/mysql
a076a628af6f: Pull complete #分层下载,docker images 的核心 联合文件
f6c208f3f991: Pull complete
88a94