zoukankan      html  css  js  c++  java
  • Docker的基本操作与示例

    一、RunC

      RunC是一个由OCI(Open Container Initiative)制定的标准化轻量容器运行工具。OCI是专门致力于制定容器格式和运行时开放的工业化标准的组织。那容器标准化后Docker和RunC有什么关系和区别呢?OCI 定义了容器运行时标准,runC 是 Docker 按照开放容器格式标准(OCF, Open Container Format)制定的一种具体实现。runC 是从 Docker 的 libcontainer 中迁移而来的,实现了容器启停、资源隔离等功能。Docker 默认提供了 docker-runc 实现,事实上,通过 containerd 的封装,可以在 Docker Daemon 启动的时候指定 runc 的实现。简单的说Docker并不完全等同于容器,它更像是一个容器的管理工具。

    二、安装Docker

    1.Docker依赖的环境:

      64 bits CPU

      Linux Kernel 3.10+

      Linux Kernel cgroups(控制组) namespaces(名称空间)

    2.安装Docker

      国外Docker官方的镜像速度可能会很慢,建议使用清华大学提供的镜像进行安装。配置好yum仓库后就能使用yum进行Docker的安装了:

    ~]# yum install docker-ce

    3.Docker镜像的获取

      安装成功后就可以启动Docker了,对于docker-ce,Docker的默认配置文件是一个json格式的文件,默认是不存在的,需要自己来创建,路径为: /etc/docker/daemon.json 。这个配置文件的用处就是配置指定Docker镜像的来源。中国有很多Docker镜像加速源,如docker cn、阿里云、中国科技大学等。若要使用docker cn的加速则创建并修改配置文件并启动Docker:

    mkdir -p /etc/docker
    vim /etc/docker/daemon.json
    {
    "registry-mirrors": ["https://registry.docker-cn.com"]
    }
    systemctl start docker.service

    4.Docker的常用命令

    Usage:  docker [OPTIONS] COMMAND
    
    A self-sufficient runtime for containers
    
    Options:
          --config string      Location of client config files (default
                               "/root/.docker")
      -D, --debug              Enable debug mode
      -H, --host list          Daemon socket(s) to connect to
      -l, --log-level string   Set the logging level
                               ("debug"|"info"|"warn"|"error"|"fatal")
                               (default "info")
          --tls                Use TLS; implied by --tlsverify
          --tlscacert string   Trust certs signed only by this CA (default
                               "/root/.docker/ca.pem")
          --tlscert string     Path to TLS certificate file (default
                               "/root/.docker/cert.pem")
          --tlskey string      Path to TLS key file (default
                               "/root/.docker/key.pem")
          --tlsverify          Use TLS and verify the remote
      -v, --version            Print version information and quit
    
    Management Commands:
      builder     Manage builds
      config      Manage Docker configs
      container   Manage containers
      engine      Manage the docker engine
      image       Manage images
      network     Manage networks
      node        Manage Swarm nodes
      plugin      Manage plugins
      secret      Manage Docker secrets
      service     Manage services
      stack       Manage Docker stacks
      swarm       Manage Swarm
      system      Manage Docker
      trust       Manage trust on Docker images
      volume      Manage volumes

      查看docker版本 docker version 和 docker info :

    [root@server0 ]# docker version 
    Client:
     Version:           18.09.1
     API version:       1.39
     Go version:        go1.10.6
     Git commit:        4c52b90
     Built:             Wed Jan  9 19:35:01 2019
     OS/Arch:           linux/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          18.09.1
      API version:      1.39 (minimum version 1.12)
      Go version:       go1.10.6
      Git commit:       4c52b90
      Built:            Wed Jan  9 19:06:30 2019
      OS/Arch:          linux/amd64
      Experimental:     false

      常用命令:

    docker search :搜索镜像
    docker image pull :将镜像拉到本地
    docker image ls :查看镜像列表
    docker image rm :删除镜像
    docker container create :创建一个容器,不会启动。
    docker container run :运行一个容器
    docker container ls :显示容器列表
    docker container ps :显示正在运行中的容器,-a显示运行和没有运行的。
    docker container start :启动一个容器。
    docker container stop :停止一个容器。
    docker container kill :kill一个容器。
    docker container rm :删除一个容器。
    docker container inspect :用于获取容器/镜像的元数据
    docker log :查看容器日志

      例:拉取一个nginx镜像:

    ]# docker image pull nginx:1.14-alpine #alpine为最精简版本的意思
    ]# docker image ls #查看本地镜像
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               1.14-alpine         c5b6f731fbc0        3 weeks ago         17.7MB

      PS:Busybox是一个体积很小的linux发行版,有着很独特的性能,可以用它来实现linux上上百个常用命令。

    5.运行一个容器

      运行一个容器的命令格式为: docker container run [OPTIONS] IMAGE [COMMAND] [ARG...] 

    -i :交互式访问。
    -t :运行为交互式接口。
    -m :为容器取一个名字。
    -d :启动后直接运行在后台。

      例1:运行一个busybox镜像的容器:

    ~]# docker container run --name box1 -it busybox:latest        
    / # ls
    bin   dev   etc   home  proc  root  sys   tmp   usr   var
    / # 

      例2:启动一个nginx容器:

    ]# docker container run --name nginx1 -d nginx:1.14-alpine
    39b443c5cfb1fc81ee605c7e41b718303855efddb2f470ce5297665df2c02d63

      PS:这里一定要注意在容器中跑任何程序一定不能让程序在容器中的后台运行,这相当于启动便终止了容器。

      绕过创建好的nginx容器查看它的状态:

    ]# docker container exec -it nginx1 /bin/sh
  • 相关阅读:
    https://github.com/zyq025/DotNetCoreStudyDemo/blob/main/HttpClientConsoleDemo/Program.cs
    NETCORE TASK多线程的使用
    .NetCore简单封装基于IHttpClientFactory的HttpClient请求
    Netcore中简单使用MemoryCache
    LinQ To Object 基本用法
    SelectMany 和 Select的区别
    List 转换成字符串
    【转】C#中enum的总结
    发个服务端包裹返回值的Response类和用法
    微软企业库 Microsoft Enterprise Library
  • 原文地址:https://www.cnblogs.com/readygood/p/10283078.html
Copyright © 2011-2022 走看看