全面理解什么是Docker? Docker 的基本使用
- 介绍docker历史
- docker主要能做什么?
- docker 的基本操作
- docker 的底层原理
- 镜像命令
- 容器命令
- 可视化管理镜像
- 如何实现提交镜像
- 总结
一.介绍docker历史
Docker的历史介绍,在2010年的时候,docker 就诞生了,当时,也就是几个搞IT的年轻人,在美国开了家公司,一开始并不叫docker,而叫dotcloud,那是公司也是搞pass云计算,之前,docker 并没什么影响,最后想出来开源,越来越多的人发现了它的用处,非常好用,在2014年4月9,Docker1.0发布。现在已经称为每一个开发必须需要掌握的技能。
vm虚拟机与docker容器技术
vm虚拟机,软件大,笨重,开启centos原生镜像,类似一个电脑,虚拟机虚拟化技术docker,容器技术,也是虚拟化技术,docker镜像,只需要最核心的部分,不需要的全部省去,大大的节省了内存占用
二.docker主要能做什么?
使用容器化技术,开发将环境和app打包成一个包,生成镜像,隔离成多个容器,对多个应用进行隔离,十分的安全,而相对比传统的虚拟机,虚拟出一个硬件,来完整的操作系统,需要安装使用容器,也就是我们的docker,应用在宿主机中,非常轻便,彼此互相隔离,起到一个保护的作用,容器与容器之间互不影响。参照之前的DevOps(开发,运维),可以更快速的交付和部署,直接使用docker打包镜像,一键运行即可。还可以实现便捷的升级和扩缩容,部署应用,类似搭积木,一层一层的,将项目打包成镜像(一个应用+环境),易于扩展。实现更高效的资源利用。
三.docker 的基本操作
全部都是在linux 下进行操作
1.首先需要卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.下载仓库
yum install -y yum-utils
3.设置镜像仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
4.安装docker
yum install docker-ce docker-ce-cli containerd.io
5.启动docker
systemctl start docker
6.查看安装成功
docker version
7.查看已经下载的镜像
docker images
8.卸载docker
yum remove docker-ce docker-ce-cli containerd.io
9.删除资源路径
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
四.Docker的底层原理
docker是怎么工作的?docker也是c/s架构,docker守护进程,都是通过socket 从客户端进行访问,DockerServer 接收到DockerClient的请求指令,执行命令,客户端通过Linux,访问守护进程,再去找对应的Docker(容器)
Docker的帮助文档
Docker 为什么比VM快
1.有着比虚拟机更少的抽象层
2.docker 利用的是宿主机的内核,vm需要Guest os,新建一个容器,docker不需要向虚拟机重新加载一个操作系统内核,避免引导。减少大量的时间,所以说docker 是秒级,而vm需要几分钟才能运行起来。
五.镜像命令
常用镜像命令:
查询所有的已下载的镜像:docker images
docker search 镜像名
docker pull 镜像名,远程下载镜像
使用docker images 查找到镜像id
docker rmi -f 镜像id
删除多个镜像 docker rmi -f 镜像id 镜像id
六.容器命令
新建容器并且使用,启动容器
docker run [可行参数] images
#参数说明
内部参数 | 详细介绍 |
---|---|
–name=“Name” | 容器名字,自定义 |
-d | 后台方式运行 |
-it | 使用交互方式运行 |
-P | 随机映射端口号 |
-p | 指定端口号 |
进入容器:-it 以交互式进入,默认方式: /bin/bash
docker run -it centos /bin/bash
#查看当前正在运行的容器
docker ps
退出容器
exit:退出即关闭容器
ctrl+p+q:退出但后台运行,如果需要再进入容器,可以使用docker attach 容器id,进入
删除容器
docker rm 容器id
使用变量的方式,可以删除符合条件的所有容器$()
docker rm -f $(docker ps -aq)
删除后进行查看
启用,停止容器,简单命令,大家自行熟悉即可
docker start 容器id
docker stop 容器id
docker restart 容器id :重启容器
docker kill 容器id 强制停止
查看日志 --tail n 显示最后日志的条数n
docker logs -t -f --tail n 容器id
查看当前正在运行的容器
docker top 容器id
查看容器的源数据
docker inspect 容器id
进入容器
#开启一个新终端 以交互式进行
docker exec -it 容器id /bin/bash
#打开正在执行的终端
docker attach 容器id
七.可视化管理镜像
portainer图形化管理工具
使用命令
docker run -d -p 8100:9000 \
--restart always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
在公网中访问:
http:ip地址:8100,访问
自己设置密码,点击登录
最后展示效果
八.如何提交一个自己的镜像
回过头说,镜像是什么,相信很多人已经有了一定的认识。镜像,可以把它看做一个轻量级的应用,独立的软件包,将所有的配置文件,运行环境,库,全部打包成一个镜像,直接可以跑起来,那我们又会想一个问题,如何打包镜像呢?下面具体来说说
我们拿tomcat 来进行举例,当我们pull一个tomcat的时候,其实里面是分为一层一层的,我们想新增一个容器,所有的操作在容器中进行,如果想发布,需要将已经更改好的容器重新打包,使用到的命令commit,docker commit
docker commit -a "tomcat" -m "mytomcat01" 容器id tomcat02:1.0
尝试运行刚刚提交的镜像
docker run -d --name tomcat01 -p 3345:8080(tomcat的默认地址) tomcat02:1.0
九.总结
docker 基本上每一个开发必会的技能了,抓紧学习,避免被淘汰,容器的作用有目共睹,将镜像分装成一层一层的,如果执行有下载,直接跳过,大大的节省了内存,存放在容器,安全,便捷,但有个问题,比如,将mysql的数据放入docker容器中,如果容器一旦被删除,里面的数据是不是也会被丢失,也就是我们所说的删库跑路了,那如何避免这个问题呢?那就需要进行更深层次的探讨了,运用到了我们的数据卷技术了,当然,docker这只是入门,更复杂的还在后面了,比如,数据卷,dockerfile,docker 网络,只要用心学,相信大家都能学会。
第一次写自己的博客,大家一起学习进步,day day up,有错误,希望大家指出,一定虚心接受,改正。