• Docker基础用法


    什么是docker

    docker中的容器:

    • lxc --> libcontainer --> runC

    OCI&OCF

    OCI

    Open Container-initiative

    • 由Linux基金会主导于2015年6月创立
    • 旨在围绕容器格式和运行时制定一个开放的工业化标准
    • contains two specifications
      • the Runtime Specification(runtime-spec)
      • the Image Specification(image-spec)

    OCF

    打开容器格式

    runC是一个CLI工具,用于根据OCI规范生成和运行容器

    • 容器作为runC的子进程启动,并且可以嵌入到各种其他系统中,而无需运行守护进程
    • runC是建立在libcontainer之上的,libcontainer是一种支持数百万Docker引擎安装的容器技术

    docker提供了一个专门容纳容器镜像的站点:https://hub.docker.com

    docker架构

    docker镜像与镜像仓库

    为什么镜像仓库名字是Registry而不是repository?在docker中仓库的名字是以应用的名称取名的

    镜像是静态的,而容器是动态的,容器有其生命周期,镜像与容器的关系类似于程序与进程的关系。镜像类似于文件系统中的程序文件,而容器则类似于将一个程序运行起来的状态,也即进程。所以容器是可以删除的,容器被删除后其镜像是不会被删除的

    docker对象

    使用docker时,您正在创建和使用图像、容器、网络、卷、插件和其他对象。

    • 图像
      • 图像是一个只读模板,其中包含创建docker容器的说明。

      • 通常,一个图像基于另一个图像,并进行了一些额外的定制。

      • 您可以创建自己的图像,也可以只使用其他人创建并在注册表中发布的图像。

    • 容器
      • conntainer是映像的可运行实例。

      • 您可以使用docker API或CLI创建、运行、停止、移动或删除容器。

      • 您可以将容器连接到一个或多个网络,将存储连接到容器,甚至可以基于其当前状态创建新映像

    安装及使用docker

    docker安装

    [root@localhost ~]# cd /etc/yum.repos.d/
    [root@localhost yum.repos.d]# curl -o docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
    [root@localhost yum.repos.d]# sed -i 's@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce@g' docker-ce.repo
    [root@localhost ~]#yum clean all
    [root@localhost ~]# yum -y install docker-ce
    [root@localhost ~]# systemctl start docker
    

    docker加速

    docker-ce的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,而docker的加速就是通过配置此文件来实现的。

    docker的加速有多种方式:

    • docker cn
    • 中国科技大学加速器
    • 阿里云加速器(需要通过阿里云开发者平台注册帐号,免费使用个人私有的加速器)

    [root@localhost ~]# vim /etc/docker/daemon.json
    {
          "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
    }
    

    docker常用操作

    命令 功能
    docker search 在docker仓库中搜索镜像
    docker pull 在仓库中下载镜像
    docker images 列出主机上的镜像
    docker create 创建一个新的容器但不启动
    docker start 启动一个或多个已经被停止的容器
    docker run 创建一个新的容器并运行
    docker attach 连接到正在运行中的容器
    docker ps 列出当前正在运行的容器
    docker logs 查看容器日志
    docker restart 重启容器
    docker stop 停止一个运行中的容器
    docker kill 杀掉一个运行中的容器
    docker rm 删除一个或多个容器
    docker exec 在运行的容器中执行命令
    docker info 现实docker系统信息,包括镜像和容器数
    docker inspect 获取容器,镜像的源数据
    • docker search
    [root@localhost ~]# docker search centos
    NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    centos                             The official build of CentOS.                   6423      [OK]      
    ansible/centos7-ansible            Ansible on Centos7                              132                  [OK]
    consol/centos-xfce-vnc             Centos container with "headless" VNC session…   125                  [OK]
    jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   117                  [OK]
    centos/systemd                     systemd enabled base container.                 96                   [OK]
    .........................................
    
    • docker pull
    [root@localhost ~]# docker pull centos
    Using default tag: latest
    latest: Pulling from library/centos
    7a0437f04f83: Pull complete
    Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
    Status: Downloaded newer image for centos:latest
    docker.io/library/centos:latest
    
    • docker images
    [root@localhost ~]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
    centos       latest    ue124nfamg4h   2 months ago   167MB
    
    • docker create
    [root@localhost ~]# docker create centos:latest
    31faa228005d988af1fa19fd7423331d4b08e1ed5dc78e373df83a9e1c4d21b6
    
    • docker start
    [root@localhost ~]# docker start 486dfe3fmca5
    486dfe3fmca5
    [root@localhost ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
    486dfe3fmca5   centos    "/bin/bash"   9 minutes ago   Up 5 seconds             zen_moser
    
    • docker attach
      该命令会进入容器但是无法操作,使用ctrl+c退出时容器也会退出
    [root@localhost ~]# docker attach --sig-proxy=false hungry_mccarthy
    
    • docker exec
    [root@localhost ~]# docker exec -it  hungry_mccarthy /bin/bash
    root@7a9ac43ccda3:/# exit
    exit
    [root@localhost ~]# docker ps
    CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS         PORTS     NAMES
    7a9ac43ccda3   nginx:latest   "/docker-entrypoint.…"   24 minutes ago   Up 3 minutes   80/tcp    hungry_mccarthy
    
    • docker inspect
    [root@localhost ~]# docker inspect hungry_mccarthy
    [
        {
            "Id": "aefg35ghty564fhjghe7yvcl087cd9bf4e04a95ee56ec20b5e407bd8c36214a",
            "Created": "2021-02-25T15:11:48.899142756Z",
            "Path": "/docker-entrypoint.sh",
            "Args": [
                "nginx",
                "-g",
                "daemon off;"
    
    • docker info
    [root@localhost ~]# docker info
    Client:
     Context:    default
     Debug Mode: false
     Plugins:
      app: Docker App (Docker Inc., v0.9.1-beta3)
      buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
     
    Server:
     Containers: 4
      Running: 1
      Paused: 0
      Stopped: 3
     Images: 2
    

    docker event state

  • 相关阅读:
    MybatisPlus分页插件、常用查询
    object与map与json之间的相互转换
    MybatisPlus逻辑删除、执行性能
    MybatisPlus实现自动填充(表字段创建、修改时间自动填写)、version乐观锁
    Swagger2的使用
    uniapp小程序增加自定义字体
    新发安卓应用APP 怎么快速上应用市场 简单谈谈
    Android平台应用启动时读写手机存储、访问设备信息(如IMEI)等权限策略及提示信息
    ios真机调试,iTunes检测得到,hbuilder未检测到手机和模拟器的解决办法
    nohup命令
  • 原文地址:https://www.cnblogs.com/Ycqifei/p/14451750.html
Copyright © 2020-2023  润新知