docker应用推荐(docker都可以用来干什么)

本文目录
- docker都可以用来干什么
- docker有个啥用啊_docker是啥是干什么的
- docker容器中能装哪些软件
- docker使用教程
- Docker-可视化管理工具总结-推荐使用Portainer
- docker的应用场景
docker都可以用来干什么
1)测试:Docker 很适合用于测试发布,将 Docker 封装后可以直接提供给测试人员进行运行,不再需要测试人员与运维、开发进行配合,进行环境搭建与部署。
2)测试数据分离:在测试中,经常由于测试场景变换,需要修改依赖的数据库数据或者清空变动 memcache、Redis 中的缓存数据。Docker 相较于传统的虚拟机,更轻量与方便。可以很容易的将这些数据分离到不同的镜像中,根据不同需要随时进行切换。
3)开发:开发人员共同使用同一个 Docker 镜像,同时修改的源代码都被挂载到本地磁盘。不再因为环境的不同而造成的不同程序行为而伤透脑筋,同时新人到岗时也能迅速建立开发、编译环境。
4)PaaS 云服务:Docker 可以支持命令行封装与编程,通过自动加载与服务自发现,可以很方便的将封装于 Docker 镜像中的服务扩展成云服务。类似像 Doc 转换预览这样的服务封装于镜像中,根据业务请求的情况随时增加和减少容器的运行数量,随需应变。
docker有个啥用啊_docker是啥是干什么的
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。
Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持,就连Google的ComputeEngine也支持docker在其之上运行。
一款开源软件能否在商业上成功,很大程度上依赖三件事-成功的usercase(用例),活跃的社区和一个好故事。dotCloud自家的PaaS产品建立在docker之上,长期维护且有大量的用户,社区也十分活跃,接下来我们看看docker的故事。
环境管理复杂-从各种OS到各种中间件到各种app,一款产品能够成功作为开发者需要关心的东西太多,且难于管理,这个问题几乎在所有现代IT相关行业都需要面对。
云计算时代的到来-AWS的成功,引导开发者将应用转移到cloud上,解决了硬件管理的问题,然而中间件相关的问题依然存在(所以openstackHEAT和AWS都着力解决这个问题)。开发者思路变化提供了可能性。
虚拟化手段的变化-cloud时代采用标配硬件来降低成本,采用虚拟化手段来满足用户按需使用的需求以及保证可用性和隔离性。然而无论是KVM还是Xen在docker看来,都在浪费资源,因为用户需要的是高效运行环境而非OS,GuestOS既浪费资源又难于管理,更加轻量级的LXC更加灵活和快速
LXC的移动性-LXC在linux2.6的kernel里就已经存在了,但是其设计之初并非为云计算考虑的,缺少标准化的描述手段和容器的可迁移性,决定其构建出的环境难于迁移和标准化管理(相对于KVM之类image和snapshot的概念)。docker就在这个问题上做出实质性的革新。这是docker最独特的地方。
docker容器中能装哪些软件
1. 安装 Docker
在开始前,我们首先得确保在Linux主机中已经安装了Docker。这里,我运行的是CentOS 7 主机,我们将运行yum管理器和下面的命令来安装Docker。
# yum install docker
# systemctl restart docker.service
2. 创建 Dockerfile
现在,Docker守护进程已经在运行中了,我们现在准备创建自己的Firefox Docker容器。我们要创建一个Dockerfile,在其中我们要输入需要的配置来创建一个可以工作的Firefox容器。为了运行 Docker 镜像我们需要使用最新版本的CentOS。要创建 Docker 镜像,我们需要用文本器创建一个名为Dockerfile的文件。
# nano Dockerfile
docker使用教程
如果要设置docker开机启动,可以使用systemctlenabledocker命令,这里start的时候可能会报错在某些条件下,我们的机器可能不符合安装的条件,这个时候我们要检查一下我们的系统环境。 然后安装vim,方便后面查看等操作。sources.list文件,配置完整地址。同样安装lsb-core,安装完成后可以使用lsb_release-a查看系统版本。 检查Docker版本:配置Docker镜像:由于众所周知的原因,需要配置镜像加速器。 注意:Dockerfile的指令每执行一次都会在docker上新建一层。所以过多无意义的层,会造成镜像膨胀过大。所以可以以&&符号连接命令,这样执行后,只会创建1层镜像。 思源笔记是一款本地优先的个人知识管理系统,支持完全离线使用,支持Docker部署,通过Docker镜像将思源部署在服务器上来搭建自己的云端笔记,通过授权码控制访问权限,方便多人协作。 DockerCompose使用YAML文件来定义多服务的应用。YAML是JSON的一个子集,因此也可以使用JSON。DockerCompose默认使用文件名docker-compose.yml。当然,也可以使用-f参数指定具体文件。 内容分别如下:app.pyDockerfiledocker-compose.yml运行过程看一下刚刚启动的容器:上述命令会自动帮你构建镜像,并按照配置启动容器组。 按照菜鸟的步骤,使用yum安装即可。常用指令如下图,直白用法点我,官方介绍点击我备注:RUN命令在image文件的构建阶段执行,执行结果都会打包进入image文件;CMD命令则是在容器启动后执行。 登录「docker」命令:dockerlogin,显示LoginSucceeded说明成功,没登录的话,需要输入用户名username和密码password。 1、docker并不是LXC替代品,docker底层使用了LXC来实现,LXC将linux进程沙盒化,使得进程之间相互隔离,并且能够课哦内阁制各进程的资源分配。在LXC的基础之上,docker提供了一系列更强大的功能。 2、容器网络是Docker用来解决相互隔离的容器之间通信问题的技术。 3、用户定义的桥接网络是使用创建和配置的dockernetworkcreate。如果不同的应用程序组具有不同的网络要求,则可以在创建时分别配置每个用户定义的网桥。默认网桥网络上的链接容器共享环境变量。 4、docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。 5、要理解Docker,首先得体会百万程序员经常遇到的横跨开发、测试和运维的MatrixfromHell问题,即开发人员、测试人员和运维人员分别从零开始搭建应用程序开发环境和运行时环境的问题。 1、使用docker0网桥,docker0的默认网段是170,网关地址为171,通过bridge模式启动的容器,进入容器日内部并使用iprouteshow指令可以看到其使用的网关就是docker0的网关地址。 2、建议使用自定义网桥来控制容器之间的相互通讯,还可以自动DNS解析容器名称到ip地址。 3、在这种模式下,Docker为容器创建独立的网络栈,保证容器内的进程使用独立的网络环境,实现容器之间、容器与宿主机之间的网络栈隔离。同时,通过宿主机上的Docker0网桥,容器可以与宿主机乃至外界进行网络通信。 1、使用可以一起启动多个容器docker-compose,并且compose文件可以定义共享变量。您可以使用群体服务来代替独立容器,并利用共享机密和配置。连接到同一用户定义网桥网络的容器可以有效地将所有端口彼此公开。 2、Docker的运行原理如下:客户端可以将docker命令发送到服务器端的Dockerdaemon上,再由Dockerdamon根据指令创建、选择或者从Docker仓库中拉取(pull)镜像。接着客户端可以通过镜像创建容器。 3、首先在当前目录,即/home/hellodocker目录下,创建一个test.txt文件。 4、当需要修改一个文件时,AUFS创建该文件的一个副本。使用CoWCopy-on-Write将文件从只读层复制到可写层进行修改,结果也保留在可写层、在Docker中。底下的制度层就是image,可写层就是Container。 5、Docker存储引擎的核心思想是“层”的概念,理解了这个层,就基本可以理解它的设计思路。 6、要论云计算领域中,开发者需要具备哪些基本技能?那么Docker必是其一。
Docker-可视化管理工具总结-推荐使用Portainer
对于初学docker的小白,一款好的可视化工具有助于快速掌握docker基本形态和概念,下面针对docker可视化工具做些总结
UI For Docker是一个使用Docker Remote API 的web接口,目的是提供一个简洁纯净的客户端实现,为了连接和管理Docker; 该工具目前已经无人维护,建议使用下面介绍的portainer
docker run -it -d --name docker-web --restart always -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker
***隐藏网址***
是一款Docker可视化管理工具,可让您轻松构建和管理 Docker、Docker Swarm、Kubernetes 和 Azure ACI 中的容器。
Portainer 将管理容器的复杂性隐藏在易于使用的 UI 后面。通过消除使用 CLI、编写 YAML 或理解清单的需要,Portainer 使部署应用程序和解决问题变得如此简单,任何人都可以做到
Portainer 由两个元素组成:Portainer 服务器和 Portainer 代理。两者都在您现有的容器化基础设施上作为轻量级容器运行。Portainer 代理应该部署到集群中的每个节点,并配置为向 Portainer 服务器容器报告。
单个 Portainer 服务器将接受来自任意数量的 Portainer 代理的连接,从而提供从一个集中式界面管理多个集群的能力。为此,Portainer Server 容器需要数据持久性。Portainer 代理是无状态的,数据被传送回 Portainer 服务器容器。
运行下面两条命令即可。这些命令会创建一个Portainer专用的卷,然后在8000和9000端口创建容器并运行。
如果使用Portainer管理本地Docker主机的话,需要绑定/var/run/docker.sock (这里是个知识点,涉及docker 之间通信的问题,以及docker 里运行docker )
docker run --name portainer --restart always -d -p 8000:8000 -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
然后在浏览器打开对应地址,就会发现成功运行了。第一次运行的时候需要设置账号,然后选择要管理的Docker主机。
注意:portainer/portainer 是 Portainer v1.24.x 的镜像名,现在已弃用;从 2022 年 1 月开始,Portainer 2.0 的所有新版本都将在 portainer/portainer-ce 中发布
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.11.1
docker run -d -p 9000:9000 --name portainer --restart always -v portainer_data:/data portainer/portainer -H tcp://《REMOTE_HOST》:《REMOTE_PORT》
ps:-H 后面的remote是你想用portainert管理的docker
只能在创建 Portainer Server 容器时添加本地环境。部署 Portainer 后,您无法添加本地环境
第一次登陆会让选择管理的容器环境,这里可以选择本机 ,通过挂载/var/run/docker.sock 和docker 守护进程通信(如图所示), 关于这部分知识后面会总结分享出来。
之后就可以看到本机上运行的Docker容器了,点击它们还可以进行容器的管理。
左边的条目可以管理卷、创建容器、查看主机信息等等。基本上该有的功能都有了
通过该方式,可以将远程机器添加到Portainer服务端,统一管理远程机器上的容器环境
将 Docker Standalone 主机连接到 Portainer 时,可以使用两种方法。您可以通过 TCP 直接连接到 Docker API,也可以在 Docker Standalone 主机上安装 Portainer 代理并通过代理连接。
***隐藏网址***
1) 通过远程访问TCP:2375端口绑定环境
2) 通过Portainer Agent方式管理docker环境
***隐藏网址***
使用Agent需要在要监控的主机上创建一个portainer agent容器
docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent:2.11.1
在k8s集群上执行以下命令
***隐藏网址***
在远程k8s集群上部署agent后,在Portainer server 上通过nodeport 或者 targetport 进行服务配置,完成k8s集群的连接配置。
***隐藏网址***
LazyDocker是基于终端的一个可视化查询工具,支持键盘操作和鼠标点击。相比Portainer来说可能不那么专业,不过对于开发者来说可能反而更加好用了。因为一般开发者都是使用命令行来运行Docker,偶尔需要图形化查看的时候,就可以使用LazyDocker这个工具。
Lazydocker 的具体特性如下:
当然如果发现LazyDocker挺好用,准备经常使用的话,还可以把它做成缩写添加到shell配置文件中,这样就可以将它变成一个简单的命令。例如我用的是zsh,就将下面这样添加到.zshrc文件中。以后就可以直接用lzd来调用LazyDocker了。
echo "alias lzd=’docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v ~/.config/lazydocker:/.config/jesseduffield/lazydocker lazyteam/lazydocker’" 》》 ~/.zshrc
然后就可以在终端中查看Docker容器、镜像和卷的信息了。LazyDocker支持键盘操作和鼠标点击,直接用鼠标点击就可以查看对应信息了
***隐藏网址***
docker的应用场景
docker应用场景有哪些,让我们一起了解一下?
1、简化配置
这是Docker公司宣传的Docker的主要使用场景。虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平台(软件、系统),Docker在降低额外开销的情况下提供了同样的功能。
它能让你将运行环境和配置放在代码中然后部署,同一个Docker的配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度。
2、代码流水线管理
代码从开发者的机器到最终在生产环境上的部署,需要经过很多的中坚环境。而每一个中间环境都有自己微小的差别,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。
3、提升开发效率
不同环境中,开发者的共同目标:想让开发环境尽量贴近生产环境,想快速搭建开发环境,开发环境的机器通常内存比较小,之前使用虚拟的时候,我们经常需要为开发环境的机器加内存,而现在Docker可以轻易的让几十个服务在Docker中跑起来。
4、隔离应用
开发时会在一个台机器上运行不同的应用。
一,为了降低成本,进行服务器整合
二,将一个整体式的应用拆分成低耦合的单个服务(微服务架构)
5、整合服务器
正如通过虚拟机来整合多个应用,Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本。
由于没有多个操作系统的内存占用,以及能在多个实例之间共享没有使用的内存,Docker可以比虚拟机提供更好的服务器整合解决方案。
6、调试能力
Docker提供了很多的工具,这些工具不一定只是针对容器,但是却适用于容器。 他们提供了很多功能,包括可以为容器设置检查点,设置版本,查看两个容器之间的差别,这些特性可以帮助调试Bug。
7、多租户环境
多租户环境的应用中,它可以避免关键应用的重写。我们一个特别的关于这个场景的例子是为loT(物联网)的应用开发一个快速,易用的多租户环境。 这种多租户的基本代码非常复杂,很难处理,重新规划以应用不但消耗时间,也浪费金钱。
使用Docker,可以为每一个租户的应用层的多个实例创建隔离的环境,这不仅简单而且成本低廉,因为Docker环境启动的速度快,diff命令很高效。
8、快速开发
在虚拟机之前,引入新的硬件资源需要消耗几天的时间。Docker的虚拟化技术将这个时间降到了几分钟,Docker只是创建一个容器进程而无需启动操作系统,这个过程只需要秒级的时间。这正是Google和Facebook都看重的特性。
你可以在数据中心创建销毁资源而无需担心重新启动带来的开销。通常数据中心的资源利用率只有30%,通过使用Docker并进行有效的资源分配可以提高资源的利用率。

更多文章:
vbnet连接sql数据库实例(请各位大侠给出用VB.NET连接oracle数据库并执行sql查询语句的代码示例,谢谢!!)
2026年7月21日 09:15
python编程实例详解(python函数变量及代码利用是什么python函数变量及代码利用说明)
2025年8月3日 06:00
已知大写字母a的ascii码值十进制(已知大写字母a的ASCII码值十进制表示为65那么asii码值为十进制数68的字母是)
2026年8月11日 21:30
struts2拦截器和过滤器的区别(struts2拦截器的作用是什么(它拦截什么)过滤器的作用是什么呢(过滤什么))
2025年6月18日 21:15
sql语句优化面试(面试问到 数据库性能优化 怎么回答 我是Oracle数据库)
2025年7月30日 02:15
commerce和commercial的区别(commercial名词)
2026年7月6日 01:00
shell脚本写加减乘除运算(用shell做个加减乘除运算)
2025年6月20日 21:30
keystone蝶阀中国代理(美国泰科TYCO阀门授权代理商)
2025年9月8日 02:45
日期型的函数datediff(datediff函数怎么用啊)
2025年12月17日 06:15
加拿大study permit(加拿大的STUDY PERMIT 里,签证官指定学校这句话什么意思 )
2026年8月7日 06:45
小米13发布会为何延期(小米和华为的冬季新品发布会为什么延期)
2026年6月3日 04:30
rank函数如何自动填充(excel根据最终得分列数据公式填充排名列数据)
2026年3月12日 12:15
rsync协议(为什么rsync服务对应的端口显示所属进程是xinetd而非rsync)
2025年11月11日 08:30
reset current branch to here(resetcurrentbranchtohere会覆盖本地代)
2025年11月13日 21:30
c语言中printf与scanf的先后顺序(c语言中printf 跟scanf执行顺序颠倒)
2026年2月26日 06:00
ASP.NET MVC 4框架揭秘:Controller类型的缓存?RxCache缓存框架
2026年6月1日 06:00
![vb 全局数组 如何在子过程里定义全局性的数组,在主函数里可以使用?在java中定义了一个二维数组,int[][] a = null;a[1] = new int[]{1,2,3};这样定义对不对](/static/images/nopic/15.jpg)










