zoukankan      html  css  js  c++  java
  • docker基础用法

    1.什么是docker

    docker中的容器:
    lxc --> libcontainer --> runC

    2.OCI&OCF

    2.1OCI

    Open Container-initiative

    由Linux基金会主导于2015年6月创立
    旨在围绕容器格式和运行时制定一个开放的工业化标准
    contains two specifications

    • the Runtime Specification(runtime-spec)
    • the Image Specification(image-spec)

    2.2OCF

    Open Container Format

    runC is a CLI tool for spawning and running containers according to the OCI specification

    • Containers are started as a child process of runC and can be embedded into various other systems without having to run a daemon
    • runC is built on libcontainer, the same container technology powering millions of Docker Engine installations
      docker提供了一个专门容纳容器镜像的站点:https://hub.docker.com

    3.docker架构

    4.docker镜像与镜像仓库

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

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

    5.docker对象

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

    • IMAGES
      • 镜像是一个只读模板,上面有创建docker容器的说明。
      • 通常,镜像是基于另一个镜像,并有一些额外的定制。
      • 您可以创建自己的镜像,或者只使用其他人创建并发布在仓库中的镜像。
    • CONTAINERS
      • 容器是镜像的可运行实例。
      • 您可以使用dockerAPI或CLI创建、运行、停止、移动或删除容器。
      • 您可以将容器连接到一个或多个网络,将存储附加到它,甚至根据其当前状态创建新镜像。

    6.安装及使用docker

    [root@192 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
    [root@192 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    [root@192 ~]# ls /etc/yum.repos.d/
    CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
    CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  docker-ce.repo
    [root@192 ~]# yum makecache fast
    [root@192 ~]# yum -y install docker-ce
    [root@192 ~]# systemctl enable --now docker
    Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
    [root@192 ~]# systemctl status docker
    ● docker.service - Docker Application Container Engine
       Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
       Active: active (running) since 二 2020-03-31 09:30:06 CST; 26s ago
         Docs: https://docs.docker.com
     Main PID: 2813 (dockerd)
        Tasks: 8
       Memory: 42.1M
       CGroup: /system.slice/docker.service
               └─2813 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    
    //安装校验
    [root@192 ~]# docker version
    Client: Docker Engine - Community
     Version:           19.03.8
     API version:       1.40
     Go version:        go1.12.17
     Git commit:        afacb8b
     Built:             Wed Mar 11 01:27:04 2020
     OS/Arch:           linux/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          19.03.8
      API version:      1.40 (minimum version 1.12)
      Go version:       go1.12.17
      Git commit:       afacb8b
      Built:            Wed Mar 11 01:25:42 2020
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          1.2.13
      GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
     runc:
      Version:          1.0.0-rc10
      GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
     docker-init:
      Version:          0.18.0
      GitCommit:        fec3683
    

    7.docker加速

    用阿里云加速器步骤

    登录阿里云官网https://www.aliyun.com/
    创建一个阿里云账号

    [root@192 ~]# vim /etc/docker/daemon.json
    
    {
      "registry-mirrors": ["https://k94psehn.mirror.aliyuncs.com"]
    }
    [root@192 ~]# systemctl daemon-reload
    [root@192 ~]# systemctl restart docker
    

    8.docker常用操作

    命令 功能
    docker search 在Docker Hub中搜索镜像
    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 inspect 返回有关Docker对象的低级信息
    //在Docker Hub中搜索镜像
    [root@192 ~]# docker search tomcat
    NAME                          DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    tomcat                        Apache Tomcat is an open source implementati…   2680                [OK]                
    tomee                         Apache TomEE is an all-Apache Java EE certif…   76                  [OK]                
    dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   53                  
    
    //从仓库中提取镜像或存储库
    [root@192 ~]# docker pull tomcat
    Using default tag: latest
    latest: Pulling from library/tomcat
    50e431f79093: Pull complete 
    dd8c6d374ea5: Pull complete 
    c85513200d84: Pull complete 
    55769680e827: Pull complete 
    e27ce2095ec2: Pull complete 
    5943eea6cb7c: Pull complete 
    3ed8ceae72a6: Pull complete 
    91d1e510d72b: Pull complete 
    415cc4506e71: Pull complete 
    a79d88064227: Pull complete 
    Digest: sha256:b707d3b8b4f40951ca2f387c24ab9f78800c69c90740f0cca937a1b95204b3a4
    Status: Downloaded newer image for tomcat:latest
    docker.io/library/tomcat:latest
    
    //列出镜像
    [root@192 ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    tomcat              latest              a7fa4ac97be4        13 days ago         528MB
    
    //显示系统范围的信息
    [root@192 ~]# docker info
    Client:
     Debug Mode: false
    
    Server:
     Containers: 2
      Running: 0
      Paused: 0
      Stopped: 2
     Images: 1
     Server Version: 19.03.8
     Storage Driver: overlay2
      Backing Filesystem: <unknown>
      Supports d_type: true
      Native Overlay Diff: true
     Logging Driver: json-file
     Cgroup Driver: cgroupfs
     Plugins:
      Volume: local
      Network: bridge host ipvlan macvlan null overlay
      Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
     Swarm: inactive
     Runtimes: runc
     Default Runtime: runc
     Init Binary: docker-init
     containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
     runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
     init version: fec3683
     Security Options:
      seccomp
       Profile: default
     Kernel Version: 3.10.0-862.el7.x86_64
     Operating System: CentOS Linux 7 (Core)
     OSType: linux
     Architecture: x86_64
     CPUs: 1
     Total Memory: 1.779GiB
     Name: 192.168.249.131
     ID: VM7H:N3DL:QYCN:EFWA:IBPN:3CBO:F2GY:UN3P:33GB:DGDW:PKQP:NBPW
     Docker Root Dir: /var/lib/docker
     Debug Mode: false
     Registry: https://index.docker.io/v1/
     Labels:
     Experimental: false
     Insecure Registries:
      127.0.0.0/8
     Registry Mirrors:
      https://k94psehn.mirror.aliyuncs.com/
     Live Restore Enabled: false
    
    //创建一个新的容器
    [root@192 ~]# docker create -it tomcat /bin/bash
    4fa4d1a800d2a8a0a2600409e12c78acf626008c54ce3bcd3e58652ad52cac21
    
    //启动一个或多个已停止的容器
    [root@192 ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    4fa4d1a800d2        tomcat              "/bin/bash"         59 seconds ago      Created                                         mystifying_rosalind
    fdea496cc2f5        tomcat              "/bin/bash"         13 minutes ago      Exited (0) 11 minutes ago                       upbeat_hamilton
    798adb9f3186        tomcat              "/bin/bash"         19 minutes ago      Exited (0) 17 minutes ago                       sleepy_neumann
    [root@192 ~]# docker start 4fa4d1a800d2
    4fa4d1a800d2
    
    //列出容器
    [root@192 ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    4fa4d1a800d2        tomcat              "/bin/bash"         59 seconds ago      Created                                         mystifying_rosalind
    fdea496cc2f5        tomcat              "/bin/bash"         13 minutes ago      Exited (0) 11 minutes ago                       upbeat_hamilton
    798adb9f3186        tomcat              "/bin/bash"         19 minutes ago      Exited (0) 17 minutes ago                       sleepy_neumann
    [root@192 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    4fa4d1a800d2        tomcat              "/bin/bash"         4 minutes ago       Up 7 seconds        8080/tcp            mystifying_rosalind
    
    //在新容器中运行命令
    [root@192 ~]# docker run -it nginx /bin/bash
    Unable to find image 'nginx:latest' locally
    latest: Pulling from library/nginx
    68ced04f60ab: Pull complete 
    28252775b295: Pull complete 
    a616aa3b0bf2: Pull complete 
    Digest: sha256:5dc91f5ad4941e09860f02fce957718093419a13fe9cc53db65a658cb6e6eaf5
    Status: Downloaded newer image for nginx:latest
    root@dcccf0f24f7e:/#
    [root@192 ~]# docker run -d nginx
    90c020105f038a736e377cb0798bd12c95634aa5dc1c9ae96d146d279b0543bf
    [root@192 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    90c020105f03        nginx               "nginx -g 'daemon of…"   49 seconds ago      Up 48 seconds       80/tcp              confident_feistel
    
    //重新启动容器
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    90c020105f03        nginx               "nginx -g 'daemon of…"   17 minutes ago      Up 17 minutes       80/tcp              confident_feistel
    [root@192 ~]# docker restart 90c020105f03 
    90c020105f03
    [root@192 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    90c020105f03        nginx               "nginx -g 'daemon of…"   17 minutes ago      Up 4 seconds        80/tcp              confident_feistel
    
    //停止一个或多个运行中的容器
    [root@192 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    90c020105f03        nginx               "nginx -g 'daemon of…"   17 minutes ago      Up 4 seconds        80/tcp              confident_feistel
    [root@192 ~]# 
    [root@192 ~]# docker stop 90c020105f03
    90c020105f03
    [root@192 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    
    //杀死一个或多个正在运行的容器
    [root@192 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    90c020105f03        nginx               "nginx -g 'daemon of…"   21 minutes ago      Up 16 seconds       80/tcp              confident_feistel
    [root@192 ~]# docker kill 90c020105f03
    90c020105f03
    [root@192 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    
    //删除一个或更多的容器
    [root@192 ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS               NAMES
    90c020105f03        nginx               "nginx -g 'daemon of…"   23 minutes ago      Exited (137) About a minute ago                       confident_feistel
    dcccf0f24f7e        nginx               "/bin/bash"              27 minutes ago      Exited (0) 25 minutes ago                             jolly_moore
    4fa4d1a800d2        tomcat              "/bin/bash"              48 minutes ago      Exited (255) 29 minutes ago       8080/tcp            mystifying_rosalind
    fdea496cc2f5        tomcat              "/bin/bash"              About an hour ago   Exited (0) 59 minutes ago                             upbeat_hamilton
    798adb9f3186        tomcat              "/bin/bash"              About an hour ago   Exited (0) About an hour ago                          sleepy_neumann
    [root@192 ~]# docker rm 798adb9f3186
    798adb9f3186
    [root@192 ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES
    90c020105f03        nginx               "nginx -g 'daemon of…"   24 minutes ago      Exited (137) 2 minutes ago                         confident_feistel
    dcccf0f24f7e        nginx               "/bin/bash"              28 minutes ago      Exited (0) 26 minutes ago                          jolly_moore
    4fa4d1a800d2        tomcat              "/bin/bash"              49 minutes ago      Exited (255) 29 minutes ago    8080/tcp            mystifying_rosalind
    fdea496cc2f5        tomcat              "/bin/bash"              About an hour ago   Exited (0) About an hour ago                       upbeat_hamilton
    
    //附加到运行容器
    [root@192 ~]# docker run -it -d nginx /bin/bash
    b73a949f6814db401f4c0c2516758771d00a36cae6fa2f612deab92714c532ac
    [root@192 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    b73a949f6814        nginx               "/bin/bash"         7 seconds ago       Up 5 seconds        80/tcp              quirky_murdock
    [root@192 ~]# docker attach b73a949f6814
    root@b73a949f6814:/# pwd
    /
    
    //在正在运行的容器中运行命令
    [root@192 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    d5c4aee2f928        nginx               "/bin/bash"         44 seconds ago      Up 43 seconds       80/tcp              wonderful_tereshkova
    [root@192 ~]# docker exec d5c4aee2f928 pwd
    /
    

    9.docker event state

  • 相关阅读:
    webstorm9.0.3 注册码
    SpringMVC 文件上传下载
    Nginx解决post请求405问题
    nginx配置Strict Transport Security
    MySQL修改max_allowed_packet
    ELK批量删除索引
    ELK出现unassigned_shards查看及删除
    Nagios监控mysql主从复制
    Linux DNS原理简介及配置
    root密码重置(Centos 7)
  • 原文地址:https://www.cnblogs.com/liping0826/p/12599742.html
Copyright © 2011-2022 走看看