预备:
1.shipyard : docker管理web页面
2.简单操作
docker run --name xx -h xx
docker stop container id
docker ps
docker ps -l
docker exec
docker rm dockerid
docker run -P 端口映射:随机映射
docker run -p hostport:containerport
数据映射
-v src:dst
--volumes-from
============
docker基础篇:
1.docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,方便快捷。
2.docker和虚拟机的比较
特性 容器 虚拟机
启动 秒级 分钟
硬盘 MB GB
性能 接近原生 弱
系统支持量 数千 几十个
3.docker应用场景
1.面向开发
2.面向测试
3.面向运维
4.面向自动化
5.面向微服务
6.大规模分布式架构[微信红包
4.环境准备
1、yum安装 yum install docker-io
2、curl脚本安装
5.docker数据管理
1.数据卷
[root@steve ~]# docker run -it --name volume-test1 -h mycentos -v /opt centos
[root@steve ~]# docker run -it --name volume-test2 -h centos -v /opt:/opt centos
:前面为物理机,后面为docker容器
[root@steve ~]# docker run -it --name volume-test2 -h centos -v /opt:/opt:ro centos==>只读
2.数据卷容器
[root@steve ~]# docker run -it --name volume-test3 --volumes-from volume-test2 centos
volume-test2为之前存在的容器,不用启动,用他来做其他容器的存储
6.docker镜像构建-手动构建
[root@steve ~]# docker run --name nginx-man -it centos
[root@166dbd417f69 /]# yum -y install wget gcc gcc-c++ make openssl-devel
[root@166dbd417f69 /]# wget https://nginx.org/download/nginx-1.9.3.tar.gz
[root@166dbd417f69 /]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
[root@166dbd417f69 /]# useradd -s /sbin/nologin -M www
[root@166dbd417f69 /]# tar -xf nginx-1.9.3.tar.gz
[root@166dbd417f69 /]# cd nginx-1.9.3
[root@166dbd417f69 /]# mkdir /usr/local/pcre
[root@166dbd417f69 /]# tar -xf pcre-8.38.tar.gz -C /usr/local/pcre
[root@166dbd417f69 /]# ls /usr/local/pcre
[root@166dbd417f69 nginx-1.9.3]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/pcre/pcre-8.38
[root@166dbd417f69 nginx-1.9.3]# make &&make install
x//[root@166dbd417f69 nginx-1.9.3]# vi /etc/rc.local
/usr/local/nginx/sbin/nginx
x//[root@166dbd417f69 nginx-1.9.3]# chmod +x /etc/rc.local
[root@166dbd417f69 nginx-1.9.3]# vi /usr/local/nginx/conf/nginx.conf
daemon off;
[root@166dbd417f69 nginx-1.9.3]# exit
[root@steve ~]# docker commit -m "my nginx" nginx-man steve/my-nginx #==>制作nginx镜像
[root@steve ~]# docker images ==>可以看到刚刚手动构建的镜像
[root@steve ~]# docker run -d -p 90:80 steve/my-nginx
#以刚创建的镜像为基础,启动容器
[root@steve ~]# docker run -d -p 90:80 steve/my-nginx /usr/local/nginx/sbin/nginx
[root@steve ~]# curl 127.0.0.1:90 ==>可以看到网页即可
7.docker镜像购将-Dockerfile
mkdir docker-file
cd docker-file
mkdir nginx
cd nginx
wget http://nginx.org/download/nginx-1.9.3.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
vim Dockerfile
# Version 1.0
# Author: Steve
# base images
FROM centos
# MAINTAINER
MAINTAINER Steve
# ADD
ADD pcre-8.38.tar.gz /usr/local/src
ADD nginx-1.9.3.tar.gz /usr/local/src
# RUN
RUN yum -y install wget gcc gcc-c++ make openssl-devel
RUN useradd -s /sbin/nologin -M www
# WORKDIR
WORKDIR /usr/local/src/nginx-1.9.3
RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.38 &&make && make install
RUN echo "daemon off;" >>/usr/local/nginx/conf/nginx.conf
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
CMD ["nginx"]
docker build -t nginx-file:v1 .
docer images ==>Dockerfile制作的镜像存在
8.docker实现资源隔离
LXC(linux内核):使用Kernel namespace功能
pid
net
ipc:进程交换方法
mnt:类似chroot
uts:docker容器拥有自己的namespace
user
9.docker资源限制:cgroup
control group 控制
CPU 内存
1.如何限制CPU?
stress压力测试工具
yum -y install stress
docker run -it --rm -c 512 press
-c 开启多少个cpu进程
-m 分配内存
cd /opt/docker-file
mkdir stress
cd stress
wget http://mirrors.aliyun.com/repo/epel-6.repo
vim Dockerfile
FROM centos
ADD epel-6.repo /etc/yum.repos.d/
RUN yum -y install stress&& yum clean all
ENTRYPOINT ["stress"]
docker build -t stress .
每个docker有1024个cpu份额
docker run -it --rm stress --cpu 1
新开终端 top即可看到cpu跑到几乎100%
docker run -it --rm stress --cpu 1
两个容器都几乎100%
docker run -it -c 512 --rm stress --cpu 1 #==>--rm:用于测试,关闭即删除
docker run -it --cpuset-cpus 0,1 --cpu 1 --rm stress
docker run -it --rm -m 128m stress --vm 1 --vm-bytes 120m --vm-hang 0
10.docker核心原理-网络和registry
Docker(eth0) Docker(eth0)
| |
docker0(bridge)
|ipv4 ip_forward
eth0
brctl show
Docker-compose Fig
11.私有仓库registry
docker run -d -p 5001:5000 registry
1.打包镜像并上传到私有仓库