zoukankan      html  css  js  c++  java
  • docker

    ##################################

    docker
    参考:
    https://www.jianshu.com/p/09fbaa7f93a8
    https://www.runoob.com/docker/docker-architecture.html
    http://www.docker.org.cn/book/docker/what-is-docker-16.html
    简介:
    client: pip install docker
    host: docker daemon
    registry: docker hup
    windows-->docker(linux)

    安装docker
    配置镜像加速
    操作系统启动docker

    关闭win10下docker自动启动:
    任务管理器--启动--禁用 有效
    docker--setting--general 无效

    docker使用:
    镜像操作:搜索,下载,查看,删除,获取
    容器操作:运行,查看容器列表,启动,停止,删除,查看日志,进入正在运行容器,拷贝文件,获取容器元信息
    创建镜像:
    更新镜像:使用docker commit命令
    构建镜像:使用docker build命令,需要创建Dockerfile文件


    # 查看版本
    docker version
    # 搜索可用镜像(镜像加速)
    docker search tutorial
    # 下载镜像
    docker pull learn/tutorial
    # 容器中运行命令
    docker run learn/tutorial echo "hello word"
    # 容器中安装新的程序
    docker run learn/tutorial apt-get install -y ping
    # 获得安装完ping命令之后容器的id
    docker ps -l
    # 保存对容器的修改
    docker commit 698 learn/ping
    # 运行新的镜像
    docker run learn/ping ping www.google.com
    # 检查运行中的镜像
    docker ps
    docker inspect ID
    # 发布自己的镜像
    docker images
    docker push learn/ping

    镜像操作
    查找镜像:
    # 搜索docker hub网站镜像的详细信息
    docker search 关键词

    下载镜像:
    # Tag表示版本,有些镜像的版本显示latest,为最新版本
    docker pull 镜像名:TAG

    查看镜像:
    # 查看本地所有镜像
    docker images

    删除镜像:
    # 删除指定本地镜像
    docker rmi -f 镜像ID或者镜像名:TAG
    # -f 表示强制删除

    获取元信息:
    # 获取镜像的元信息,详细信息
    docker inspect 镜像ID或者镜像名:TAG

    容器操作
    运行:
    docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像TD或镜像名:TAG
    # --name 指定容器名,可自定义,不指定自动命名
    # -i 以交互模式运行容器
    # -t 分配一个伪终端,即命令行,通常组合来使用
    # -p 指定映射端口,将主机端口映射到容器内的端口
    # -d 后台运行容器
    # -v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读

    容器列表:
    # docker ps 查看正在运行的容器
    docker ps -a -q
    # -a 查看所有容器(运行中、未运行)
    # -q 只查看容器的ID

    启动容器:
    docker start 容器ID或容器名

    停止容器:
    docker stop 容器ID或容器名

    删除容器:
    docker rm -f 容器ID或容器名
    # -f 表示强制删除

    查看日志:
    docker logs 容器ID或容器名

    进入正在运行容器:
    docker exec -it 容器ID或者容器名 /bin/bash
    # 进入正在运行的容器并且开启交互模式终端
    # /bin/bash是固有写法,作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。
    # 也可以用docker exec在运行中的容器执行命令

    拷贝文件:
    docker cp 主机文件路径 容器ID或容器名:容器路径 # 主机中文件拷贝到容器中
    docker cp 容器ID或容器名:容器路径 主机文件路径 # 容器中文件拷贝到主机中

    docker cp D:git_jstprojectyct_proxyproxy_yctsave_sqlite.py yct_proxy:/code/proxy_yct/

    获取容器元信息:
    docker inspect 容器ID或容器名

    使用Dockerfile构建镜像
    Dockerfile是一个包含创建镜像所有命令的文件,使用docker build命令可以根据Dockerfile的内容创建镜像(以tomcat为例)。

    创建一个Dockerfile文件 vi Dockerfile
    #注意dockerfile指令须大写
    FROM tomcat
    MAINTAINER zong
    RUN rm -f /usr/local/tomcat/webapps/ROOT/index.jsp
    RUN echo "<h1>hello world2<h1>" > /usr/local/tomcat/webapps/ROOT/index.html

    构建新镜像
    docker build -f Dockerfile -t zong/tomcat:v2.0 .
    # -f Dockerfile路径,默认是当前目录
    # -t 指定新镜像的名字以及TAG

    Docker 容器使用
    运行交互式的容器
    docker run -i -t ubuntu:15.10 /bin/bash
    -t:在新容器内指定一个伪终端或终端。
    -i:允许你对容器内的标准输入 (STDIN) 进行交互。
    启动容器(后台模式)
    docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    运行一个web应用
    docker pull training/webapp
    docker run -d -P training/webapp python app.py #-P随机映射
    docker run -d -p 5050:5000 training/webapp python app.py #-p主机5050映射到容器5000
    docker logs -f bf08b7f2cd89 #-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。
    docker top wizardly_chandrasekhar #查看容器内部运行的进程
    docker inspect wizardly_chandrasekhar #检查 WEB 应用程序
    docker stop wizardly_chandrasekhar
    docker start wizardly_chandrasekhar
    docker rm wizardly_chandrasekhar #删除容器时,容器必须是停止状态,否则会报错误
    容器命名
    docker run -d -P --name runoob training/webapp python app.py #使用 --name 标识来命名容器
    通过-e来设定任意的环境变量
    docker run -e "deep=purple" --rm ubuntu /bin/bash -c export
    容器互联
    同一个宿主机里的容器互联
    不同宿主机里的容器互联

    Docker 镜像使用
    列出镜像列表 docker images
    获取一个新的镜像 docker pull image:tag
    查找镜像 docker search image
    拖取镜像 docker pull image
    创建镜像
    更新镜像 docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
    docker commit -m="描述消息" -a="作者" 容器ID或容器名 镜像:TAG
    # 例:
    # docker commit -m="add vim" -a="xjj" yct_proxy daocloud.io/xjinjin/yct_proxy:v1
    构建镜像 docker build
    设置镜像标签
    docker tag 860c279d2fec runoob/centos:dev
    docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。
    使用 docker images 命令可以看到,ID为860c279d2fec的镜像多一个标签。

    --------------------------------------------------------------------

    工作流程:local--git--daocloud.io--real
    本地项目(含dockerfile,docker-entrypoint.sh)跟新完-->git-->daocloud.io(制作镜像,镜像版本自动更新)-->生产环境docker pull(端口映射,容器互联)

    docker:
    registry:
    daocloud.io
    git 授权
    username:xx Email:xxxxxx@163.com

    1.加速器(daocloud.io):注册完账号后--加速器(自动给出加速地址)
    http://xxxxx.m.daocloud.io
    2.根据git项目在daocloud上制作镜像:
    项目--新建项目--项目名称(镜像名)--设置代码源(git项目)--手动触发(master+commitID)--完成
    镜像访问控制:
    镜像仓库--点击镜像--设置--公开--ok
    Dockerfile:
    参考:http://guide.daocloud.io/dcs/dockerfile-9153584.html
    https://www.cnblogs.com/lienhua34/p/5170335.html
    FROM <image name>
    MAINTAINER <author name>
    RUN <command>
    ADD <source> <destination>
    COPY <source> <destination>
    CMD ["executable","param1","param2"]
    CMD ["param1","param2"]
    CMD command param1 param2
    EXPOSE <port>
    ENTRYPOINT ["executable", "param1","param2"]
    ENTRYPOINT command param1 param2
    WORKDIR /path/to/workdir
    ENV <key> <value>
    USER <uid>
    VOLUME ["/data"]



    容器互联:(通信另算,例如:proxy连接redis,则要在proxy中指定ip和port或者(可解析成ip的名字+port))
    单机容器间的互联:
    通过docker run命令的--link参数可以让容器之间通过连接(linking)系统进行交互。
    参数格式:--link name:alias ,name是要链接的容器名称, alias是此连接的别名。

    同一宿主机的网络模型分为四种模式
    Bridge模式 #网桥
    Host模式 #和宿主机共用Network Namespace
    Containner模式 #这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace
    NONE模式 # 有自己的Network Namespace,不进行任何网络配置。没有网卡、IP、路由等信息。需要自己为Docker容器添加网卡、配置IP等。

    跨主机容器互连:
    参考:https://blog.csdn.net/liaomin416100569/article/details/80350144
    1.端口映射
    2.直接路由
    3.Pipework指定静态ip
    --------------------------------------------------------------------

    docker for windos10 配置阿里云加速镜像仓库:
    参考:
    https://jingyan.baidu.com/article/f3e34a12c607f4f5eb653596.html

    管理控制台--容器镜像服务--镜像加速器--加速器地址:https://xp92b0he.mirror.aliyuncs.com

    ##################################

    docker实例:
    Docker 安装 Nginx
    docker search nginx
    docker pull nginx
    docker images nginx
    docker run --name runoob-nginx-test -p 8081:80 -d nginx
    浏览器中打开 http://127.0.0.1:8081/
    nginx 部署
    mkdir -p nginx/www nginx/logs nginx/conf
    # 拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录
    docker cp 7a4a2dbd9efb:/etc/nginx/nginx.conf conf
    docker run -d -p 8082:80 --name runoob-nginx-test-web -v D: est ginxwww:/usr/share/nginx/html -v D: est ginxconf ginx.conf:/etc/nginx/nginx.conf -v D: est ginxlogs:/var/log/nginx nginx
    cd /nginx/www
    index.html
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>菜鸟教程(runoob.com)</title>
    </head>
    <body>
    <h1>我的第一个标题</h1>
    <p>我的第一个段落。</p>
    </body>
    </html>
    浏览器中打开 http://127.0.0.1:8082/

    如果要重新载入 NGINX 可以使用以下命令发送 HUP 信号到容器:
    $ docker kill -s HUP container-name
    重启 NGINX 容器命令:
    $ docker restart container-name

  • 相关阅读:
    Atitit.Java exe bat  作为windows系统服务程序运行
    Atitit. Object-c语言 的新的特性  attilax总结
    Atitit. Object-c语言 的新的特性  attilax总结
    Atitit。Time base gc 垃圾 资源 收集的原理与设计
    Atitit。Time base gc 垃圾 资源 收集的原理与设计
    Atitit.go语言golang语言的新的特性  attilax总结
    Atitit.go语言golang语言的新的特性  attilax总结
    Atitit.pdf 预览 转换html attilax总结
    Atitit.pdf 预览 转换html attilax总结
    Atitit.office word  excel  ppt pdf 的web在线预览方案与html转换方案 attilax 总结
  • 原文地址:https://www.cnblogs.com/xujinjin18/p/11180914.html
Copyright © 2011-2022 走看看