zoukankan      html  css  js  c++  java
  • 初识docker 小记

    一. docker与虚拟机的区别

    1.  虚拟机之间 系统级别的隔离

    2. docker容器之间 进程级别的隔离

    3. docker仓库地址:https://hub.docker.com

    二. docker安装

    1、查看系统内核版本号(至少是3.10及以上版本)

    [root@docker /]# uname -a
    Linux docker 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    

    2、安装依赖软件

    [root@docker /]#  yum install -y yum-utils device-mapper-persistent-data lvm2
    

    3、添加docker镜像源

    [root@docker /]#  yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    [root@docker /]# ll /etc/yum.repos.d/
    total 12
    -rw-r--r--. 1 root root 2523 Aug  5 20:09 CentOS-Base.repo
    -rw-r--r--  1 root root 2640 Mar 16  2020 docker-ce.repo
    -rw-r--r--. 1 root root  664 Aug  5 20:09 epel.repo
    

    4、安装docker

    [root@docker /]#  yum install docker-ce -y
    

    5、设置开机自启动

    [root@docker /]# systemctl enable --now docker
    Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

    6、验证是否安装成功【输入docker后有内容输出即默认安装成功】

    [root@docker /]# docker
    Usage:  docker [OPTIONS] COMMAND
    A self-sufficient runtime for containers
    

    7、设置加速器

    # 打开阿里云官网
    
    # 选择 产品 -> 容器与中间件 -> 容器与镜像服务ACR -> 管理控制台 -> 镜像加速器 
    
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://8mh75mhz.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    8、docker第一个案例

    [root@docker /]# docker run -d -P --rm nginx
    Unable to find image 'nginx:latest' locally
    latest: Pulling from library/nginx
    6ec7b7d162b2: Pull complete 
    cb420a90068e: Pull complete 
    2766c0bf2b07: Pull complete 
    e05167b6a99d: Pull complete 
    70ac9d795e79: Pull complete 
    Digest: sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9
    Status: Downloaded newer image for nginx:latest
    c5938fd6c0f392b429e12a5ea5ba7ed1e27befe2dde1247c843f70ca3d9db138
    [root@docker /]# docker ps
    CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS                   NAMES
    c5938fd6c0f3   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:49153->80/tcp   naughty_buck
    

    镜像

    1、下载镜像

    格式:
    	docker pull [指定仓库URL]/[命名空间]/[镜像名称]:[镜像版本ID]
    	默认情况下:镜像URL是:docker.io, 命名空间名称:library
    实例:
    [root@docker ~]# docker pull centos:7.9.2009
    7.9.2009: Pulling from library/centos
    2d473b07cdd5: Pull complete 
    Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
    Status: Downloaded newer image for centos:7.9.2009
    docker.io/library/centos:7.9.2009
    

    2、查看镜像列表

    格式:
    	docker image ls 或者 docker images
    
    实例:
    [root@docker ~]# docker image ls
    REPOSITORY                   TAG        IMAGE ID       CREATED         SIZE
    nginx                        latest     ae2feff98a0c   3 weeks ago     133MB
    centos                       7.9.2009   8652b9f0cb4c   8 weeks ago     204MB
    alvinos/elasticsearch-head   latest     78b79497bed5   12 months ago   1.11GB
    
    参数:
    -a :        列出系统临时镜像文件
    --digests:  列出系统镜像摘要
    -q :        只显示镜像ID
    

    3、查看镜像详细信息

    格式:
    	docker inspect [镜像名称]:[版本号] | [镜像ID]
    
    实例:
    [root@docker ~]# docker inspect ae2feff98a0c
    [
        {
            "Id": "sha256:ae2feff98a0cc5095d97c6c283dcd33090770c76d63877caa99aefbbe4343bdd",
            "RepoTags": [
                "nginx:latest"
            ],
    ...
    
    
    

    4、镜像tag (取别名)

    格式
    	docker tag [镜像ID] [别名]:[版本号]
    
    示例:
    [root@docker ~]# docker tag ae2feff98a0c  registry.cn-hangzhou.aliyuncs.com/alvinos/test-nginx:v1
    [root@docker ~]# docker images
    REPOSITORY                                             TAG        IMAGE ID       CREATED         SIZE
    registry.cn-hangzhou.aliyuncs.com/alvinos/test-nginx   v1         ae2feff98a0c   3 weeks ago     133MB
    nginx                                                  latest     ae2feff98a0c   3 weeks ago     133MB
    
    

    5、推送远程仓库

    格式:
    	docker push [镜像名称及版本号]
    
    示例:
    [root@docker ~]# docker push registry.cn-hangzhou.aliyuncs.com/alvinos/test-nginx:v1
    The push refers to repository [registry.cn-hangzhou.aliyuncs.com/alvinos/test-nginx]
    4eaf0ea085df: Pushed 
    2c7498eef94a: Pushed 
    7d2b207c2679: Pushed 
    5c4e5adc71a8: Pushed 
    87c8a1d8f54f: Pushed 
    v1: digest: sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71 size: 1362
    

    6、登录远程仓库

    格式:
    	docker login [参数] [仓库URL(默认使用docker.io)]
    
    示例:
    [root@docker ~]# docker login registry.cn-hangzhou.aliyuncs.com
    Username: yangyang091022
    Password: 
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded
    

    7、查看镜像构建历史

    格式:
    	docker history [镜像名称或ID]
    示例:
    [root@docker /etc/docker]# docker history alvinos/elasticsearch-head
    IMAGE          CREATED         CREATED BY                                      SIZE      COMMENT
    78b79497bed5   12 months ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "grun…   0B        
    <missing>      12 months ago   /bin/sh -c #(nop)  EXPOSE 9100                  0B        
    <missing>      12 months ago   /bin/sh -c #(nop) COPY dir:14aab6a4b7736a5f8…   29.1MB  
    
    作用:
    查看镜像构建步骤。
    

    8、搜索镜像

    格式:
    	docker search [参数] [镜像名称]
    示例
    [root@alvin-test-os ~]# docker search redis
    NAME                DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    redis               Redis is an open source key-value store that…   8779                [OK]
    
    解释:
    NAME :        镜像名称
    DESCRIPTION : 镜像简介
    STARS :       收藏数
    OFFICIAL :    是否是官方镜像
    AUTOMATED :   是否是自构建镜像
    
    参数:
    -f :            过滤 is-official=true
    --no-trunc :    不截断输出
    --limit :       设置查询的条数 

    9、删除镜像

    格式:
    	docker rmi [镜像名称或ID]
    
    示例:
    [root@docker /etc/docker]# docker rmi centos:7.9.2009
    Untagged: centos:7.9.2009
    Untagged: centos@sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
    Deleted: sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf
    Deleted: sha256:174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02
    
    参数:
    -f :     强制删除镜像
    

    10、清理镜像

    格式:
    	docker image prune [参数]
    示例:
    [root@docker /etc/docker]# docker image prune -a
    WARNING! This will remove all images without at least one container associated to them.
    Are you sure you want to continue? [y/N] y
    Deleted Images:
    untagged: registry.cn-hangzhou.aliyuncs.com/k8sos/coredns:1.8.0
    untagged: registry.cn-hangzhou.aliyuncs.com/k8sos/coredns@sha256:242d440e3192ffbcecd40e9536891f4d9be46a650363f3a004497c2070f96f5a
    deleted: sha256:bfe3a36ebd2528b454be6aebece806db5b40407b833e2af9617bf39afaff8c16
    deleted: sha256:a597a889e48ff93963ece86ec4c1d643548a006fc736d36459d2b3fe3c089ba9
    deleted: sha256:225df95e717ceb672de0e45aa49f352eace21512240205972aca0fccc9612722
    
    参数:
    -a :     删除所有未被使用的镜像
    -f :     是否需要提示
    

    11、保存镜像

    commit保存镜像针对的是保存容器。
    
    格式:
    	docker commit [参数] [容器ID] [镜像名称:版本号]
    示例:
    [root@docker /etc/docker]# docker commit -m '这是一个CentOS' -a "xxx" -p d92bbdfc3273 
    sha256:a6980fb4e70c206b9e9ce03d4cb8e03bf0a2af305aca0c4468e841c9c0ad2e0d
    [root@docker /etc/docker]# docker images
    REPOSITORY                                             TAG       IMAGE ID       CREATED         SIZE
    <none>                                                 <none>    a6980fb4e70c   4 seconds ago   209MB
    
    参数:
    -m : 简介信息
    -a : 指定作者
    -p : 保存镜像时,镜像暂停运行(挂起)
    

    12、镜像的导入与导出

    # 使用 export 和 import
    针对是容器
    
    export
    格式:
    	docker export [容器名称] > [压缩包名称]
    
    示例
    [root@docker /etc/docker]# docker export c5938fd6c0f3 > nginx.tar
    [root@docker /etc/docker]# ll
    -rw-r--r-- 1 root root 135404032 Jan 11 19:56 nginx.tar
    
    import
    格式:
    	docker import [压缩包名称] [镜像名称]
    示例
    [root@docker ~]# docker images
    REPOSITORY                                             TAG       IMAGE ID       CREATED         SIZE
    test/nginx                                             v1        fcd61543c224   6 seconds ago   131MB
    
    # 使用 load 和 save
    针对的是镜像
    
    save
    格式:
    	docker save [镜像ID...] > [压缩包名称]
    
    注:使用镜像ID保存镜像时,导入时没有名称
    
    示例:
    [root@docker ~]# docker save alvinos/elasticsearch-head:latest > head.tar
    [root@docker ~]# ll
    -rw-r--r--  1 root root 1152956416 Jan 11 20:01 head.tar
    
    load
    格式:
    	docker load < [压缩包名称]
    示例
    [root@docker ~]# docker load < head.tar 
    ebac2fb2022f: Loading layer [==================================================>]  29.26MB/29.26MB
    Loaded image: alvinos/elasticsearch-head:latest
    
    # 两种保存方式有哪些不同
        1、针对的对象不一样(export和import针对的是容器,save和load针对的是镜像)
        2、save是完全保存, export是部分保存
        3、save保存的体积稍微大一些
        4、save保存的是原生的镜像,export保存成一个新的镜像
        5、save保存无法修改名称,export可以修改名称
        6、save可以同时保存多个镜像,export不可以同时保存多个容器
        7、save应用场景在部署或者需要追溯的场景中,export应用场景在作为基础镜像时使用
     
     
  • 相关阅读:
    链堆栈的实现
    关于HyperLink的NavigateUrl属性的链接地址参数设置
    //yield return用于无缝实现迭代模式。
    NUnit的使用
    非常不错的数据访问架构
    Dictionary应用
    针对数据分析没态度的几句牢骚
    微软算法面试题(4)
    程序员面试题精选100题(60)判断二叉树是不是平衡的
    C++设计模式单件
  • 原文地址:https://www.cnblogs.com/wzj-qwerty/p/14710161.html
Copyright © 2011-2022 走看看