docker 初探

Docker入门

0、基本介绍

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

image-20210605164438256

1、安装(centos)

image-20210605164518894

2、常用命令

  • 查看docker版本情况
    [root@izbp1bfxfdyulbdgtdansvz ~]# docker version
    Client: Docker Engine - Community
     Version:           19.03.12
     API version:       1.40
     Go version:        go1.13.10
     Git commit:        48a66213fe
     Built:             Mon Jun 22 15:46:54 2020
     OS/Arch:           linux/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          20.10.2
      API version:      1.41 (minimum version 1.12)
      Go version:       go1.13.15
      Git commit:       8891c58
      Built:            Mon Dec 28 16:16:13 2020
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          1.4.3
      GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
     runc:
      Version:          1.0.0-rc92
      GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
     docker-init:
      Version:          0.19.0
      GitCommit:        de40ad0
    [root@izbp1bfxfdyulbdgtdansvz ~]#
    
    
  • 从docker仓库检索镜像
    # docker search 镜像名
    [root@izbp1bfxfdyulbdgtdansvz ~]# docker search mysql
    NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    mysql                             MySQL is a widely used, open-source relation…   10380               [OK]
    mariadb                           MariaDB is a community-developed fork of MyS…   3848                [OK]
    mysql/mysql-server                Optimized MySQL Server Docker images. Create…   761                                     [OK]
    percona                           Percona Server is a fork of the MySQL relati…   519                 [OK]
    centos/mysql-57-centos7           MySQL 5.7 SQL database server                   87
    mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   79
    centurylink/mysql                 Image containing mysql. Optimized to be link…   59                                      [OK]
    bitnami/mysql                     Bitnami MySQL Docker Image                      47                                      [OK]
    deitch/mysql-backup               REPLACED! Please use  http://hub.docker.com/r …   41                                      [OK]
    prom/mysqld-exporter                                                              36                                      [OK]
    tutum/mysql                       Base docker image to run a MySQL database se…   35
    databack/mysql-backup             Back up mysql databases to... anywhere!         35
    schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic backup…   29                                      [OK]
    linuxserver/mysql                 A Mysql container, brought to you by LinuxSe…   27
    circleci/mysql                    MySQL is a widely used, open-source relation…   20
    centos/mysql-56-centos7           MySQL 5.6 SQL database server                   20
    mysql/mysql-router                MySQL Router provides transparent routing be…   17
    arey/mysql-client                 Run a MySQL client from a docker container      17                                      [OK]
    fradelg/mysql-cron-backup         MySQL/MariaDB database backup using cron tas…   10                                      [OK]
    openshift/mysql-55-centos7        DEPRECATED: A Centos7 based MySQL v5.5 image…   6
    devilbox/mysql                    Retagged MySQL, MariaDB and PerconaDB offici…   3
    ansibleplaybookbundle/mysql-apb   An APB which deploys RHSCL MySQL                2                                       [OK]
    widdpim/mysql-client              Dockerized MySQL Client (5.7) including Curl…   1                                       [OK]
    jelastic/mysql                    An image of the MySQL database server mainta…   1
    monasca/mysql-init                A minimal decoupled init container for mysql    0
    
    
  • docker pull 拉取镜像(默认最新版latest)
    # docker pull 镜像名:版本号
    [root@izbp1bfxfdyulbdgtdansvz ~]# docker pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    a076a628af6f: Already exists
    0732ab25fa22: Pull complete
    d7f36f6fe38f: Pull complete
    f72584a26f32: Pull complete
    7125e4df9063: Pull complete
    Digest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
    Status: Downloaded newer image for nginx:latest
    docker.io/library/nginx:latest
    [root@izbp1bfxfdyulbdgtdansvz ~]#
    
  • 查看当前本地镜像
    [root@izbp1bfxfdyulbdgtdansvz ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    wordpress           latest              a05fd91ad06a        9 days ago          550MB
    nginx               latest              f6d0b4767a6c        9 days ago          133MB
    mysql               5.7                 cc8775c0fe94        9 days ago          449MB
    centos              latest              300e315adb2f        6 weeks ago         209MB
    
  • 移除本地镜像
    # docker rmi 镜像id
    [root@izbp1bfxfdyulbdgtdansvz ~]# docker rmi f6d0b4767a6c
    Untagged: nginx:latest
    Untagged: nginx@sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
    Deleted: sha256:f6d0b4767a6c466c178bf718f99bea0d3742b26679081e52dbf8e0c7c4c42d74
    Deleted: sha256:4dfe71c4470c5920135f00af483556b09911b72547113512d36dc29bfc5f7445
    Deleted: sha256:3c90a0917c79b758d74b7040f62d17a7680cd14077f734330b1994a2985283b8
    Deleted: sha256:a1c538085c6f891424160d8db120ea093d4dda393e94cd4713e3fff3c82299b5
    Deleted: sha256:a3ee2510dcf02c980d7aff635909612006fd1662084d6225e52e769b984abeb5
    [root@izbp1bfxfdyulbdgtdansvz ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    wordpress           latest              a05fd91ad06a        9 days ago          550MB
    mysql               5.7                 cc8775c0fe94        9 days ago          449MB
    centos              latest              300e315adb2f        6 weeks ago         209MB
    [root@izbp1bfxfdyulbdgtdansvz ~]#
    
    
  • 使用镜像实例化容器
    • -i: 交互式操作。

    • -t: 终端。

    • centos: centos镜像。

    • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

      # docker run -it centos /bin/bash
      [root@izbp1bfxfdyulbdgtdansvz /]# docker run -it centos /bin/bash
      [root@b89b415c7413 /]# ls
      bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
      [root@b89b415c7413 /]#
      # 使用exit退出容器
      
  • 查看当前容器情况
    # docker ps
    [root@izbp1bfxfdyulbdgtdansvz /]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    06445fcfd1e5        wordpress:latest    "docker-entrypoint.s…"   3 days ago          Up 24 hours         0.0.0.0:8000->80/tcp   my_docker_blog_wordpress_1
    997e7e697331        mysql:5.7           "docker-entrypoint.s…"   3 days ago          Up 24 hours         3306/tcp, 33060/tcp    my_docker_blog_db_1
    
    [root@izbp1bfxfdyulbdgtdansvz /]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                  NAMES
    b89b415c7413        centos              "/bin/bash"              4 minutes ago       Exited (0) 3 minutes ago                          lucid_tereshkova
    06445fcfd1e5        wordpress:latest    "docker-entrypoint.s…"   3 days ago          Up 24 hours                0.0.0.0:8000->80/tcp   my_docker_blog_wordpress_1
    997e7e697331        mysql:5.7           "docker-entrypoint.s…"   3 days ago          Up 24 hours                3306/tcp, 33060/tcp    my_docker_blog_db_1
    
    
    
    # docker ps --help
    [root@izbp1bfxfdyulbdgtdansvz /]# docker ps --help
    
    Usage:  docker ps [OPTIONS]
    
    List containers
    
    Options:
      -a, --all             Show all containers (default shows just running)
      -f, --filter filter   Filter output based on conditions provided
          --format string   Pretty-print containers using a Go template
      -n, --last int        Show n last created containers (includes all states) (default -1)
      -l, --latest          Show the latest created container (includes all states)
          --no-trunc        Don't truncate output
      -q, --quiet           Only display numeric IDs
      -s, --size            Display total file sizes
    [root@izbp1bfxfdyulbdgtdansvz /]#
    
    
  • 后台实例化一个镜像
    #  docker run -itd --name centos-test centos /bin/bash
    [root@izbp1bfxfdyulbdgtdansvz /]# docker run -itd --name centos-test centos /bin/bash
    87c9509a6388a60d6f1d521dde15e7d3b4259ea04a0d436df9613f7687babff0
    [root@izbp1bfxfdyulbdgtdansvz /]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    87c9509a6388        centos              "/bin/bash"              23 seconds ago      Up 22 seconds                              centos-test
    06445fcfd1e5        wordpress:latest    "docker-entrypoint.s…"   3 days ago          Up 24 hours         0.0.0.0:8000->80/tcp   my_docker_blog_wordpress_1
    997e7e697331        mysql:5.7           "docker-entrypoint.s…"   3 days ago          Up 24 hours         3306/tcp, 33060/tcp    my_docker_blog_db_1
    [root@izbp1bfxfdyulbdgtdansvz /]#
    
  • 进入后台运行的一个容器
    • docker attach CONTAINER ID 退出会导致容器停止

    • docker exec 退出容器不停止 推荐使用

       # docker exec -it 6e50dc99c623 /bin/bash
      
  • 停止一个容器
    docker stop CONTAINER ID
    
  • 重启一个容器
    docker restart CONTAINER ID
    
  • 删除一个容器
    docker rm CONTAINER ID
    
  • 清理所用已经停止的容器
    docker container prune
    
  • 查看Docker 容器的配置和状态信息
    # docker inspect <CONTAINER ID>[root@izbp1bfxfdyulbdgtdansvz /]# docker inspect  997e7e697331[    {        "Id": "997e7e697331ca8f460fd92abb769c5f8b740a6f404dd2ec657c64f978963b2c",        "Created": "2021-01-18T08:26:57.365608744Z",        "Path": "docker-entrypoint.sh",        "Args": [            "mysqld"        ],        "State": {            "Status": "running",            "Running": true,            "Paused": false,            "Restarting": false,            "OOMKilled": false,            "Dead": false,            "Pid": 22221,            "ExitCode": 0,            "Error": "",            "StartedAt": "2021-01-21T04:50:26.898769281Z",            "FinishedAt": "2021-01-21T04:50:10.24839982Z"        },        "Image": "sha256:cc8775c0fe94cd6cbfc494688d09b078cda9bced9d9324d5c28bddf032344fc3",....
    
  • 拷贝命令(从容器中cp到宿主机)

    # docker cp 容器id:/file-path  local-path
    

3、练习

  • mysql

     docker run -d --name mysql-5-7 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306  mysql:5.7
    
  • nginx
    # 拉取镜像[root@izbp1bfxfdyulbdgtdansvz ~]# docker pull nginxUsing default tag: latestlatest: Pulling from library/nginxa076a628af6f: Already exists0732ab25fa22: Pull completed7f36f6fe38f: Pull completef72584a26f32: Pull complete7125e4df9063: Pull completeDigest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aaStatus: Downloaded newer image for nginx:latestdocker.io/library/nginx:latest# 启动镜像 docker run -d --name my-nginx -p 宿主机端口:镜像内部端口 [root@izbp1bfxfdyulbdgtdansvz sbin]#  docker run -d --name my-nginx -p 8888:80 nginx:latest79531f01b2bb4b09cd8f16cabc7627a92a4c1d5115dd6fad89d1b8b03c5a4e4c[root@izbp1bfxfdyulbdgtdansvz sbin]## 访问测试[root@izbp1bfxfdyulbdgtdansvz sbin]# curl localhost:8888<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>    body {        width: 35em;        margin: 0 auto;        font-family: Tahoma, Verdana, Arial, sans-serif;    }</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>[root@izbp1bfxfdyulbdgtdansvz sbin]#
    
  • tomcat
    # 拉取[root@izbp1bfxfdyulbdgtdansvz sbin]# docker pull tomcat:9.09.0: Pulling from library/tomcatb9a857cbf04d: Pull completed557ee20540b: Pull complete3b9ca4f00c2e: Pull complete667fd949ed93: Pull complete661d3b55f657: Pull complete511ef4338a0b: Pull completea56db448fefe: Pull complete00612a99c7dc: Pull complete326f9601c512: Pull completec547db74f1e1: Pull completeDigest: sha256:94cc18203335e400dbafcd0633f33c53663b1c1012a13bcad58cced9cd9d1305Status: Downloaded newer image for tomcat:9.0docker.io/library/tomcat:9.0# 后台启动[root@izbp1bfxfdyulbdgtdansvz sbin]# docker run -itd --name my-tomcat -p 8889:8080 tomcat:9.00a0232f6910f377f33bc151f0b92256a8afdfb2c63fd272d17a23d05b9068127# 进入容器[root@izbp1bfxfdyulbdgtdansvz sbin]# docker exec -it my-tomcat /bin/bashroot@0a0232f6910f:/usr/local/tomcat## 复制文件root@0a0232f6910f:/usr/local/tomcat# cp -r webapps.dist/* webapps/# 测试访问
    
  • es+kibana
    
    
  • 图形化portainer
    docker run -d -p 8899:9000  --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
    

    image-20210605164554805

4、构建镜像

​ 当docker仓库的镜像不能满足需要了,就需要自己构建镜像

  • docker镜像加载原理
  • 分层理解
  • commit镜像
posted @ 2021-06-05 17:06  小孟随笔  阅读(344)  评论(0)    收藏  举报