Linux虚拟化容器技术,有效的由单个操作系统管理资源细化为独立的组中,更高效的平衡有冲突的资源间使用需求,docker2013年基于go实现的开源项目,进一步优化了容器使用的体验。每个容器内运行应用,不同容器间相互隔离,容器间可以建立通信机制。通过管理应用组件的封装、分发、部署、运行达到组件“一次封装,到处运行”的目的。这里的应用组件可以是一个web应用、mysql服务等,最常见的LAMP(linux+apache+mysql+php)一次部署,其他n台新的服务器上启动需要的容器即可。
Docker核心*镜像容器仓库
跟maven一样,通过镜像映射到(公有或私有)仓库,找到对应的容器(包含各应用运行实例)。
每个仓库寂静中存放某一类镜像(n各镜像文件,通过不同tag区分版本),最大的公开仓库:docker hub
用户创建了自己的镜像之后,就可以使用push命令将它上传至仓库,下次在另一台机器使用该镜像时,从仓库pull下来就可以了。(管理同git)
Docker的安装
mac直接通过brew cask install docker命令即可下载安装完毕
镜像
获取镜像
docker pull name[:tag] //不写tag默认选择latest标签最新版本下载
docker pull ubuntu :15.10 下载15.10版本的ubuntu操作系统
docker pull registry.hub.docker.com/ubuntu:15.10 即从默认的注册服务器registry.hub.docker.com中的ubuntu仓库下载指定版本的ubuntu系统
也可以指定其他的注册服务器
下载镜像到本地后,可随时使用,例如使用该镜像创建一个容器,运行bash脚本
使用镜像
docker run ubuntu:15.10 /bin/echo "Hello world"
查看镜像信息
docker images
搜索镜像
docker search mysql 搜索远端仓库中的共享mysql及镜像
删除镜像
docker rmi imageId 通过id执行rmi时直接删除相关tag及对应镜像文件
docker rmi tagName 通过标签名删除时,只删除指定tag标签而不删除镜像文件,当只剩下镜像时就是彻底删除镜像。
一般删除镜像前,要先删除景象中存在的所有容器,通过docker ps -a 查看本基金上所有存在的容器;docker rm 容器ID 进行删除
创建镜像 三种方式:
基于已有镜像:docker commit -a "author name" -m "comment" 容器id -p 提交时暂停容器运行
eg 启动一个镜像,并在其中创建一个test文件,然后提交该镜像;创建成功后返回镜像id
基于本地存在的模板
eg本地已存在ubuntu模板压缩包,直接执行 cat ubuntu....tar.gz|docker import -ubuntu:15.10
基于Dockerfile创建
1.编写Dockerfile文件
dockerfile由一行命令组成,一般涵盖4部分信息:基础镜像信息、维护者信息、镜像操作指令、容器启动时指令
# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: docker_user
# Command format: Instruction [arguments / command] ..
@@@
# 第一行必须指定基于的基础镜像
FROM ubuntu
@@@
# 维护者信息
MAINTAINER docker_user docker_user@email.com
@@@
# 镜像的操作指令
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/
apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
@@@
# 容器启动时执行指令
CMD /usr/sbin/nginx
2.docker build [option] 路径 来创建镜像
docker build -t max_repo/ max_image /tmp/docker_builder -t指定镜像标签信息为max_repo;指定dockerfile所在路径为/tmp/docker_builder
读取指定目录下的dockerfile文件,并将文件内容发送给docker服务端,由服务端来创建镜像。
导出镜像到本地
docker save -o ubuntu_15.10.tar ubuntu:15.10
上传镜像
docker push name[:tag]
用户在dockerhub逛网注册后,即可上传自制的镜像。可以先添加新标签,然后push上传镜像
为本地及镜像添加新标签 docker tag tagname
容器
容器是镜像的一个运行实例,不同的是容器带有额外的一个或一组应用运行其中。
创建容器
docker create -it ubuntu:latest
docker start
另外可直接执行docker run ubuntu 可直接创建并启动容器 eg docker run ubuntu:15.10 /bin/echo "Hello world"
交互式终端
docker run -t -i ubuntu:15.10 -t分配一个伪终端,-i容器输入保持打开;可直接运行命令;ctrl+d或键入exit退出容器(退出则意味容器终止运行)
docker start/restart/stop containerName
删除容器
docker rm -f -l -v 容器id(前3位即可) -f 强制删除,运行中也删除;-link 删除容器连接,但保留容器;-v删除容器挂在的数据卷
导入导出容器
docker export 即将已经创建的容器导出到一个文件
docker export containerID>test_run.tar
cat test2.tar |docker import - test/test:v1.0
仓库
搭建私有仓库
docker run -d -p 5000:5000 registry 自动下载并启动一个registry容器,监听端口5000,创建本地私有仓库服务,默认在/tmp/registry下
push镜像到指定仓库
docker push ip:端口/imageName
除上三块操作,还有对docker容器进行数据管理、网络配置、容器间通信配置等相关操作。