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

 

posted @ 2020-09-25 16:23  handsomecui  阅读(200)  评论(0编辑  收藏  举报