Docker是一个开源的应用容器(Container)引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任意流行的linux机器上。
Docker是一个重新定义了程序开发测试、交付和部署过程的开放平台(Platform)。
小结:
Docker底层的核心技术包括Linux上的Namespace(命名空间),Cgroups(控制组,control groups),UFS(union file system)和Container format(容器格式)
大家虽然都共用一个内核和某些运行时环境(例如一些系统命令和系统库),但是彼此却看不见,都以为系统中只有自己的存在。这种机制就是容器(Container),利用Namespace(命名空间)来做权限的隔离控制,利用Cgroups(控制组,control groups)来做资源分配。
a. Image(镜像)
文件的层次结构,以及包含如何运行容器的元数据, Dockerfile中的每条命令都会在文件系统中创建一个新的层次结构,文件系统在这些层次上构建起来,镜像就构建于这些联合的文件系统之上。
Docker 镜像就是一个只读的模板,镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接实现。
b. Container(容器)
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境,Docker 利用容器来运行应用。
c. Repository(仓库)
仓库是集中存放镜像文件的场所,仓库注册服务器(Registry)上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为public registry和private registry
目前,最大的公开仓库是 Docker Hub(docker公司运营),存放了数量庞大的镜像供用户下载。
Docker仓库用来保存我们的images,当我们创建了自己的image之后我们就可以使用push命令将它上传到公有或者私有仓库,这样下次要在另外一台机器上使用这个image时候,只需要从仓库上pull下来即可。
多种安装方式
具体安装步骤参考官网https://docs.docker.com/get-started/。注:Linux安装最后需要无需使用sudo来运行docker。
注:docker 可允许通过外部访问容器端口方式来提供网络服务 -p 参数来指定端口映射
eg:$ docker run -d -p 80:8080 -p 50000:50000 jenkins/jenkins:lts
浏览器访问本地localhost:80或局域网内访问本机IP:80,可访问jenkins服务
docker volume是提供一个或多个容器使用的特殊目录。
参数 -v 或 --volume 挂载数据卷
eg:$ docker run -d -p 80:8080 -9 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
将容器中的/var/jenkins_home挂载到本地磁盘上
Docker workflow
print "Hello World!"
$ python test.py
FROM python:2.7-alpine
ADD . /dockertest
CMD ["python","/dockertest/test.py"]
$ ls ,可找到dockerfile test.py
$ docker build -t .myfirstapp:10
$ docker images 会产生image ID
$ docker run [image ID]
原文:https://www.cnblogs.com/lijuanhu321/p/9313159.html