docker基础

单体Docker
  • Docker概述
Docker出现的契机:解决项目中的环境问题。docker的图标:鲸鱼上放了许多集装箱,也映射了docker的核心思想——隔离。每个箱子是互相隔离的。隔离机制也可以将linux服务器利用到极致   docker的历史: 2010年出现dotcloud,2013年开源后使用人数增多。2014年Docker1.0发布,基于Go语言开发。Docker优势是非常轻巧,在Docker之前一般都是使用虚拟机,非常笨重。Docker是容器技术,也属于一种虚拟化技术。一般linux最核心的环境不过4MB。   docker与虚拟技术 虚拟机技术缺点:资源占用多、冗余步骤多、启动慢 容器化技术:不是模拟一个完整的操作系统   差异点:
  1. 传统虚拟机先虚拟出一套硬件,运行完整的操作系统,再在系统上运行软件
  2. 容器内的应用直接运行在宿主机的内容,容器本身无内核,也没有硬件,且容器间互相隔离,文件系统都是不一样的
  优势:
  1. 应用更快速的交付和部署
  • 传统交付需要借助文档、安装程序
  • docker打包镜像后发布测试,一键运行
  • 更便捷的升级和扩缩容
    • 部署应用快捷、项目打包为镜像后扩展方便
  • 更简单的系统运维
    • 开发、测试等环境高度一致
  • 更高效的计算资源利用
    • 内核级别的虚拟化,在一台物理机上可运行多个容器实例,服务器性能充分利用
      Docker安装   docker架构图: docker基础 名词解释:
    1. 镜像:相当于一个模板,通过镜像来创建容器。一个镜像可以创建多个容器
    2. 容器:通过容器可以独立运行一个或一个组应用,有启动、停止、删除等基本操作
    3. 仓库:存放镜像的地方,有共有仓库和私有仓库
    更换阿里云镜像地址:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装教程(linux):https://docs.docker.com/engine/install/centos/ 配置阿里云镜像加速(教程地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors):  
    #修改daemon配置文件/etc/docker/daemon.json来使用加速器
    sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://1fd77tzz.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

     

      Docker命令 docker工作原理 docker是一个Client-Server结构的系统,docker的守护进程运行在主机上,通过socket从客户端访问。DockerServer接收到DockerClient的指令,就会执行这个命令。docker中容器之间相互隔离,外部不能直接访问容器。 docker基础 docker比vm快的原因 vm对比dc架构: docker基础 docker比vm少了一层Guest OS。直接利用宿主机的内核。因此在新建容器时,无需想vm一样加载一个操作系统内核,省略了这个复杂的过程,加载时间是秒级的 docker基础   -a, --all             Show all images (default hides                         intermediate images)# 列出所有镜像       --digests         Show digests   -q, --quiet           Only show image IDs #只显示镜像ID
        • docker search 搜索镜像
    -f, --filter filter   Filter output based on conditions provided#过滤搜索 例如:docker search --filter=stars=5000 #寻找stars大于等于5000的镜像
        • docker pull 下载镜像
    格式:docker pull 镜像名[:tag](版本)
    Using default tag: latest #如果不写tag则是默认mlatest
    latest: Pulling from library/mysql
    a10c77af2613: Pull complete  #分层下载,docker images的核心:联合文件系统
    b76a7eb51ffd: Pull complete  #当下载其他镜像时,若有相同层的镜像,则不会重新下载,直接共用
    258223f927e4: Pull complete
    2d2c75386df9: Pull complete
    63e92e4046c9: Pull complete
    f5845c731544: Pull complete
    bd0401123a9b: Pull complete
    3ef07ec35f1a: Pull complete
    c93a31315089: Pull complete
    3349ed800d44: Pull complete
    6d01857ca4c1: Pull complete
    4cc13890eda8: Pull complete
    Digest: sha256:aeecae58035f3868bf4f00e5fc623630d8b438db9d05f4d8c6538deb14d4c31b #签名
    Status: Downloaded newer image for mysql:latest 
    docker.io/library/mysql:latest  #真实地址,docker pull mysql 等价于docker pull docker.io/library/mysql:latest

     

        • docker rmi 删除镜像 rm代表删除,i代表image
    -f, --force      Force removal of the image #强制删除镜像
    例如: 删除指定镜像:docker rmi -f ID/image名, 删除全部镜像:docker rmi -f $(docker images -aq)  
      • 容器命令(有镜像才可以创建容器)
        • run:启动容器。先在本机寻找镜像,找不到则去dockerHub上下载,还找不到就报错,找到了就下载到本地,并使用
    docker run [可选参数] image
    --name="Name" 容器名字,用于区分容器
    -d                        后台方式运行
    -it                        使用交互方式运行,进入容器查看内容
    -p                        使用容器的端口,-p 8080:8080
            -p ip:主机端口:容器端口
            -p 主机端口:容器端口(常用)
            -p 容器端口
                容器端口
    -P(大写)    随机指定端口

     

    # 启动并进入镜像,交互工具使用bash
    [root@VM-0-7-centos ~]# docker run -it centos /bin/bash  
    [root@2b902d8d2492 /]# ls  #镜像内部是一个并不太完整的centos系统,很多命令是没有的
    bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

     

    # exit 退出主机
    exit    直接停止容器并退出
    Ctrl + P + Q 容器不停止
    [root@2b902d8d2492 /]# exit
    exit
    [root@VM-0-7-centos ~]# ls /
    bin  boot  data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    [root@VM-0-7-centos ~]#

     

    docker ps命令: -a    列出当前正在运行的容器和历史运行过的容器 -n=?  列出最近创建的容器 ?为个数 -q    只显示容器编号
    [root@VM-0-7-centos ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    [root@VM-0-7-centos ~]# docker ps -a
    CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                     PORTS     NAMES
    2b902d8d2492   centos         "/bin/bash"   3 minutes ago   Exited (0) 2 minutes ago             vibrant_torvalds
    184d14eb101f   feb5d9fea6a5   "/hello"      8 days ago      Exited (0) 8 days ago                stoic_fermi
    [root@VM-0-7-centos ~]#

     

    docker rm 删除容器
    docker rm 容器名 删除指定容器,不能删除正在运行的
    docker rm -f 强制删除容器
    docker rm -f $( docker ps -aq ) 强制删除所有容器,等同于docker ps -a -q | xargs rm 使用管道删除

    容器基本操作命令
    容器的启动、重启、停止和强制停止
    docker start id 
    docker restart id
    docker stop id
    docker kill id

     

    • Docker镜像
    • 容器数据卷
    • DockerFile
    • Docker网络原理
    • IDEA整合Docker
      高级应用:   docker  compos Docker集群   docker swarm Docker集群管理(简化版k8s)   CI/CD  jenkins     P11                    
    上一篇:Markdown 入门一览


    下一篇:docker之镜像下载