docker:利用内核虚拟化技术(namespaces及cgroups)来提供容器资源隔离与安全保障
组成:C/S
组件:镜像、容器、仓库
安装docker
centos6:yum install docker-io
centos7:yum install docker
docker save 镜像名 > /name.tar.gz:导出镜像
docker load < /name.tar.gz:导入镜像
docker tag 358bf47a7a64 centos:更改镜像名为centos
docker images:显示所有镜像
所属仓库 标签 唯一ID 创建时间 大小
docker rmi 唯一ID:删除未创建容器的镜像
docker run centos /bin/echo "hehe":运行镜像为centos的容器,并执行echo命令
docker ps -a:查看所有容器,不加-a只显示运行的容器,再加-p只显示ID
docker run --name NAME -t -i centos /bin/bash:
--name:指定容器名
-t:分配一个虚拟终端tty
-i:容器属于打开状态,和-t一起使用,执行后tty连接上容器
容器hostname为容器ID
运行docker run会先检查镜像是否存在,如不存在先下载
exit:退出容器时,容器自动终止
docker start 容器ID:启动容器
docker attach 容器ID:进入容器,共享tty桌面显示,exit后容器终止
容器里只有一个进程exit退出进程,容器就终止
以PID进入容器
docker inspect --format "{{.State.Pid}}" 57af2f9b65cd:获取指定容器ID的进程PID
nsenter -t PID -u -i -n -p:以PID进入容器
docker rm 容器ID:删除指定已停止的容器,-f为强制
docker kill `docker ps -a -q`:强制关闭所有容器
docker run -d -P nginx:创建nginx容器
-d:后台运行容器,并返回容器ID
-P:随机映射端口
-p 主机port:容器port:指定端口映射
docker logs ID:查看日志
docker run [OPTION] [COMMAND]
OPTION
-v /DIR:容器中挂载一个目录
docker inspect ID:查看容器所有信息,里面有Volumes信息
-v /主机DIR:/dockerDIR:ro|rw;主机目录挂载到docker里设置权限
--volumes-from ID:把指定ID已有的挂载,再挂载到新容器中,所有容器使用一个主机DIR
-m #:指定最大内存
-c #:指定CPU权重,不设置为随便用
COMMAND
不加命令,默认执行/bin/bash
docker里程序需要在前台运行
docker commit -m "mynginx" ID qhj/mynginx:v1:提交容器到本地仓库
-m "mynginx":提交说明
qhj/mynginx:v1:谁的名义提交/镜像名:版本
运行自建镜像
docker run -it qhj/mynginx:v1
不指定用户/和:版本会默认使用官方名library/mynginx:latest来查找
设置nginx前端启动
vi /etc/nginx/nginx.conf
daemon off;
Dockerfile创建镜像
vim filename #文件名好像不一定非要是Dockerfile
#开头为注释
FROM cetos #指定使用的镜像,必须第一条有效的
MAINTAINER name email #自定义创建者和邮箱
RUN COMMAND #容器中执行命令,可以多条RUN
例:RUN yum install -y nginx
ADD index.html /nginx/html/index.html
RUN echo "daemon off" >> /etc/nginx/nginx.conf
ADD index.html /nginx/html/index.html #添加文件到容器中,zip文件会自动解压缩,文件跟Dockerfile同目录
VOLUME ["/data1","/data2"] #挂载2个目录,但无法指定容器目录
EXPOSE 80 #对外端口为80
CMD ["nginx"] #容器中启动的命令
docker build -t 提交者/镜像名:版本 /dockerfile所在目录
从dockerfile创建镜像
docker run -d -p 83:80 qhj/nginx:v2:创建容器,默认执行镜像中命令
docker-Registry私有仓库
docker pull 镜像:下载镜像
docker pull registry:下载registry私有库镜像
docker run -d -p 5000:5000 registry:运行registry私有库镜像容器
docker tag 镜像 IP:5000/镜像名:添加一个ip:5000标签的镜像
vim /etc/sysconfig/docker:修改不使用https或自签发CA证书
OPTIONS='--insecure-registry ip:5000' #CentOS 7系统
other_args='--insecure-registry ip:5000' #CentOS 6系统
service docker restart&&docker start registry
docker push IP:5000/镜像名:添加到私有仓库
docker管理:shipyard(web监控)、swarm、fleet、mesos
开启一个监听端口
vim /etc/sysconfig/docker
OPTIONS='-H tcp://0.0.0.0:235' #CentOS 7系统,添加
other_args='-H tcp://0.0.0.0:235' #CentOS 6系统,添加
service docker restart
curl -s http://192.168.1.180:235/info | python -mjson.tool
查看监控
组成:C/S
组件:镜像、容器、仓库
安装docker
centos6:yum install docker-io
centos7:yum install docker
docker save 镜像名 > /name.tar.gz:导出镜像
docker load < /name.tar.gz:导入镜像
docker tag 358bf47a7a64 centos:更改镜像名为centos
docker images:显示所有镜像
所属仓库 标签 唯一ID 创建时间 大小
docker rmi 唯一ID:删除未创建容器的镜像
docker run centos /bin/echo "hehe":运行镜像为centos的容器,并执行echo命令
docker ps -a:查看所有容器,不加-a只显示运行的容器,再加-p只显示ID
docker run --name NAME -t -i centos /bin/bash:
--name:指定容器名
-t:分配一个虚拟终端tty
-i:容器属于打开状态,和-t一起使用,执行后tty连接上容器
容器hostname为容器ID
运行docker run会先检查镜像是否存在,如不存在先下载
exit:退出容器时,容器自动终止
docker start 容器ID:启动容器
docker attach 容器ID:进入容器,共享tty桌面显示,exit后容器终止
容器里只有一个进程exit退出进程,容器就终止
以PID进入容器
docker inspect --format "{{.State.Pid}}" 57af2f9b65cd:获取指定容器ID的进程PID
nsenter -t PID -u -i -n -p:以PID进入容器
docker rm 容器ID:删除指定已停止的容器,-f为强制
docker kill `docker ps -a -q`:强制关闭所有容器
docker run -d -P nginx:创建nginx容器
-d:后台运行容器,并返回容器ID
-P:随机映射端口
-p 主机port:容器port:指定端口映射
docker logs ID:查看日志
docker run [OPTION] [COMMAND]
OPTION
-v /DIR:容器中挂载一个目录
docker inspect ID:查看容器所有信息,里面有Volumes信息
-v /主机DIR:/dockerDIR:ro|rw;主机目录挂载到docker里设置权限
--volumes-from ID:把指定ID已有的挂载,再挂载到新容器中,所有容器使用一个主机DIR
-m #:指定最大内存
-c #:指定CPU权重,不设置为随便用
COMMAND
不加命令,默认执行/bin/bash
docker里程序需要在前台运行
docker commit -m "mynginx" ID qhj/mynginx:v1:提交容器到本地仓库
-m "mynginx":提交说明
qhj/mynginx:v1:谁的名义提交/镜像名:版本
运行自建镜像
docker run -it qhj/mynginx:v1
不指定用户/和:版本会默认使用官方名library/mynginx:latest来查找
设置nginx前端启动
vi /etc/nginx/nginx.conf
daemon off;
Dockerfile创建镜像
vim filename #文件名好像不一定非要是Dockerfile
#开头为注释
FROM cetos #指定使用的镜像,必须第一条有效的
MAINTAINER name email #自定义创建者和邮箱
RUN COMMAND #容器中执行命令,可以多条RUN
例:RUN yum install -y nginx
ADD index.html /nginx/html/index.html
RUN echo "daemon off" >> /etc/nginx/nginx.conf
ADD index.html /nginx/html/index.html #添加文件到容器中,zip文件会自动解压缩,文件跟Dockerfile同目录
VOLUME ["/data1","/data2"] #挂载2个目录,但无法指定容器目录
EXPOSE 80 #对外端口为80
CMD ["nginx"] #容器中启动的命令
docker build -t 提交者/镜像名:版本 /dockerfile所在目录
从dockerfile创建镜像
docker run -d -p 83:80 qhj/nginx:v2:创建容器,默认执行镜像中命令
docker-Registry私有仓库
docker pull 镜像:下载镜像
docker pull registry:下载registry私有库镜像
docker run -d -p 5000:5000 registry:运行registry私有库镜像容器
docker tag 镜像 IP:5000/镜像名:添加一个ip:5000标签的镜像
vim /etc/sysconfig/docker:修改不使用https或自签发CA证书
OPTIONS='--insecure-registry ip:5000' #CentOS 7系统
other_args='--insecure-registry ip:5000' #CentOS 6系统
service docker restart&&docker start registry
docker push IP:5000/镜像名:添加到私有仓库
docker管理:shipyard(web监控)、swarm、fleet、mesos
开启一个监听端口
vim /etc/sysconfig/docker
OPTIONS='-H tcp://0.0.0.0:235' #CentOS 7系统,添加
other_args='-H tcp://0.0.0.0:235' #CentOS 6系统,添加
service docker restart
curl -s http://192.168.1.180:235/info | python -mjson.tool
查看监控