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.tar 或docker 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)
    • 删除虚悬镜像(这个镜像既没有仓库名,也没有 标签,均为)
      docker image prune或者docker rmi $(docker images -q -f dangling=true)
    • 删除同镜像ID不同tag的镜像:docker rmi REPOSITORY:TAG
  • 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使用Harbor管理镜像

    • docker镜像上传的一套操作:
      • dokcer login 私有镜像IP:端口 -u admin -p 123456
        docker build -t REPOSITORY:TAG Dockerfile所在文件夹
        docker tag REPOSITORY:TAG 私有镜像IP:端口/Harbor创建的项目/REPOSITORY:TAG
        docker push 私有镜像IP:端口/Harbor创建的项目/REPOSITORY:TAG
        #push报错"received unexpected HTTP status: 500 Internal Server Error"
        #修改:vim /etc/selinux/config  ---> SELINUX=disabled
        
  • 问题:

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

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

docker(持续更新中)

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

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

docker常用镜像命令总结,持续更新中... 建议收藏!

docker常用命令大全(持续更新)

docker遇到的一些小问题(持续更新ing)