• docker基础用法


    docker定义

    docker中的容器演变

    • lxc --> libcontainer --> runC

    OCI&OCF

    OCI

    open container-initiative:旨在围绕容器格式和运行时制定一个开放的工业化标准

    规范:

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

    OCF

    Open Container Format

    根据OCI规范生成和运行容器的命令行工具

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

    docker架构

    • 创建build:客户端请求,docker主机守护进程接受处理成镜像
    • 拉取pull:客户端请求,docker主机守护进程接收,调用网络镜像仓库资源下载至本地镜像库
    • 运行run:客户端请求,docker主机守护进程接收,调用本地镜像生成容器

    docker镜像与镜像仓库


    镜像仓库Registry,存放镜像的地方。镜像命名以应用名称决定,通过标签(tag)来细分不同版本

    镜像-->程序(都是静态)
    容器-->进程(都是动态)

    docker对象

    当你使用docker时,你会创建或使用镜像,容器,网络,卷组,插件和其他对象

    • 镜像
      • 一个带有创建docker容器介绍的只读模板镜像
      • 通常,一个镜像在另一个镜像基础建立的,还带有额外的定制
      • 你也可以创建一个自己的镜像或者你也可以用别人写好的并且在注册中心出版了的
    • 容器
      • 一个容器是可运行实例的镜像
      • 您能使用dockerAPI或命令行来创建,运行,停止,移动,或删除一个容器
      • 您能将容器连接至多个网络,将存储联系起来,甚至在当前状态下创建一个新镜像

    docker安装

    安装

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

    启动守护进程

    [root@node0 yum.repos.d]# systemctl enable --now docker
    Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
    [root@node0 yum.repos.d]# ls /etc/docker/
    key.json
    
    

    docker加速

    通过修改/etc/docker/daemon.json中源网址来进行加速(文件默认不存在,创建)

    • docker cn
    • 中国科技大学加速器
    • 阿里云加速器(注册阿里云账户加速https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    常用命令

    命令 功能
    docker search Search the Docker Hub for images
    docker pull Pull an image or a repository from a registry
    docker images List images
    docker create Create a new conntainer
    docker start Start one or more stopped containers
    docker run Run a command in a new container
    docker attach Attach to a runninng container
    docker ps List containers
    docker logs Fetch the logs of a container
    docker restart Restart a container
    docker stop Stop one or more running containers
    docker kill Kill one or more running containers
    docker rm Remove onne or more containers
    docker exec Run a command in a running container
    docker info Display system-wide information
    docker inspect Return low-level information on Docker objects
    • search搜索
    //最好选用官方
    [root@node0 ~]# docker search httpd
    NAME                                    DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    httpd                                   The Apache HTTP Server Project                  3371      [OK]       
    centos/httpd-24-centos7                 Platform for running Apache httpd 2.4 or bui…   36                   
    centos/httpd                                                                            33                   [OK]
    
    
    
    • pull拉取(下载)
    [root@node0 ~]# docker pull httpd
    Using default tag: latest
    latest: Pulling from library/httpd
    a076a628af6f: Pull complete 
    e444656f7792: Pull complete 
    0ec35e191b09: Pull complete 
    4aad5d8db1a6: Pull complete 
    eb1da3ea630f: Pull complete 
    Digest: sha256:2fab99fb3b1c7ddfa99d7dc55de8dad0a62dbe3e7c605d78ecbdf2c6c49fd636
    Status: Downloaded newer image for httpd:latest
    docker.io/library/httpd:latest
    
    
    • images(查看拉取的镜像)
    [root@node0 ~]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    httpd        latest    683a7aad17d3   6 weeks ago   138MB
    
    
    • create(创建新容器)
    [root@node0 ~]# docker create httpd
    940236c68b6df3516f79f354caeb86d4e06190a951bb731d529baa6b103e520c
    [root@node0 ~]# docker container ls -a
    CONTAINER ID   IMAGE     COMMAND              CREATED              STATUS                        PORTS     NAMES
    940236c68b6d   httpd     "httpd-foreground"   About a minute ago   Created                                 cranky_gauss
    
    
    • start(运行容器)
    [root@node0 ~]# docker start 940236c68b6d
    940236c68b6d
    [root@node0 ~]# docker container ls -a
    CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS                        PORTS     NAMES
    940236c68b6d   httpd     "httpd-foreground"   2 minutes ago   Up 5 seconds                  80/tcp    cranky_gauss
    
    
    • restart重启容器
    [root@node0 ~]# docker restart 940236c68b6d
    940236c68b6d
    
    
    • ps 列出运行的容器
    [root@node0 ~]# docker start 940236c68b6d
    940236c68b6d
    [root@node0 ~]# docker ps 
    CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS        PORTS     NAMES
    940236c68b6d   httpd     "httpd-foreground"   27 minutes ago   Up 1 second   80/tcp    cranky_gauss
    
    
    • stop 停止运行一个或多个的容器
    [root@node0 ~]# docker stop 940236c68b6d
    940236c68b6d
    [root@node0 ~]# docker ps -a
    CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS                        PORTS     NAMES
    940236c68b6d   httpd     "httpd-foreground"   26 minutes ago   Exited (0) 7 seconds ago                cranky_gauss
    
    
    • kill 杀掉一个或多个容器
    [root@node0 ~]# docker kill 940236c68b6d
    940236c68b6d
    [root@node0 ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    
    
    • rm删除容器
    //运行中最好不要删除,rm -f来实现,一般停止容器后删除
    [root@node0 ~]# docker ps -a
    CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS                           PORTS     NAMES
    940236c68b6d   httpd     "httpd-foreground"   37 minutes ago   Exited (137) 3 minutes ago                 cranky_gauss
    [root@node0 ~]# docker rm 940236c68b6d
    940236c68b6d
    [root@node0 ~]# docker ps -a
    CONTAINER ID   IMAGE     COMMAND              CREATED        STATUS                           PORTS     NAMES
    //镜像删除 rmi(必须停止所有以该镜像为基础的容器才能删除)
    [root@node0 ~]# docker rmi httpd:latest 
    Untagged: httpd:latest
    Untagged: httpd@sha256:2fab99fb3b1c7ddfa99d7dc55de8dad0a62dbe3e7c605d78ecbdf2c6c49fd636
    Deleted: sha256:683a7aad17d3baed344799b397c55a9ccbc3ddabf0d077862739585ee76d4cb3
    Deleted: sha256:fad4575f3e896bec98eda427846cb6d3cf41db97b121198c2ce799ecbf65d9e5
    Deleted: sha256:2559e696bacdd5c33db647e52432638751e7dfaf6d9f1c5e1b40fa751151160b
    Deleted: sha256:677fc5a4299ebc25eace2392ffe0c97fd729e720e6db38960a04a0695d25347e
    Deleted: sha256:e17bc1f3292461da7df9d2ba962a62e2eed6d79c7bcbf51c672a922a99c5ba59
    Deleted: sha256:cb42413394c4059335228c137fe884ff3ab8946a014014309676c25e3ac86864
    
    
    
    • logs查看容器日志
    [root@node0 ~]# docker logs 1c7a4017f86a
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
    [Fri Feb 26 04:07:33.245735 2021] [mpm_event:notice] [pid 1:tid 140197445903488] AH00489: Apache/2.4.46 (Unix) configured -- resuming normal operations
    [Fri Feb 26 04:07:33.245950 2021] [core:notice] [pid 1:tid 140197445903488] AH00094: Command line: 'httpd -D FOREGROUND'
    
    
    • inspcet查看容器对象低级信息
    [root@node0 ~]# docker inspect 1c7a4017f86a
    [
        {
            "Id": "1c7a4017f86a15e4971c894dd2ea7ccad1889e0328e197e1035ea84e0dbd8da8",
            "Created": "2021-02-26T04:06:45.410712983Z",
            "Path": "httpd-foreground",
            "Args": [],
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 4379,
    
    
    • info查看系统信息
    [root@node0 ~]# 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)
    
    //验证容器是否成功时,以apache服务举例,可用info命令查看ip,主机访问ip
    [root@node0 ~]# curl 172.17.0.2
    <html><body><h1>It works!</h1></body></html>
    
    
    • run在新容器运行命令
    //-d 后台运行
    [root@node0 ~]# docker run -d httpd:latest 
    0c8ca2b1c1a1eb0967542a3aa243bfbdc6c3409fcee964baa2d50fb7223df568
    [root@node0 ~]# docker ps
    CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS          PORTS     NAMES
    0c8ca2b1c1a1   httpd:latest   "httpd-foreground"   38 seconds ago   Up 37 seconds   80/tcp    beautiful_blackburn
    
    
    • exec进入容器内部执行命令
      docker exec -it containerid COMMAND
    [root@node0 ~]# docker exec -it 1c7a4017f86a /bin/bash
    root@1c7a4017f86a:/usr/local/apache2# ls
    bin  build  cgi-bin  conf  error  htdocs  icons  include  logs	modules
    
    
    • attach进入容器(只能看日志,当前终端无法操作)
    [root@node0 ~]# docker attach e72676fd0383
    172.17.0.1 - - [26/Feb/2021:04:36:10 +0000] "GET / HTTP/1.1" 200 45
    
    

    docker事件状态

  • 相关阅读:
    InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)
    Java C# MD5 加密串一致性
    1.进入debug模式(基础知识列表)
    wcf 多个节点名出错
    Axis2 java调用.net webservice接口的问题(郑州就维)
    Axis2联接WCF(比较完整的版本)
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法
    C#中OpenFileDialog的使用
    使用OLEDB读取不同版本Excel数据的连接字符串设置
    C#初始化数组的三种方式
  • 原文地址:https://www.cnblogs.com/fangxinxin/p/14451740.html
Copyright © 2020-2023  润新知