认识docker!!! 作者: ynnddddd 时间: 2024-08-08 分类: 网络安全 1.docker是什么? ------------ docker是一个用来装应用的容器,就像杯子可以装水,笔筒可以放笔,书包可以放书,可以把hello word放在docker中,可以把网站放入docker中,可以把任何想得到的程序放在docker中. 没有集装箱之前运输货物,东西零散容易丢失,有了集装箱之后货物不容易丢失,我们可以把货物想象成程序,目前我们要把程序部署到一台新的机器上,可能会启动不起来,比如少一些配置文件什么的或者少了什么数据,有了docker的集装箱可以保证我们的程序不管运行在哪不会缺东西. docker运输东西有一个超级码头,任何地方需要货物都由鲸鱼先送到超级码头,然后再由鲸鱼从超级码头把货物送到目的地去.对应的技术来说,比如我们要把台式机的应用部署到笔记本上,我们可能选择用QQ发过去或者用U盘拷过去,docker就标准化了这个过程,我们只需在台式机上执行一个docker命令,把鲸鱼派过来,把程序送到超级码头去,再在笔记本上执行一个docker命令,然后由鲸鱼把程序从超级码头送到笔记本上去. 2.docker可以解决什么问题? ----------------- **系统环境不一致** 开发:我本地没问题.运维:服务器没问题. 这个问题就变成了皮球. 如果一个应用要正常的启动起来需要什么?比如java web应用. 需要一个操作系统,操作系统之上要jdk,tomcat,我们的代码,配置文件. 操作系统的改变可能会导致我们的应用开不起来,比如我们调用了某些系统命令. jdk版本也可能导致程序的运行失败.比如class文件需要1.7编译,我们装了个1.6的jdk. tomcat版本也能导致失败,比如旧的版本一些配置在新版本中不再支持. 代码的话就比如应用了C盘,D盘的一个文件,或者是用了系统的一些环境编码. 配置的话我们可能少了某个配置文件等等. 下面docker来了,它把操作系统,jdk,tomcat,代码,配置全部放到集装箱里.再打包放到鲸鱼上,由鲸鱼给我们送到服务器上,在我的机器上怎么运行,在别的机器上也怎么运行.不会有任何的问题.一句话就是docker解决了运行环境不一致所带来的问题. **系统好卡,哪个哥们又写死循环了** 如果有根别人共用服务器的同学可能有这样的体会,莫名其妙发现自己的程序挂了,一查原因要不是内存不够了,要不是硬盘满了,还有就是发现某个服务变慢了,甚至敲终端都比较卡,但是linux本身就是一个多用户的操作系统本身就可以供多个用户使用,docker的隔离性可以解决这个问题,就算别人的程序还是死循环疯狂吃CPU,还是封装疯狂打日志把硬盘占满,还是内存泄漏,把内存占满,都不会导致我们的程序运行错误.因为docker在启动的时候就限定好了,它最大使用的CPU硬盘,如果超过了,就会杀掉对应进程. **双11来了,服务器撑不住了** 大部分系统业务量并不是每天都比较平均的,特别是一些电商系统,每天总有那么几天业务量是平时的几倍甚至几十倍,如果按双11的规模去准备服务器那么对于平时的规模来说又是极大的浪费,所以就在节日前临时扩展机器,过完节再把多余的节点下线,这就给运维带来了非常大的工作量,一到过节就在各个机器上部署各种各样的服务,我们启动程序需要java,tocmat等等,并且还可能起不来还要调试,这是非常恶心的工作,有了docker一切都变得美好了,只要点一下服务器就可以从10台变成100台甚至1000,1W台.都是分分钟的事情. 为什么会这么快呢?都是用标准的方式把我们的程序运过来,下载过来,再用标准的方式把它运行起来,就可以做到只要在每台机器上都执行一两条命令,就可以让程序正常跑起来,并且不用担心有问题. 3.docker的镜像,容器,仓库 --------------- **镜像(image)**: Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像 ===>run==>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目 运行就是在容器中的)。 build:构建,就是构建镜像. **容器(container)**: Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。 启动,停止,删除,基本命令! 目前就可以把这个容器理解为就是一个简易的linux系统。 ship:运输,运输镜像,从仓库和主机运输. **仓库(respository)**: 仓库就是存放镜像的地方! 仓库分为公有仓库和私有仓库! Docker Hub(默认是国外的) 阿里云...都有容器服务器(配置镜像加速) run:运行的镜像就是一个容器. **build,ship,run和镜像,仓库,容器是一一对应的.** 4.对于docker的安装 ------------- 这个网上到处是教程,我就不详细写了,因为在一个搭建了宝塔面板的服务器上,宝塔面板可以帮你实现. 5.docker常用语法 ------------ 启动docker systemctl start docker 开机自启 systemctl enable docker 停止docker systemctl stop docker 重启docker systemctl restart docker 查看docker版本 docker version 查看docker概要信息 docker info 查看docker姿态 systemctl status docker ![2024-08-07T17:51:39.png][1] 参数: 含义 - REPOSITORY: 表示镜像的仓库源 - TAG: 镜像的标签版本号(默认是 latest,表示最新) - IMAGE ID: 镜像ID - CREATED: 镜像创建时间 - SIZE: 镜像大小 搜索镜像 docker search lamp ![2024-08-07T17:56:54.png][2] ![2024-08-07T17:57:28.png][3] **`--limit`** : 只列出N个镜像,默认25个。例如: docker search --limit 5 lamp //代表只列出5个 下载镜像 docker pull hello-world docker pull tutum/lamp 如果要下载指定版本则在镜像后面加冒号指定版本 docker pull tomcat:7 新建容器并启动 docker run -it hello-world docker run [OPTIONS] IMAGE [COMMAND] [ARG...] #新建+启动容器,同一个镜像可以启动多个 容器实例! **OPTIONS说明:** (注意!有些是一个减号,有些是两个减号) --name="容器新名字" 为容器指定一个名称,不指定系统随机分配一个; -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);(这个参数会在后面的启动守 护式容器写) -i:以交互模式运行容器,通常与 -t 同时使用; -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;也即启动交互式容器(前台有伪终端, 等待交互); -P: 随机端口映射,大写P -p: 指定端口映射,小写p ![2024-08-07T18:17:52.png][4] 查看当前容器 docker ps # 列出当前正在运行的容器 -a # 列出当前正在运行的容器+带出历史运行过的容器 -n=? # 显示最近创建的容器 -q # 只显示容器的编号 进入当前正在运行的容器 # 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置 docker exec -it 容器id /bin/bash docker attach 容器id 正在执行当前的代码 # docker exec # 进入容器后开启一个新的终端,可以在里面操作(常用) # docker attach # 进入容器正在执行的终端,不会启动新的进程 题目拷贝 docker cp 题目路径 容器ID:/var/www/html 启动和停止容器的操作 docker start 容器id # 启动容器 docker restart 容器id # 重启容器 docker stop 容器id # 停止当前正在运行的容器 docker kill 容器id # 强制停止当前容器 删除容器 docker rm 容器id # 删除指定的容器,不能删除正在运行的容器 docker rm -f 容器id # 强制删除 docker rm -f $(docker ps -aq) # 删除所有的容器 docker ps -a -q|xargs docker rm # 删除所有的容器 退出容器 exit # 直接容器停止并退出 Ctrl + P + Q # 容器不停止退出 查看容器中进程信息 docker top 容器id 查看日志 docker logs -f -t --tail 数字参数 容器id 显示日志末尾后N行 # 显示日志 -tf # 显示日志 --tail number # 要显示日志条数 docker rmi 删除镜像 docker rmi -f 容器id # 删除指定的容器 docker rmi -f 容器id 容器id 容器id # 删除多个容器 docker rmi -f $(docker images -aq) # 删除全部的容器 $(docker images -aq) #遍历全部容器的id [1]: http://47.121.199.26/usr/uploads/2024/08/362363485.png [2]: http://47.121.199.26/usr/uploads/2024/08/391224996.png [3]: http://47.121.199.26/usr/uploads/2024/08/3998839039.png [4]: http://47.121.199.26/usr/uploads/2024/08/1125372140.png 标签: none
不用收藏,所有文章都是我一个人写的,按分类找就行了