常见问题
无法拉取镜像
DNS解析问题
sudo vim /etc/resolv.conf
添加
nameserver 8.8.8.8
nameserver 8.8.4.4
重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
更新CA证书
sudo apt-get update
sudo apt-get install --reinstall ca-certificates
sudo update-ca-certificates
配置镜像加速
sudo vim /etc/docker/daemon.json
追加
{
"registry-mirrors": ["https://<your-accelerator-url>"]
}
重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker
为什么会有Docker这项技术的广泛使用?
- 环境:包括OS、SDK、Language Env、System Env
- 依赖:使得容器内的依赖独立
- 效率:对比虚拟机,通过容器来进行虚拟化更接近于原生系统运行速度
- 部署:最终达到全自动化的不挑环境的高质量部署,使得开发者可以有更多的时间注重于核心开发上
Docker主要解决了什么问题?
软件开发中,对于项目的开发、测试、部署环境的自动化与统一化
如何理解Docker的作用?
虚拟化开发的相对面是本地的实体化开发,类似于使用本地虚拟机作为服务器和云服务器之间的关系,当然是云服务器更好用,对应的,也许要更大的学习成本,但熟悉过后就很好用,就像VIM一样
通过docker抓取到的镜像,省去了传统开发的“搜索-下载-解压-安装-配置”的繁琐操作,通过docker进行虚拟化,使得服务可以摒弃原有繁琐耗时的操作,具备相当高的易用性
延伸到集群,基于虚拟化部署的软件通过逻辑编排和整体封装,实现的效果就从2D跃升到了3D
讲讲Docker的架构?
Docker采用CS架构,输入docker version后出现client和server信息,类似于前后端,必须client和server均启动,docker才能正常运行
docker deamon:服务端守护进程,管理Docker各种资源;接收docker client发送的请求;在终端中的命令本质上都是发送给了docker deamon
docker client:向deamon发送请求
docker client和docker deamon通过socket或rest API
怎么理解容器化?
APP打包成容器,然后在容器中运行APP的过程
1. 创建docker file
2. 构建镜像
3. 创建 && 运行容器
镜像和容器的关系?
类似于食谱和菜肴、类和实例的关系,一个镜像可以创建一个或者多个容器,一份食谱可以制作出一个或者多个的菜肴
镜像和DockerHub的关系?
类似于up主的视频和B站、project和GitHub、npm包和npm、jar包和中心仓库的关系,镜像可以上传到DockerHub,up主自己做的的视频可以上传到B站
部署失败的情况
部署失败包括APP失败和容器失败两种情况
容器失败:log查看是否失败,若报错或为空,则容器失败