zoukankan      html  css  js  c++  java
  • docker 深入浅出

    一、如何开始

    1. 安装docker
      yum -y install docker   //brew cask install docker
      systemctl start docker
      systemctl enable docker.service
      
      cat /etc/docker/daemon.json
      "registry-mirrors": ["https://registry.docker-cn.com"]
       国内仓库:https://9cpn8tt6.mirror.aliyuncs.com

      安装ps:
        apt-get update && apt-get install -y procps
    2.  卸载docker
      yum list installed | grep docker
      yum -y remove docker*
      

    二、基本命令

    1. web容器
      docker port 63 端口映射情况
      docker logs -f bf08b7f2cd89 web应用日志
      docker top 63 查看内部进程
      docker inspect 63 配置状态信息
      
      docker container ls   列出本机正在运行的容器
      docker container ls —all   列出本机所有容器,包括终止运行的容器
      
      docker run -d -P training/webapp python app.py
      docker run -d -p 5000:5000 training/webapp python app.py
      容器内部的 5000 端口映射到我们本地主机的 5000 端口上。
      docker run -ti b5b /bin/bash 运行进入容器
      docker run -tid b5b /bin/bash 后台启动容器
      
      -i: 交互式操作。
      -t: 终端。
      -d:让容器在后台运行。
      -P:将容器内部使用的网络端口映射到我们使用的主机上。
    2. 镜像
      docker search httpd  查询镜像
      docker rmi hello-world 删除镜像
      docker run -t -i ubuntu:15.10 /bin/bash 创建容器
      docker commit -m="creat centos." -a="handsomecui" 5c hbc/centos:v1 提交镜像
      docker build -t runoob/centos:6.7 . 根据Dockerfile构建镜像
      docker tag 860c279d2fec runoob/centos:dev 打标签
      
      REPOSITORY:表示镜像的仓库源
      TAG:镜像的标签(默认last,最新)
      IMAGE ID:镜像ID 
    3. 网络
      docker network create -d bridge test-net 创建网络
      -d:参数指定 Docker 网络类型,有 bridge、overlay。
      docker network ls 查看
      docker run -tid --name test1 --network test-net ef /bin/bash 运行容器连接网络
    4. dns
      /etc/docker/daemon.json
      "dns" : [
          "114.114.114.114",
          "8.8.8.8"
        ]
      
      docker run -it --rm ubuntu  cat etc/resolv.conf 查询是不是生效
      
      docker run -it --rm -h host_ubuntu  --dns=114.114.114.114 --dns-search=test.com ubuntu  手动指定dns
      
      
      -h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
      --dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
      --dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。
    5. 仓库
      docker login 登录
      docker logout 登出
      docker search ubuntu 查询
      docker push username/ubuntu:18.04 推送
      
      docker export 1e560fca3906 > es.tar 导出容器快照
      docker import es.tar elastic:5.6.8 导入容器快照
    6. Dockerfile
      FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。
      RUN:用于执行后面跟着的命令行命令。有以下两种格式:
      
      1. RUN <命令行命令>
      # <命令行命令> 等同于,在终端操作的 shell 命令。
      2. RUN ["可执行文件", "参数1", "参数2"]
      # RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline
      
      CMD 在docker run 时运行。
      RUN 是在 docker build。
      
      ENV  设置环境变量
      例:
      ENV NODE_VERSION 7.2.0
      RUN curl -SLO "/node-v$NODE_VERSION-linux-x64.tar.xz"
      
      EXPOSE
      仅仅只是声明端口
      
      注意: 
      Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。
      以 && 符号连接命令,这样执行后,只会创建 1 层镜像。
    7. machine
      docker-machine version
      docker-machine ls
      
      Hyper-V管理器-->新建虚拟交换机-->外部-->命名docker
      ctrl + i 管理员运行
      docker-machine create --driver hyperv --hyperv-virtual-switch=docker manager1
    8. 批量操作
      linux :  docker stop $(docker ps -a -q)
      cmd:  
      docker ps -a  -q > 1.txt
      for /f %a in (1.txt) do docker stop %a

    三、实践

    1. 安装ES
      docker run -di --name=elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8
  • 相关阅读:
    .NET设计模式外观模式(Façade Pattern)
    .NET设计模式创建型模式专题总结(Creational Pattern)
    MFC深入浅出消息映射的实现
    .NET设计模式代理模式(Proxy Pattern)
    .NET设计模式工厂方法模式(Factory Method)
    Web Services Security (转)
    MYSQL数据库的查询优化技术
    U盘插入拔出提示
    SQL存储过程(ASP.NET)
    在SQL Server中使用种子表生成流水号注意顺序
  • 原文地址:https://www.cnblogs.com/handsomecui/p/13730958.html
Copyright © 2011-2022 走看看