-
Docker使用了Linux的namespace技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Docker容器一般会分配一个独立的Network Namespace。
1、docker网络类型:
1.1、bridge模式(桥接):docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。
1.2、host模式:容器不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
1.3、none模式:Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。docker将不会和外界的任何网络进行通讯。
1.4、container模式:新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。
2、Docker端口映射
在使用Bridge模式的时候,会涉及到一个问题,Bridge所使用的网路需要一个独立的Namespace,这就需要一种技术使容器内的端口可以在主机上访问,这种技术就是端口映射。Docker可以指定你想把容器内的某个端口可以在容器所在主机上的某一个端口之间进行映射,当你在访问主机上的端口的时候其实就是访问容器内的端口
3、进行访问
3.1、docker启动 -p 的使用: docker run -d -p 主机端口:容器端口 容器的名称
比如:docker run -d -p 8080:80 hub.c.163.com/library/nginx
3.2、停止docker:docker stop 容器Id
3.3、docker启动 -P 的使用(所有的监听端口都会和主机建立一个映射): docker run -d -P 容器名称
Docker run -d -p 8080:80 IMAGE,默认桥接模式小p端口映射
Docker run -d -P(注意这里是大写) IMAGE(容器名称) docker开放所有随机端口映射到容器上
查看全部 -
Docker解决的问题:
1. 运行环境统一(集装箱思想)
将各个运行环境,例如:Tomcat,JDK,操作系统等分别装入集装箱运送到码头,再由别的机器下载即可。
2. 共用服务器时互不影响(隔离性思想)
开发共用服务器时,Docker为每个人分配了固定的CPU,内存,磁盘,不会因为某个人的程序问题影响到别人导致全部资源被用光。
3. 快速扩展,弹性伸缩(标准性思想)
双十一等场合下,需要扩展服务器,采用Docker的标准化API,可以用几个命令来实现快速部署,启动。
查看全部 -
1、docker镜像就是image。从本质上来说镜像就是一系列的文件(包括应用程序的文件,也包括应用环境的文件),以联合文件系统分层的形式保存到本地;
2、docker镜像:(docker中的文件系统都是只读的)
从本质上面来说,Docker就是一系列的文件,可以包括我们的应用的程序的文件,我们应用的环境的文件,Docker把这些文件保存在了本地,既然保存了,那么是以什么样的格式进行保存的呢?说到镜像的存储格式,就要说到linux的一个存储技术,叫做联合文件系统,Union FS,它是一种分层的文件系统,它可以将不同的目录挂到同一个虚拟的文件系统下面,通过这样一种方式,联合文件系统就可以实现文件的分成,比如test1可以看做是第一层,test2可以看做是第二层,每一层有每一层自己的文件,Docker镜像就是利用了这种分层的概念来实现了镜像存储,
查看全部 -
你不是破嗓子,良师益友查看全部
-
通过联合文件系统达到文件分层的效果,镜像就是一系列分层文件的组合,这些文件是只读的。查看全部
-
1、docker解决了运行环境不一致带来的问题
2、隔离性,每台服务器相互隔离,互不影响,使自己运行的程序不受其他程序的影响。
3、一键化部署服务器(例如双11,服务器数量。。。)
4、docker的标准化让快速扩展,弹性伸缩变得简单。
查看全部 -
名词解释: REPOSTTORY : 镜像名字 TAG : 版本(lastest 最新版) IMAGE ID : 64 位的字符串,可以唯一标识镜像,这里只显示16位,后面的被截掉了。 CREATED : 创建时间 (最后修改时间) SIZE : 大小 解决疑问: 1、HelloWorld 为什么写成 hello-world 镜像的名字在docker IO的官网上可以查到的,只有有才能下 2、docker pull 就给了一个名字,每个地址怎么下载的呢? 如果没有指定的话,他就去docker的仓库 hub.docker.com 下载查看全部
-
/usr/local/tomcat/webapps 后面要加/查看全部
-
docker run -d -p 8888:8080 jpress // 使用Docker Mysql镜像 创建Mysql数据库(注意:不能用localhost) docker run -d -p 3307:3307 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=jpress hub.c.163.com/library/mysql docker restart "id"查看全部
-
第一个docker镜像 拉取镜像:docker pull [OPTION] NAME[:TAG] 查看镜像:docker images[OPTION] [REPOSITORY[:TAG]]查看全部
-
Docker解决了运行环境不一致的问题
查看全部 -
集装箱思想:把程序运行环境和部署细节进行整体封装,封装后密封,不容易丢失或损坏。
标准化思想:
1-运输方式:超级中转站,例如把台式机上的应用部署到笔记本上,PC上运行docker命令,应用被送到了超级中转站,然后在笔记本上运行docker命令,就可以实现应用的整体迁移。
2-存储方式:程序员不需要关心应用存储在什么地方,docker会自动进行标准化处理,程序员只需要运行docker命令调用即可。
3-API接口:能够实现执行同样的Docker命令,就可以控制不用的Web应用服务器,例如Tomcat和Nginx等
隔离思想
例如使用虚拟机,有独立的内存、CPU、硬盘,使得使用者完全感觉不到主机的存在。再例如云服务器。
虚拟机的创建需要几分钟,但Docker只需要1秒,就可以创建轻量级的虚拟机,底层技术可以理解为进程资源的隔离。
Docker也是随着云计算、敏捷开发,弹性服务等大环境的变迁而变火的,时势造英雄。
查看全部 -
1、docker镜像就是image。从本质上来说镜像就是一系列的文件(包括应用程序的文件,也包括应用环境的文件),以联合文件系统分层的形式保存到本地;
2、docker镜像:(docker中的文件系统都是只读的)
从本质上面来说,Docker就是一系列的文件,可以包括我们的应用的程序的文件,我们应用的环境的文件,Docker把这些文件保存在了本地,既然保存了,那么是以什么样的格式进行保存的呢?说到镜像的存储格式,就要说到linux的一个存储技术,叫做联合文件系统,Union FS,它是一种分层的文件系统,它可以将不同的目录挂到同一个虚拟的文件系统下面,通过这样一种方式,联合文件系统就可以实现文件的分成,比如test1可以看做是第一层,test2可以看做是第二层,每一层有每一层自己的文件,Docker镜像就是利用了这种分层的概念来实现了镜像存储,
查看全部 -
Docker 核心
1、镜像(集装箱)(Build -> 构建镜像)
2、仓库(超级码头)(Ship -> (从仓库和我们的主机上)运输镜像)
3、容器(运行程序的地方)(Run -> 运行的 Build(镜像) 就是一个容器)
顺序:
1、去 Ship(仓库) 把 Build(镜像) 拉到本地
2、用一条命令 把 Build(镜像) 运行起来
3、变成 Run(容器)
查看全部 -
docker pull nginx:latest 从 hub.docker.com 仓库拉取 latest 版本的 nginx 镜像 docker run nginx:latest 在前台运行 latest 版本的 nginx 镜像,若想退出使用 Ctrl + C 快捷键即可 docker run -d nginx:latest 在后台运行一个新的 latest 版本的 nginx 镜像 docker stop nginx:latest 停止后台 latest 版本的所有镜像, command 可以是启动后的镜像 id,也可以是镜像名称 docker ps 列出所有正在运行的所有镜像的基本信息 --进入 docker 启动的镜像中 docker exec -it [nginx-command-id] bash 命令解析 nginx-command-id 自动模糊匹配 -i 在没有 attach 的时候保证用户的 input 有效 -t 分配一个伪终端 bash 使用 shell -- 遇到的问题 在使用 ps 指令查询进程时发现 ps command not fonud(指令找不到)该问题时候 解决方法:使用 apt-get install procps 安装 ps 指令 注意:若安装 ps 指令时出现 E: Unable to locate package procps 则需要运行 apt-get update 指令更新 apt-get 之后 apt-get 指令才能知道每个软件包(例如 procps 之类的包)的最新信息了查看全部
举报