Docker安装
Docker的基本结构:
镜像(image):docker镜像好比一个模板,可通过这个模板来创建容器服务,tomcat镜像–>run–>tomcat01容器(提供服务器),通过这个镜像可创建多个容器(最终服务运行或者项目运行就是在容器中的)。
容器(container):Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。
启动;停止;删除;基本命令;
目前可以将容器理解为一个简易的linux系统
仓库(repository):存放镜像的地方。
仓库分为公有仓库和私有仓库。
Docker Hub(官方,国外)
阿里云等都有容器服务器(配置镜像加速)
安装Docker
本文使用的环境和工具是:
- CentOS7
- Xshell
帮助文档:
帮助文档https://docs.docker.com/engine/install/centos/:
版本要求:
正式安装:
# 1、卸载旧的版本(首次安装不需要)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2、需要的安装包
sudo yum install -y yum-utils
# 3、设置镜像的仓库
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
# 4、安装docker docker-ce社区版 docker-ee是企业版
sudo yum install docker-ce docker-ce-cli containerd.io
# 需要的话可以安装以前的版本,本文选择社区版
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
# 5、启动docker
sudo systemctl start docker
# 6、查看是否安装成功
docker version
# 7、测试hello-world
sudo docker run hello-world
# 8、查看下载的hello-world镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 3 months ago 13.3kB
卸载docker(了解即可)
# 1、卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io
# 2、删除资源
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
# /var/lib/docker docker默认工作路径
阿里云镜像加速
执行命令:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://****.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
回顾HelloWorld流程
过程如下:
底层原理
Docker是怎么工作的?
Docker是一个Client-Server结构的系统,docker的守护进程运行在主机。通过socket从客户端访问。
DockerServer接收到Docker-Client的指令,就会执行指令。
Docker为什么比VM快?
- Docker比虚拟机更少的抽象层。
- docker利用的是宿主机的内核,Vm需要的是Guest OS(比如Centos)。
- 所以,新建一个容器时,docker不用像虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载Guest OS,分钟级别的,而docker是利用宿主机的操作系统,省略了复杂的过程,秒级的。
- 安全性,Vm比docker要强。