一、如何开始

  1. 安装docker
    yum -y install docker //brew cask install dockersystemctl 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 versiondocker-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