1、docker1、为什么要docker?2、repository、image、container、tag3、如何使用?1)command#以daemon模式启动Dockersudoservicedockerstart#设置自动启动Dockersystemctlstartdocker#查看版本dockerversion#拉取镜像dockerpullname:tagdockerpullnginxdockerpullbusyboxdockerpullpython:2.7#查看镜像dockerimages#删除镜像dockerrmiid#查看容器运行dockerpsdockerps-a#查看网络(namespace,vethpair)dockernetworkls{bridge,host,none,overlay}#dockerrun启动容器-d后台运行--name指定容器名称-p80:80端口映射-v/root:/根目录映射--link链接容器--nwtwork指定网络-cadd运行cmd命令-e添加环境变量#dockerexecname-it-it以交互方式进入容器-i--interactive-t--tty2)示例--启动nginx容器dockerrun-it--nameweb-n1-p80:80-v/var/www/html:/usr/share/nginx/html-dnginx:alpine——启动redisdockerrun-d--namerds-p6379:6379redis--linkcontainerdockerrun-d--linkrds--nameapp-1-eREDIS_HOST=rdsapp:1.03)dockerfiledokcerfile构建:?FROM:sourcebaseimage(scratch->所有镜像的原始镜像)?MAINTAINER:author?RUN:containerbuild需要执行的命令(创建用户组,创建文件夹,安装包等)RUNyum-yinstallvimRUNyum-yinstallnet-toolsRUNmkdir/var/wwwroot建议使用如下,使用&连接:RUNyum-yinstallvim\&&yum-yinstallnet-tools\&&mkdir/var/wwwroot?EXPOSE:暴露的端口号?WORKDIR:指定创建并进入容器终端后的工作目录(不指定到/root目录)?ENV:环境变量ENVMY_PATH/var/wwwrootWORKDIR$set镜像时MY_PATH_ADD:将host目录下的文件复制到镜像中,自动处理url并解压tar包。COPY:类似add,复制到镜像,无处理功能?VALUME:容器数据量,用于数据持久化,在容器中创建指定目录?CMD:指定容器启动时运行的命令(只有最后一个)multiplecommands生效,dockerrun后会被参数覆盖)?ENTRYPOINT:和cmd功能一样,dockerrun后会是参数Additionalcommand?ONBUILD:构建继承的dockerfile时运行命令,parent的onbuildimage在父图像被子图像FROMpython:3.7COPY继承后触发。/var/www/appWORKDIR/var/www/appRUNpipinstallflaskredisEXPOSE80CMD["python","app.py"]fromflaskimportFlaskfromredisimportRedisimportosimportsocketapp=Flask(__name__)redis=Redis(host=os.environ.get('REDIS_HOST','127.0.0.1'),prot=6379)@app.route("/")defincr():redis.incr('like')返回'currentlike=%s,current主机=%s\n'%(redis.get('like'),socket.gethostname())if__name__=="__main__":app.run(host="0.0.0.0",port=80,debug=True)#使用dockerfile构建镜像dockerbuild-tname:tag-ftemplate.dockerbuild-tapp-1:1.0.#运行结构镜像dockerrun-d--linkrds-1--nameapp-5-p80:80-eREDIS_HOST=rds-1app-1:3.0#进入容器dockerexec-itapp-5bashcurl0.0.0.0:80-->currentlike=b'1',currenthost=bc33562a73ea-->currentlike=b'2',currenthost=bc33562a73ea-->currentlike=b'3',currenthost=bc33562a73ea4)clusterexampleetcd+dockeroverlaynetwork/usr/bin/dockerd-Htcp://0.0.0.02375-Hunix:///var/run/docker.sock--cluster-store=etcd://192.168.xxx.xx:2379--cluster-advertise=192.168.xxx.xx1:2375&/usr/bin/dockerd-Htcp://0.0.0.02375-Hunix:///var/run/docker.sock--cluster-store=etcd://192.168.xxx.xx:2379--cluster-advertise=192.168.xxx.xx2:2375&4、docker-compose1)docker-compose.ymlversion:"3"services:rds:image:redisapp:build:context:。dockerfile:Dockerfileports:-80:80environment:REDIS_HOST:rds2)scale、loadbalance--scaledocker-composeup--scaleapp=3-dversion:'3'services:rds:image:redisapp:build:上下文:。dockerfile:Dockerfile#ports:#-80:80environment:REDIS_HOST:rdslib:image:dockercloud/haproxy链接:-appports:-80:80volumes:-/var/run/docker.sock:/var/run/docker.sock3)commandcd~/pathdocker-composeup-ddocker-composestopdocker-composerestartdocker-composedowndocker-composebuild4)clusterk8s,swarm