6.linux之docker安装使用

一、docker安装


注:docker架构

  镜像:相当于类,是一个最小root系统文件

 docker –version
 Docker version 18.09.0

                1.进入docker 目录

        root@Rightsec:~# cd /var/lib/docker
        root@Rightsec:/var/lib/docker# ls
          builder  buildkit  containers  image  network  overlay2  plugins  runtimes  swarm  tmp  trust  volumes

                2.进入containers,每个序列号都是一个image

        root@Rightsec:/var/lib/docker# cd containers/
        root@Rightsec:/var/lib/docker/containers# ls
          e36d800f663b626aef2c625c48c353555d9b203e13e7e49093d15be2f3a0fb6e

              3.进入镜像可以看到

         root@Rightsec:/var/lib/docker/containers# cd e36d800f663b626aef2c625c48c353555d9b203e13e7e49093d15be2f3a0fb6e/
         root@Rightsec:/var/lib/docker/containers/e36d800f663b626aef2c625c48c353555d9b203e13e7e49093d15be2f3a0fb6e# ls
           checkpoints                                                                hostconfig.json  mounts
            config.v2.json                                                             hostname         resolv.conf
            e36d800f663b626aef2c625c48c353555d9b203e13e7e49093d15be2f3a0fb6e-json.log  hosts            resolv.conf.hash

              4.进入image文件夹,里面有repositories.json的文件,详细记录了各镜像的一些信息:

复制代码
           root@Rightsec:/var/lib/docker# cd image/
           root@Rightsec:/var/lib/docker/image# ls
             overlay2
           root@Rightsec:/var/lib/docker/image# cd overlay2/
           root@Rightsec:/var/lib/docker/image/overlay2# ls
             distribution  imagedb  layerdb  repositories.json

  容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等

       仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

    仓库配置:

                修改配置文件 vi    /etc/docker/daemon.json

                            添加内容:

                                 {
                                      "registry-mirrors": ["https://registry.docker-cn.com"]
                                   }

             systemctl daemon-reload

             systemctl restart docker.service

1.cento7/cento8及以上安装docker,安装方式

(1)官方安装脚本自动安装           

       curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

      也可以使用国内 daocloud 一键安装命令:   

       curl -sSL https://get.daocloud.io/docker | sh

(2)手动安装

      1.卸载旧版本

      yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

       2.安装Docker Engine-Community

          a.使用docker仓库安装

             在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker

                设置仓库:

                    yum install -y yum-utils  device-mapper-persistent-data  lvm2

                官网源:

                    yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

                阿里云:

                    yum-config-manager  --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

                 清华:

                    yum-config-manager  --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

         b.安装Docker Engine-Community

            安装最新版本:                            

                yum install docker-ce docker-ce-cli containerd.io(若问是否接受GPG,选是)

                Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户

            安装指定版本:(在存储库里列出可用版本再选择安装)

                 yum list docker-ce --showduplicates | sort -r//列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序

                 安装列出的指定版本:                 

                  yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

          c.启动Docker                 

              systemctl start docker

           d.加入开机自动启动:

               systemctl enable docker

           e.验证是否启动成功

              

二、docker使用


 

     (1)简单应用

               a. Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。            

                    docker run ubuntu:15.10 /bin/echo "Hello world"

                     以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果

              b. 运行交互容器:通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:              

                  docker run -i -t ubuntu:15.10 /bin/bash  //会进入ubuntu的系统容器里,可通过exit退出

              c.启动容器          

                  docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"   //会出现一个容器

              d.查看运行多少个docker

                  docker ps

              e. 查看对应容器id的日志

                  docker logs 2b1b7a428627(容器id)

              f. 停止对应docker

                  docker stop 2b1b7a428627(容器id)

             g.启动已停止的docker

                   docker start 2b1b7a428627(容器id)

             h. 登录镜像仓库下载镜像

                   docker login  registry-shdocker-registry.cn-shanghai.cr.aliyuncs.com/dandelion/dandelion_unview:v1.0.0_20201226  -u 用户名 -p 密码

                    其中: registry-shdocker-registry.cn-shanghai.cr.aliyuncs.com/dandelion/dandelion_unview:v1.0.0_20201226是仓库位置,dandelion是镜像删除镜像

                                docker rm -f dandelion删除镜像,这里用是tuya自己的远程仓库,登录后docker相当于客户端,若不指明也默认登录官网的

             i.查看本地安装哪些镜像:            

                   docker images

                    结果:                          

                       REPOSITORY                                                                                                                 TAG                  IMAGE ID          CREATED     SIZE
                      registry-shdocker-registry.cn-shanghai.cr.aliyuncs.com/dandelion/dandelion_unview v1.0.0_20201226 0305d9a0f892 3 months ago 141MB

                        TAG:可看到安装的版本

           j.查看镜像可用版本

                  docker search nginx(镜像名)

          k. 登录官网公共仓库:

                  docker login//默认登录官网仓库后会提示输入用户名密码

                  docker search //查看公共仓库有哪些镜像

                  docker logout//退出仓库

                 

 

      (2)docker常见使用命令

            a.如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像           

                 docker pull ubuntu

           b.启动容器          

                docker run -it ubuntu /bin/bash//通exit退出后docker就停止

           c.在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。在使用 -d 参数时,

                容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入       

              docker run -itd --name ubuntu-test ubuntu /bin/bash //加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec     

              docker exec -it 243c32535da7 /bin/bash  //进入ubuntu页面

          d.导入导出容器

                导出本地容器:docker export 1e560fca3906 > ubuntu.tar

        导入容器快照:cat docker/ubuntu.tar | docker import - test/ubuntu:v1(名字)//这种方式导入导出会报错“Error response from daemon: No command specified”,需要带command

              如下方式导入导出不需要command

                    导出本地容器:将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档,runoob/ubuntu:v3导出本地docker images查出来的镜像,-o name,表导出名字

                                                docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3

          导入容器:

                 --input:指定导入文件

                 --quiet:输出信息

                 docker load < my_ubuntu_v3.tar

         e.删除容器:  docker rm -f 1e560fca3906

         f .删除本地一个或多个镜像

                 docker rmi -f name:version

 三、其它


 

            1.https://www.runoob.com/docker/docker-inspect-command.html

           2.docker 的镜像与容器都存储在 /var/lib/docker 下面,那么基于不同的系统又有不同的存储方式,在 ubuntu 下面存储方式为 AUFS;在 Centos 下面存储方式又是 device mapper

 

原文地址:https://www.cnblogs.com/Dana-xiong/p/14582550.html