• docker常见操作总结


    一、原理
      1、Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,它能直接访问物理设备,会给每一台虚拟机分配内存、CPU、网络、磁盘等资源,也可以确保虚拟机对应的硬件资源不被其他虚拟机访问,是所有虚拟化技术的核心。
      2、虚拟机 指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟机都会有自己的kernel,自己的硬件,这样虚拟机启动的时候需要先做开机自检,启动kernel,启动用户进程等一系列行为
      3、namespace 是一种隔离机制,一个独立的namespace看上去拥有所有linux主机的资源(进程ID、主机名、用户ID、网络访问、进程间通讯和文件系统等),也拥有自己的0号进程(即系统初始化的进程)。一个namespace可以产生多个子namespace
      4、[Cgroups]:是Linux内核功能,它让两件事情变成可能:限制Linux进程组的资源占用(内存、CPU);为进程组制作 PID、UTS、IPC、网络、用户及装载命名空间。
      5、docker-se 商业版 docker-ce 社区版

    二、常用操作
      1、更新yum
        yum -y update
      2、删除旧版本
        yum remove docker
      3、下载安装软件
        yum install -y yum-utils
      4、配置官方源
        yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      5、配置阿里源
        yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      6、下载docker
        yum install docker-ce
      7、启动
        systemctl start docker
      8、查看docker版本
        docker version
      9、查看docker信息
        docker info
      10、查看本机所有image
        docker image ls

      11、下载镜像(使用国内镜像源)
        docker image pull hello-world
        配置加速 /etc/docker/daemon.json
        {
          "registry-mirrors": ["https://registry.docker-cn.com"]
        }

      12、运行docker
        docker container run hello-world

      13、删除image(如果image被容器引用,必须销毁这个容器,才能删除image)
        docker image rm hello-world
      14、查看运行的中的容器
        docker ps
        docker ps -a 查看已经退出的容器
        docker container ls 查看容器 -a 查看所有的
      15、停止容器(状态变成已终止)
        docker stop 容器id[CONTAINER ID]
        docker container prune 清除所有所有未运行的容器
      16、查看容器日志(容器的终端输出)
        docker logs 容器id[CONTAINER ID OR NAME]

      17、删除容器
        docker rm 容器id[CONTAINER ID]
      18、拉取ubuntu
        docker pull ubuntu:18.04
        运行 -i 交互式操作 -t 终端 --rm 容器退出后将其删除 bash 使用bash当作交互
        docker run -it --rm ubuntu:18.04 bash
      19、运行nginx
        docker pull nginx
        启动 --name 指定容器名称, -d 后台运行并打印容器id, -p 将容器端口映射到宿主机
        docker run --name nginxweb -d -p 8080:80 nginx
        访问 127.0.0.1:8080
        交互方式进到容器
        docker exec -it nginxweb bash
        将宿主机得文件复制到容器里
        docker cp 宿主机文件 容器id:容器目录
        docker cp leopard/ 0944b902095c:/opt
      20、启动终止状态的容器
        docker container start [容器名]
        修改exited状态的容器下文件权限
        docker inspect [CONTAINER ID]
        找见UpperDir对应的目录,并进入,找见对应的文件进行修改即可

      21、查看docker 不同
        docker diff nginxweb
      22、保存新镜像(docker要在运行状态)
        --author 指定修改者 --message 记录修改描述(类似git)
        docker commit --author “lifeilong@126.com” --message “修改” nginxweb nginx:v1
        给容器镜像修改标签
        docker tag <image id> <tagname>
        docker tag lifeilong:v1 lifeilong:latest
        修改容器启动时执行的命令
        docker commit -a "lifeilong" -c 'CMD ["/bin/httpd", "-f", "-h", "/data/html"]' -p b2 lifeilong:v2

      23、订制自己的docker
        touch Dockerfile创建配置文件,内容如下:
        FROM nginx
        RUN echo ‘<h1>Hello, Docker!</h1>’ > /usr/share/nginx/html/index.html
        构建容器($(pwd)为上下文路径)
        docker build -t nginx:v2 $(pwd)
      24、Dockerfile命令
        COPY test.txt /home 将test.txt复制到容器/home目录(会把文件的元数据也复制,权限时间等)
        ADD 高级的复制命令,原路径可以是URL,压缩文件会自动解压
        CMD 容器启动命令

      25、运行docker
        docker run 时后台操作:
        1、检查本地是否有镜像,没有就从共有仓库下载
        2、利用镜像创建并启动一个容器
        3、分配一个文件系统
        4、从宿主机网桥中桥接一个虚拟口到容器
        5、从地址池配置一个IP地址给容器
        6、执行用户指定的应用程序
        7、执行完终止容器

      26、数据卷,容器内部及之间管理数据
        1、创建数据卷
          docker volume create my-vol
        2、查看
          docker volume ls
          docker volume inspect my-vol 查看详细信息
        3、启动挂载(将数据卷挂载到容器/webapp目录)
          docker run -d -P --name nginxtest --mount source=my-vol, target=/webapp nginx
        4、删除数据卷
          docker volume rm my-vol
          docker volume prune 删除所有闲置数据卷
      27、挂载主机目录、文件
        将主机目录/home/webapp 挂载到容器/opt/webapp 默认权限是读写,加readonly指定为只读
        docker run -d -P --name nginxtest --mount type=bind,source=/home/webapp/,target=/opt/webapp,readonly nginx
        挂载文件
        docker run -d -P --name nginxtest --mount type=bind,source=/home/webapp/,target=/opt/webapp,readonly nginx

      28、网络容器互联
        创建网络 -d 标识网络类型
        docker network create -d bridge my-net
        启动两个容器test1和test2在同一网络
        docker run -it --rm --name test1 --network my-net nginx bash
        docker run -it --rm --name test2 --network my-net nginx bash

  • 相关阅读:
    几种编辑器的markdown-toc生成目录在github上的表现
    Docker 镜像文件的导入和导出
    Python 的 os 与 sys 模块
    IPython 自动重载魔术
    一种新的python局部调试手法
    Python 动态从文件中导入类或函数的方法
    python2中新式类和经典类的多重继承调用顺序
    Python运行目录或压缩文件
    子类化内置类型
    Django 数据库访问性能优化
  • 原文地址:https://www.cnblogs.com/imlifelong/p/12165628.html
Copyright © 2020-2023  润新知