zoukankan      html  css  js  c++  java
  • 2. Docker基础用法

    Docker 架构

    docker 是C/S架构的软件,无论是client端还是Server端都是由 docker 一个程序提供,这个程序有很多子程序。

    docker daemon 就是其中一个子程序,当运行 docker daemon 时,主机就运行成一个守护进程服务器,它可以监听在某个套接字上,为了安全,默认只提供 Unix sock 文件的套接字。

    docker 支持三种类型套接字:

    1. ipv4套接字
    2. ipv6套接字
    3. Unix sock套接字

    DOCKER_HOSTS 是真正运行容器的主机,Container : 容器,Images: 镜像

    Clicent -> DOCKER_HOST 使用 https协议

    DOCKER_HOST -> Registry 使用https协议

    docker 有企业版和社区版之分:

    • docker-ce 社区版
    • docker-ee 企业版

    仓库

    一个 docker registry 上有三种功能:

    1. 提供镜像存储的仓库
    2. 提供用户来获取镜像的时的认证
    3. 所有镜像索引搜索

    一般来说,一个应用程序作为一个仓库。而通过 镜像名:标签 的形式来描述一个具体的镜像文件。

    如果在获取镜像时,只给出了镜像名而没有提供标签,则获取最新的镜像文件(latest 会指向仓库中最新的版本),一个镜像有多个标签。docker 镜像是只读文件,不允许任何修改。

    仓库就是用来存放镜像的, 镜像和容器的关系,容器是基于镜像创建的,就像进程和程序的关系。
    镜像是静态的不会运行。容器是有生命周期的,类似与进程。

    任何一个 resfull风格的API都是可以进行增删改查的,docker也不例外

    images、containers、networks、volumes、plugins 都是可以进行增删改查的。

    安装和使用docker

    安装docker要求:

    • 64 bits CPU
    • Linux Kernel 3.10+
    • Linux Kernel cgroups and namespaces

    为了更好的支持docker 推荐使用 Centos7

    安装docker-ce

    #wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    #yum install docker-ce -y
    #rpm -ql docker-ce
    /usr/bin/docker-init
    /usr/bin/docker-proxy
    /usr/bin/dockerd
    /usr/lib/systemd/system/docker.service
    /usr/lib/systemd/system/docker.socket
    
    === docker 加速 ===
    #mkdir /etc/docker
    #vim /etc/docker/daemon.json
    {
        "registry-mirrors": [
            "https://registry.docker-cn.com",
            "http://hub-mirror.c.163.com"
        ]
    }
    #systemctl start docker
    可通过 docker info  查看是否生效
    

    查看docker版本

    #docker version
    Client: Docker Engine - Community
     Version:           19.03.13
     API version:       1.40
     Go version:        go1.13.15
     Git commit:        4484c46d9d
     Built:             Wed Sep 16 17:03:45 2020
     OS/Arch:           linux/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          19.03.13
      API version:      1.40 (minimum version 1.12)
      Go version:       go1.13.15
      Git commit:       4484c46d9d
      Built:            Wed Sep 16 17:02:21 2020
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          1.3.7
      GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
     runc:
      Version:          1.0.0-rc10
      GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
     docker-init:
      Version:          0.18.0
      GitCommit:        fec3683
    

    查看docker详细信息

    #docker info
    

    常用操作命令

    常见示例:

    === 下载镜像到本地 ===
    #docker pull nginx:alpine
    
    === 查看镜像 ===
    #docker images
    
    === 查看docker关于容器的操作 ===
    #docker container --help
    
    === 查看docker网络 ===
    #docker network ls
    
    === 启动一个最基本的容器 ===
    #docker run --name b1 -it busybox:latest
    
    === 查看容器b1的详细信息 ===
    #docker inspect b1
    
    === 启动停止的容器 ===
    #docker start -ai b1
    
    === 启动容器并运行在后台 ===
    #docker run --name web1 -d nginx:alpine
    
    === 绕过容器边界进入容器 ===
    #docker exec -it kvstor1 /bin/sh
    
    === 查看容器日志 ===
    #docker logs web1
    

    docker 容器状态转换各常用命令

    docker0 是 nat 桥接模式。

    一个容器只是为了运行一个程序,在容器中的程序不能跑在后台,否则一启动容器就终止。

    因为docker容器仅在它的进程(PID为1)运行时,会保持运行。如果1号进程退出了, docker容器也就退出了。

  • 相关阅读:
    创意吃鱼法
    雅礼上课
    坏掉的项链Broken Necklace
    2018-04-02练习
    【11月12日】Hadoop架构
    【11月10日】Redis 主从复制技术
    【11月10日】Redis 缓存系统常见问题及解决方案
    【11月9日】Redis 持久化
    【11月7日】Redis核心对象和数据类型
    【11月7日】Redis简介
  • 原文地址:https://www.cnblogs.com/hukey/p/14056945.html
Copyright © 2011-2022 走看看