docker
文章
1 简介安装
[shouce]http://shouce.jb51.net/docker_practice/ 栾一峰 菜鸟教程 参考文献 1 环境配置的难题软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来? 用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。举例来说,安装一个 Python 应用,计算机必须有 Python 引擎,还必须有各种依赖,可能还要配置环境变量。 如果某些老旧的模块与当前环境不兼容,那就麻烦了。开发者常常会说:”它在我的机器可以跑了”(It works on my machine),言下之意就是,其他机器很可能跑不了。 环境配置如此麻烦,换一台机器,就要重来一次,旷日费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。 虚拟化技术,虚拟机和docker两种虚拟化技术。 虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在系统上安装运行软件 容器,直接运行在宿主机的内核中,容器没有自己的内核,也没有虚拟硬件。轻...
2 概念构成
0 概述构成原理 Docker 客户端(Client)Docker 客户端通过命令行或者其他工具使用 Docker SDK与 Docker 的守护进程通信。 Docker 主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 Docker Hub 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。 Docker Machine。Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 基本组成 镜像(Image):Docker 镜像(Image),就...
3 常用命令
0 基本命令概述 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889[root@192 home]# docker --helpUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersOptions: --config string Location of client config files (default "/root/.docker") -c, --context string Name of the context to use to connect...
4 分层文件
1 分层文件系统UnionFS 联合文件系统 bootfs:boot file system rootfs:root file system 分层文件系统 Docker镜像都是只读的,当容器启动时,一个新的可写层被加到镜像的顶部,这一层就是我们通常说的容器层,容器层之下的都叫镜像层 2 commit提交镜像12docker commit # 提交容器成为一个新的副本docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG] 创建新镜像 12345➜ ~ docker commit -a="zhangxiaoyude" -m="add webapps app" 7b8096067457 tomcat02:1.0sha256:6e0e1ad86723c435bdf26d368472195b7050de1d6b920252d9c93eac26132336➜ ~ docker images ...
5 容器数据卷
1 概述原理 Docker:将应用和环境打包成一个镜像 数据?如果数据在容器中,那么我们容器删除,数据就会丢失。需求:数据持久化。 所以:Mysql的数据可以存储在本地。 所以:容器间可以有一个数据共享的技术。 Docker容器中产生的数据,同步到本地。这就是卷技术。 本质上是一种目录挂载,将容器内的目录,挂载到宿主机上。 总结:容器的持久化和同步操作,容器间可以数据共享 使用 -v 实现文件映射 12345docker run -it -v 目录映射 -p 端口映射# -it 交互式# -v volume卷技术# -p 主机端口➜ ~ docker run -it -v /Users/yinkanglong/ceshi:/home centos /bin/bash 使用docker inspect 查看挂载情况mount 同步的过程,是一种双向绑定的过程。容器停止后,修改主机文件,再启动容器的时候,数据同样改变 是同步的过程,还是目录挂载到磁盘的同一个位置了? 实战:安装Mysql123456789101112131415# 获取镜像docker pu...
6 DockerFile
Dockerfile1 DockerFile构建过程dockerfile是用来构建docker镜像文件!命令参数脚本 构建步骤 dockerfile docker build 构建一个镜像 docker run 运行镜像 docker push 发布一个镜像 dockerhub官方的镜像,会对应到github上一个仓库中的Dockerfile 指令1234567891011121314FROM 基础镜像MAINTAINER 镜像的维护者信息RUN Docker镜像构建的时候需要的命令ADD 步骤:tomcat的镜像中,tomcat的压缩包WORKDIR 镜像的工作目录VOLUME -v挂载的目录位置EXPOSE -p暴露端口CMD 指定这个容器启动的时候运行的命令,只有最后一个会生效,而且可悲替代ENTRYPOINT 指定这个容器启动的时候运行的命令,可以追加命令ONBUILD 当构建一个被继承的DockerfileFile,就会影响ONBUILD指令。触发指令COPY 类似ADD命令,将文件COPY到镜像中。ENV 构建的时候设置环境变量 每个保留关键字指令都是大写字母...
7 Docker网络
1 简介网络原理 下载iproute工具(linux)ip addr查看地址映射 容器内ip地址会进行映射@符号。docker分配的地址。 123477: eth0@if78: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever 容器、宿主机之间可以通过docker构建的docker虚拟网络进行通信,相互ping通 docker桥接原理vethc-pair技术,充当桥梁。 宿主机能够生成成对的地址,一端连接容器的虚拟网卡,另一端连接宿主机的虚拟网卡。 宿主机端的虚拟网卡们,能够构成一个局域网络。 宿主机...














