1.docker的初识
1.什么是docker
- Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。
- Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
- 容器是完全使用沙箱机制,相互之间不会有任何接口,容器性能开销极低
2.docker的应用场景
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
3.Docker 的优点
Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
- 快速,一致地交付您的应用程序
- 响应式部署和扩展
- 在同一硬件上运行更多工作负载
2.docker架构的初识
1.docker的三个基本概念
1.镜像
Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
2.容器
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
3.仓库
仓库可看成一个代码控制中心,用来保存镜像。
2.镜像和容器的关系
- Docker 容器通过 Docker 镜像来创建
- 容器与镜像的关系类似于面向对象编程中的对象与类。
Docker | 面向对象 |
---|---|
容器 | 对象 |
镜像 | 类 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6qPJwERZ-1631007774625)(01.assets/image-20210426161801377.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G6w4kGdW-1631007774632)(01.assets/image-20200929095504234.png)]
3.centos7 安装docker
1.安装一些必要的工具
yum -y install yum-utils device-mapper-persistent-data lvm2
2.添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker
yum makecache fast
yum -y install docker-ce
4.启动docker服务
systemctl start docker
5.配置阿里云镜像
1.登录阿里云官网,没有的自己注册一个
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aQXkil33-1631007774636)(01.assets/image-20210426112514371.png)]
2.点击产品,然后鼠标滑到容器与中间件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FPXZTtiX-1631007774640)(01.assets/image-20210426112614347.png)]
3.点击容器镜像服务 ACR
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vV3lb5MB-1631007774643)(01.assets/image-20210426112818786.png)]
4.点击管理控制台
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jNshMpa5-1631007774646)(01.assets/image-20210426112912025.png)]
5.点击镜像工具下的镜像加速器,找到加速地址,第一次没有自己生成一下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iAEkTPHS-1631007774648)(01.assets/image-20210426112956950.png)]
6.配置加速镜像的地址
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://f8rkvwdj.mirror.aliyuncs.com"]
}
EOF
7.重启docker
systemctl daemon-reload
systemctl restart docker
4.docker的相关命令
1.查看当前本地有哪些镜像
docker images
- tag 版本
- image id 镜像的id
2.搜索镜像
docker search tomcat
- name:名称
- description:描述
- stars:点赞数
- offical:是否是官方
- automated:是否维护
3下载镜像
-
docker pull 镜像名称
-
docker pull tomcat 默认下载tomcat最新的镜像
-
docker pull tomcat:7.0.56 下载7.0.56版的tomcat镜像
docker pull tomcat:7.0.56
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Rp5VDjf-1631007774651)(01.assets/image-20210426141321244.png)]
4.删除镜像
- docker rmi 镜像名称/镜像ID
- 如果镜像生成的有容器,需要先删除容器才能删除镜像
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DZxHApMJ-1631007774655)(01.assets/image-20210426141446847.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5daXaPC2-1631007774657)(01.assets/image-20210426141519298.png)]
5.docker 运行hello world
docker run hello-world
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-guY2xYYf-1631007774660)(01.assets/image-20210426142838351.png)]
- 当然你也可以先下载镜像,再通过镜像运行容器
docker pull hello-world
docker run hello-world
6.通过镜像来运行一个tomcat
1.拉取tomcat镜像
docker pull tomcat:7.0.56
2.通过tomcat镜像来创建一个容器
docker run -d -p 8080:8080 --name mytomcat tomcat:7.0.56
- -p 8080:8080 将主机的 8080 端口映射到容器的 8080 端口
- –name mytomcat 创建容器的名称
- 最后一个tomcat:7.0.56是镜像的名称,也可以写成镜像的id
3.在本机进行测试
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IVFF50Si-1631007774662)(01.assets/image-20210426144053687.png)]
4.如果出现404错误解决方式
1.查看容器的id
docker ps
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xb6PaagD-1631007774664)(01.assets/image-20210426144405152.png)]
2.进入到tomcat容器中
docker exec -it 容器ID /bin/bash
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hsdSjvfD-1631007774667)(01.assets/image-20210426145057753.png)]
3.cp -r webapps.dist/* webapps
- 执行以上命令,有的tomcat默认没有webapps,而是webapps.dist
4.退出容器
exit 容器停止退出
ctrl+P+Q 容器不停止退出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PMdo7pyX-1631007774670)(01.assets/image-20210426145349239.png)]
5.重启容器
docker restart 容器id //需要把防火墙打开 默认要启用iptables规则
6.再次进行测试,注意关闭防火墙
7.容器中的命令小结
-
docker ps 查看正在运行的容器
-
docker ps -all 查看所有的容器
-
docker stop 容器ID 停止容器
-
docker start 容器id 启动容器 //需要把防火墙打开 默认要启用iptables规则
-
docker restart 容器id 重启容器 //需要把防火墙打开 默认要启用iptables规则
-
docker kill 容器ID或者容器名 强制停止容器
-
docker rm 容器ID 删除已停止的容器
-
docker logs -f -t --tail n 容器ID 查看容器日志 (–tail 数字 显示最后多少条)
-
docker cp 容器ID:容器内路径 目的主机路径 从容器内拷贝文件到主机上
8.通过刚才安装tomcat 说明容器他是一个小型的centos系统,可以在上面安装并执行相关的软件
5.一个容器就是一个小型的centos系统
1.我们再次进到tomcat容器中
- 执行命令 cd /
- 查看目录结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bBrHc0Pf-1631007774673)(01.assets/image-20210426150029147.png)]
- 这里也就说明一个容器可以看成一个小型的操作系统
2.查看是否安装了jdk
- 由于tomcat需要安装jdk才能起作用,我们看一下tomcat容器中是否安装了jdk
- 在tomcat容器中输入java命令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9B3e4NBW-1631007774676)(01.assets/image-20210426151313136.png)]
3.因此我们可以考虑一些事情
- 容器化技术,实际就是在一台机器上运行很多虚拟的容器
- 这些虚拟的容器就是一台台小型的操作系统
- 当我们运行容器的时候,它会自动帮助我们安装需要的软件
- 需要的软件安装好后,把对应的程序给启动起来,我们就可以使用了
4.推测镜像是什么
1.我们之前先获取的tomcat镜像,可以推测一下:
- 可能是一个shell脚本
- 里面首先编写了安装操作系统的脚本
- 其次编写了安装jdk的脚本
- 最后编写了安装tomcat的脚本