
Docker容器实战
每天5分钟玩转docker容器技术
那记忆微凉
大数据+云计算+区块链+微服务+机器视觉
展开
-
docker小技巧
创建容器时传入环境变量在实际应用场景中,不论是从安全还是可配置方面去考虑,很多参数是比较适合用环境变量加载进去的,比如数据库的连接信息,时区,还有字体支持等等,在创建容器的时候其实都可以使用-e 指定key/value进行传递环境变量进去。sh-4.2# docker run -itd --name test-env -e TZ='Asia/Shanghai' 172.25.46.9:5001...原创 2019-12-16 13:22:30 · 334 阅读 · 0 评论 -
Docker中使用matplotlib显示图像
原理简介原理上可以把docker镜像看做一台没配显示器的电脑,程序可以运行,但是没地方显示。而linux目前的主流图像界面服务X11又支持 客户端/服务端(Client/Server)的工作模式只要在容器启动的时候,将 『unix:端口』或『主机名:端口』共享给docker,docker 就可以通过端口找到显示输出的地方,和linux系统共用显示具体操作(显示到本地显示器)1)首先,在主...原创 2019-12-16 11:48:52 · 2545 阅读 · 1 评论 -
玩坏docker笔记(二十三):容器监控常用指令
Docker 自带的几个监控子命令:ps 、top 、stats功能更强的开源监控工具:sysdig 、Weave Scope 、 cAdvisor 、PrometheusDocker 自带的监控子命令 —psdocker container ps 查看当前运行的容器新版的 Docker 提供了一个新命令 docker container ls,其作用和用法与 docker c...原创 2019-12-14 15:58:52 · 398 阅读 · 0 评论 -
玩坏docker笔记(二十二):容器网络calico
0、准备工作Calico 是一个纯三层的虚拟网络方案,Calico 为每个容器分配一个 IP,每个 host 都是 router,把不同 host 的容器连接起来。与 VxLAN 不同的是,Calico 不对数据包做额外封装,不需要 NAT 和端口映射,扩展性和性能都很好。Calico 优势:network policy用户可以动态定义 ACL 规则,控制进出容器的数据包,实现业务需求。...原创 2019-12-14 15:45:49 · 649 阅读 · 1 评论 -
玩坏docker笔记(二十一):多主机环境下管理Machine
Docker Machine 创建machine很简单,非常适合多主机环境。最长用的命令是无须登录到machine就能执行docker相关操作。执行远程docker命令需要通过-H指定目标主机的链接字符串,比如:docker -H tcp://192.168.56.105:2376 psdocker-machine env host1 显示访问 host1 需要的所有环境变量:根据提示...原创 2019-12-14 14:31:24 · 179 阅读 · 0 评论 -
玩坏docker笔记(二十):创建Machine
创建 MachineMachine 就是运行 docker daemon 的主机。“创建 Machine” 指的就是在 host 上安装和部署 docker。创建第一个 machine: host1创建 machine 要求能够无密码登录远程主机(1)配置无密码登录、确保端口2376是可以访问的、可以正常安装软件。ssh-copy-id 10.12.31.22 #将1号机的ssh k...原创 2019-12-14 13:47:43 · 168 阅读 · 0 评论 -
玩坏docker笔记(十九):安装 Docker Machine
先安装docker官方安装docker-machine的文档地址:https://docs.docker.com/machine/install-machine/安装方法很简单,执行如下命令:curl -L https://github.com/docker/machine/releases/download/v0.9.0/docker-machine-`uname -s`-`uname -...原创 2019-12-14 13:38:57 · 164 阅读 · 0 评论 -
玩坏docker笔记(十八):主机与容器、容器与容器之间数据共享
数据共享容器与host主机之间共享数据Bind mount:直接将共享目录mount到容器Docker managed volume:docker cp也可以通过linux下的cp将数据复制到/var/lib/docker/volumes/xxx容器之间共享数据第一种方式:将共享数据直接mount到多个容器。开启两个容器,只要host主机pv文件夹中有改动,则所有挂载的容器都会改动...原创 2019-12-14 13:16:52 · 446 阅读 · 0 评论 -
玩坏docker笔记(十七):数据挂载-Docker managed volume
Docker managed volume与bind mount在使用上的最大区别是不需要指定mount源,指明mount point就行。我们通过-v告诉docker需要一个data volume,并将其mount到/usr/local/apache2/htdocs。那么这个data volume在哪呢?这个答案可以从容器的配置信息中找到。Docker inspect c73897找到...原创 2019-12-14 13:13:06 · 304 阅读 · 0 评论 -
玩坏docker笔记(十六):有状态应用的存储
Data Volumedocker提供了两种类型的volume:bind mount和docker managed volumebind mountbind mount是将host上已经存在的目录或者文件mount到容器通过-t将主机上的文件mount到容器中:docker run -d -p 8080:80 -v ~/htdocs:/usr/local/apache2/htdocs h...原创 2019-12-13 16:54:09 · 412 阅读 · 0 评论 -
玩坏docker笔记(十五):Docker存储
分层结构使得镜像和容器的创建、共享以及分发变得高效,这些都归功于docker storage driver.正是storage driver实现了多层数据的堆叠并为用户提供一个单一的合并之后的统一视图。默认driver是overlay2,底层的文件系统是extfs。无状态应用:容器没有需要持久化的数据,随时可以从镜像中直接创建。不需要保存数据供以后使用,使用完直接退出,容器删除时存放在容器层中...原创 2019-12-13 16:22:03 · 179 阅读 · 0 评论 -
玩坏docker笔记(十四):将容器与外部世界连接
容器访问外部世界方法:NAT当前,docker host 是可以访问外网的容器呢?容器也可以访问外网。注意:这里的外网是指容器网络以外的网络环境,并非特指Internet。busybox位于docker0这个私有的bridge网络中(172.17.0.0/16),当busybox从容器向外ping时,数据包是怎么达到baidu.com的呢?这里关键就是NAT,我们查看一下docke...原创 2019-12-13 14:40:58 · 469 阅读 · 1 评论 -
玩坏docker笔记(十三):容器间通信
Docker DNS Server通过IP访问容器虽然满足了通信需求,但是不够灵活。因为在部署应用之前可能无法确定IP。部署之后在指定要访问的ip会比较麻烦。因此docker daemon实现了一个内嵌的DNS server,使得容器可以直接通过容器名通信。只需在启动时用–name为容器命名就可以了。docker run -it --network=my_net2 --name=bbox1 b...原创 2019-12-13 14:01:16 · 238 阅读 · 0 评论 -
玩坏docker笔记(十二):创建用户网络
用户自定义网络驱动有三个:bridge,overlay和macvlan。其中overlay和macvlan用于创建跨主机网络。指定bridge驱动来创建一个网络:可以看到新增加了一个网桥br-87200b9d7ff4。这里的87200b9d7ff4正好是新建bridge网络my_net的短id。执行docker network inspect 查看以下my_net配置信息:这里的subnet...原创 2019-12-13 11:58:19 · 212 阅读 · 0 评论 -
玩坏docker笔记(十一):docker网络
docker在安装时候会创建3个网络none网络none就是没有网络。挂载这个网络下的容器除了lo,没有其他任何网卡,容器创建时,可以通过–network=none指定使用none网络。创建这样一个封闭的网络作用:隔离。对于一些安全性要求高并且不需要联网的应用可以使用none网络。比如某个容器的用途只是生成随机密码,就可以使用none网络,防止密码被窃取。host网络连接到host网络...原创 2019-12-13 11:20:04 · 156 阅读 · 0 评论 -
玩坏docker笔记(十):容器底层技术cgroup+namespace
cgroup和namespace是最重要的两种技术。cgroup实现资源限额,namespace实现资源隔离。linux系统通过cgroup可以设置进程使用CPU、内存和IO资源限额。cgroup 全称 Control Group。Linux 操作系统通过 cgroup 可以设置进程使用 CPU、内存 和 IO 资源,网络的限额。相信你已经猜到了:前面我们看到的–cpu-shares、-m、–...原创 2019-12-13 10:57:13 · 451 阅读 · 0 评论 -
玩坏docker笔记(九):资源限制
Docker 提供了资源限制机制避免某个容器因占用太多资源而影响其他容器性能内存限额容器可以使用的内存包括两部分:物理内存和swap。Docker通过下面两组参数来控制容器内存的使用量1)-m或–memory:设置内存的使用限额,例如100MB,2GB2)–memory-swap:设置内存+swap的使用限额docker run -m 200M --memory-swap=300M ub...原创 2019-12-13 10:38:09 · 258 阅读 · 0 评论 -
玩坏docker笔记(八):Docker容器+常用指令
容器启动时执行命令的三种方式:1)CMD命令,2)ENTRYPOINT指令 ,3)在docker run命令中指定docker run ubuntu pwd //容器启动时,执行pwd命令执行docker ps或docker container ls 可以查看docker host中当前运行的容器;执行docker ps -a 或dokcer container ls -a可以查看所有状态...原创 2019-12-13 09:49:39 · 243 阅读 · 0 评论 -
玩坏docker(七):使用公共Registry
Docker Hub 是 Docker 公司维护的公共 Registry。用户可以将自己的镜像保存到 Docker Hub 免费的 repository 中。如果不希望别人访问自己的镜像,也可以购买私有 repository。除了 Docker Hub,quay.io 是另一个公共 Registry,提供与 Docker Hub 类似的服务。首先得在 Docker Hub 上注册一个账号,ht...原创 2019-12-13 09:01:29 · 175 阅读 · 0 评论 -
玩坏docker(七):修改镜像名称
如何在多个 Docker Host 上使用镜像。这里有几种可用的方法:用相同的 Dockerfile 在其他 host 构建镜像。将镜像上传到公共 Registry(比如 Docker Hub),Host 直接下载使用。搭建私有的 Registry 供本地 Host 使用。为镜像命名实际上一个特定镜像的名字由两部分组成:repository 和 tag。[image name]...原创 2019-12-13 08:58:07 · 745 阅读 · 0 评论 -
玩坏Docker(六)笔记:RUN vs CMD vs ENTRYPOINT
RUN、CMD 和 ENTRYPOINT 这三个 Dockerfile 指令看上去很类似,很容易混淆。本节将通过实践详细讨论它们的区别。简单的说:RUN 执行命令并创建新的镜像层,RUN 经常用于安装软件包。CMD 设置容器启动后默认执行的命令及其参数,但 CMD 能够被 docker run 后面跟的命令行参数替换。ENTRYPOINT 配置容器启动时运行的命令。下面我们详细分析...原创 2019-12-12 16:52:26 · 189 阅读 · 0 评论 -
玩坏Docker(五)笔记:Dockerfile常用指令
下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档。FROM指定 base 镜像。MAINTAINER设置镜像的作者,可以是任意字符串。COPY将文件从 build context 复制到镜像。COPY 支持两种形式:COPY src destCOPY ["src", "dest"]注意:src 只能指定 build context 中的文件或目...原创 2019-12-12 16:34:18 · 180 阅读 · 0 评论 -
玩坏Docker(四)笔记:创建镜像之Dockerfile+镜像缓存+调试Dockerfile
Dockerfile用 Dockerfile 创建上节的 ubuntu-with-vi,其内容则为:FROM ubuntuRUN apt-get update && apt-get install vim -y下面我们运行 docker build 命令构建镜像并详细分析每个细节。root@ubuntu:~# pwd ① /root root@u...原创 2019-12-12 16:30:51 · 428 阅读 · 0 评论 -
玩坏Docker(三):构建镜像之docker commit
Docker 提供了两种构建镜像的方法:docker commit 命令 (不推荐)Dockerfile 构建文件 (推荐)docker commitdocker commit 命令是创建新镜像最直观的方法,其过程包含三个步骤:运行容器修改容器将容器保存为新的镜像举个例子:在 ubuntu base 镜像中安装 vi 并保存为新镜像。第一步, 运行容器...原创 2019-12-12 15:56:15 · 252 阅读 · 0 评论 -
玩坏Docker(二):base镜像+分层结构
base镜像FROM scratch:镜像是从白手起家,从0开始构建COPY hello/:将文件的“hello"复制到镜像的根目录ADD centos-7-docker.tar.gz/ :添加到镜像的tar包就是centosde rootfs。在制作镜像的时候,这个tar包会自动解压到/目录下,生成/dev,/proc/,/bin等目录CMD ["/hello"]:容器启动时,执行/he...原创 2019-12-12 15:48:10 · 577 阅读 · 0 评论 -
玩坏Docker(一):如何设置多个客户端连服务端
如果要允许远程客户端请求,需要在配置文件中打开TCP监听,步骤如下:1)服务器端编辑配置文件 /etc/systemd/system/multi-user.target.wants/docker.service,在环境变量ExecStart后面添加-H tcp://0.0.0.0,允许来自任意的IP客户端链接。2)重启docker(服务器端)systemctl daemon-reload...原创 2019-12-12 14:48:34 · 511 阅读 · 0 评论