本文共 4291 字,大约阅读时间需要 14 分钟。
预备:
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.confENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80CMD ["nginx"]
docker build -t nginx-file:v1 . docer images ==>Dockerfile制作的镜像存在8.docker实现资源隔离
LXC(linux内核):使用Kernel namespace功能 pid net ipc:进程交换方法 mnt:类似chroot uts:docker容器拥有自己的namespace user9.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 010.docker核心原理-网络和registry
Docker(eth0) Docker(eth0) | | docker0(bridge) |ipv4 ip_forward eth0 brctl show Docker-compose Fig11.私有仓库registry
docker run -d -p 5001:5000 registry 1.打包镜像并上传到私有仓库转载地址:http://tpcqj.baihongyu.com/