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

  • 相关阅读:
    浮动 无刷新 div
    vidalia 更换浏览器代理
    vb 主动 点击 a
    Delphi 资料收集
    用Linux的iptables和Python模拟广域网
    框架资源
    div 边框
    Google App Engine
    mac 雪豹 10.6 五国
    Windows Azure Storage (3) Windows Azure Storage Service存储服务之Blob详解(中)
  • 原文地址:https://www.cnblogs.com/xujinjin18/p/11180914.html
Copyright © 2011-2022 走看看