docker(持续更新中)

Posted 小蜗牛爱远行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker(持续更新中)相关的知识,希望对你有一定的参考价值。

  • docker启动:docker daemon -g /home/dockeruser/mydocker:在新的目录中的启动docker

  • docker启动容器:

    • docker run --detach(-d) --name web nginx:latest:创建守护进程

    • docker --interactive --tty(可以组合:-it) --link web:web --name web_test busybox:latest /bin/sh:创建虚拟终端,并绑定标准输入或输出到运行中的容器

  • docker导出:

    • 导出容器:docker export 容器名称(推荐)-o aaaaaa.tar
    • 导出镜像:推荐:docker save 容器名称 -o aaaaaa.tar;不推荐:docker save 镜像ID(导入时需要重新命名) -o aaaaa.tar
  • docker导入:

    • 导入镜像(推荐):docker load < fileName.tardocker load -i fileName.tar
    • 导入容器(生成的也是镜像):docker import fileName.tar REPOSITORY:TAG
    • docker import:丢弃了所有的历史记录和元数据信息,仅保存容器当时的快照状态。在导入的时候可以重新制定标签等元数据信息;
    • docker load:将保存完整记录,体积较大
  • docker 命名:

    • 镜像命名:docker tag 镜像ID REPOSITORY:TAG
    • 容器重命名:docker rename 原名称 新名称
  • docker容器中运行额外进程:

    • docker exec -d --name web busybox:latest /bin/sh -c "sleep 3000"
  • docker查看命令:

    • 查看日志

      docker logs 容器名称

    • 查看容器配置信息:

      docker inspect -f "{{json .Config.Env}}" centos8

      docker inspect -f "{{json .Mounts}}" centos8

  • 创建只读容器:

    • --read-only 标志创建容器时,会将挂载的容器文件系统设置为只读,防止容器被修改
  • 容器重启策略:

    • --restart 标志,系统故障时自动重试,时间间隔为上次重启时间翻倍
  • docker项目设计:

    • 镜像适合打包和分发相对静态的文件,如程序;

    • 存储卷则持有动态或专门数据

      • 绑定挂载卷:指向主机文件系统上用户指定的位置
      • 文件映射:docker run -d --name myweb -v /home:/usr/local/apache2/htdocs -p 80:80 httpd:latest 冒号前本机路径,冒号后docker的httpd运行的容器文件路径,可在页面展示
      • 文件映射只读模式:docker run -d --name myweb -v /home:/usr/local/apache2/htdocs/:ro -p 80:80 httpd:latest
    • 创建一个与宿主机共享卷容器

      docker run -itd -v /home:/home/gy -v ~/web-logs-example:/home/web-logs-example --name myos1 0d120b6ccaa8 /bin/bash

    • 复制任何本卷所有引用的源容器到新的容器中

      docker run --name myos2 --volumes-from myos --volumes-from myos1 0d120b6ccaa8 ls -l /home/

  • docker容器删除:

    • 删除所有未运行的容器和卷,-v防止产生孤立卷

      docker rm -v $(docker ps -aq)

    • 删除虚悬镜像(这个镜像既没有仓库名,也没有 标签,均为<none>

      docker image prune或者docker rmi $(docker images -q -f dangling=true)

  • docker网络设置:

    • docker -d -icc=false:跨容器通信被禁止,除非被显式允许的流量
  • docker容器八个命名空间(可能会有更新):

    • MNT:文件系统 访问和结构
    • NET:网络访问和结构
    • UTS:主机和域名
    • USR:用户名和标识符
    • IPC:通过共享内存进行通讯
    • PID:进程标识符和进程能力
    • Cgroups:资源保护
    • chroot():控制文件系统跟目录的位置
  • docker添加私有仓库:

    • vim /etc/docker/daemon.json
      #添加信息,远程仓库和私有仓库
      {
          "registry-mirrors": [
              "https://pak31uuv.mirror.aliyuncs.com",
              "https://registry.docker-cn.com"
          ],
          #私有仓库地址
          "insecure-registries": [
              "私有仓库IP地址"
          ]
      }
      #重启docker
      systemctl restart docker
      
  • 问题:

    • 已经创建的容器可以修改那些参数?
    • 多个容器之间怎么相互通讯关联?

以上是关于docker(持续更新中)的主要内容,如果未能解决你的问题,请参考以下文章

Docker学习笔记-持续更新中

docker(持续更新中)

docker(持续更新中)

Docker 村常用命令 (持续更新)

jenkins+docker 持续集成 持续交付

Docker--私有仓库建立Cgroup资源限制(持续更新中)