• Docker基础操作


      

    环境配置的问题

    在软件开发的过程当中,经常会遇到的一个问题,就是环境配置的问题,例如一个python程序,首先要有python引擎,以及其他各种依赖、和环境变量。如果不能保证环境的一致性,那可能就会出现,「这段代码在我机器上没问题啊」。所以要想办法从根本上解决这个问题,也就是在安装的时候,把原始环境也获取到。

    虚拟机

    虚拟机就是解决环境问题的一种方法,它可以一个操作系统当中运行另外一个操作系统。例如在windows里面运行linux环境。

    而这种解决方法有几个缺点:

                 1.资源占用比较大虚拟机需要占用一部分内存和磁盘空间,当它运行的时候,其他程序是不能使用这些资源的。

                 2.步骤比较多,因为虚拟机启动的是一个完整的操作系统,所以一些系统级别的操作无法跳过。

    linux容器

    因为虚拟机的一些缺点,所以在linux当中又有了一种虚拟化技术:容器。容器不是一个完整的操作系统,而是对进程的隔离。对于容器里面的进程来讲,它所接触到的资源全部都是虚拟的。

    由于容器是进程级别的,所以相对于虚拟机来说有很多优点。

                 1.资源占用少

                 2.体积小

                 3.启动快

    什么是Docker

    Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

    Docker基本配置

    1.安装

    ubuntu下面执行wget -qO- https://get.docker.com/ | sh命令安装Docker如果命令的方式无法安装,也可以使用apt-get install docker.io进行安装。

    安装完成后使用sudo docker run hello-world来测试是否安装成功。

    也可以借鉴链接

    添加用户组

    默认情况下,docker 命令会使用 Unix socket Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

    sudo usermod -aG docker $USER执行之后重启服务注意:这里不用更改USER 这个环境变量就是指当前用户名

    添加镜像加速

    在国内拉取Docker Hub镜像时,速度会比较慢,此时一般需要配置镜像加速器。配置阿里云Docker镜像加速器打开开发者平台(https://dev.aliyun.com/search.html) – 管理中心加速器。可以看到"您的专属加速器地址"https://xxxxxxx.mirror.aliyuncs.com然后打开/etc/docker/daemon.json文件(没有时新建该文件) 在文件中写入

    {
      "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
    }

    最后重启服务。

    2.使用镜像

    2.1.镜像

    我们都知道,操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu 16.04 最小系统的 root 文件系统。

    2.2 获取镜像及运行

    Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像并运行。docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

                 Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub

                 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。

    例如:docker pull ubuntu:16.04就是获取官方仓库当中library/ubuntu 仓库中标签为 16.04 的镜像。

    当获取完镜像之后可以通过docker run命令来运行。

    例如:docker run ubuntu:16.04 cat /etc/os-release在运行之后会输出ubuntu的系统版本信息。

    2.4 删除镜像

    对于一些用不到的镜像,可以通过docker image rm命令进行删除。docker image rm [选项] <镜像1><镜像2>其中<镜像>可以是镜像的短ID,也可以是镜像名字. 在删除之前通过docker image ls获取本地环境的所有镜像.

    wangxian@wangxian:~$ docker image ls
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    ubuntu              16.04               5e8b97a2a082        2 weeks ago         114MB
    wangxian@wangxian:~$ docker image rm 5e8b97a2a082     
    Untagged: ubuntu:16.04
    Untagged: ubuntu@sha256:b050c1822d37a4463c01ceda24d0fc4c679b0dd3c43e742730e2884d3c582e3a
    Deleted: sha256:5e8b97a2a0820b10338bd91674249a94679e4568fd1183ea46acff63b9883e9c
    Deleted: sha256:ef572e1ba2ecca900f0ec3db00e997de12dd380ce3e360b5813fd75920232359
    Deleted: sha256:98fc4d5421178c7be7d5718d2d44abba8053dc5c712e51658fe5b872675b4f7a
    Deleted: sha256:7b2cc05dfd889e28234f8831c80ac20cf299d5bbebbbac013f8f7d2b7abc0d65
    Deleted: sha256:6b0187d1cdff63eb5966ac72bf4ccd96150586c1409eb858bb98783f02018ee7
    Deleted: sha256:644879075e24394efef8a7dddefbc133aad42002df6223cacf98bd1e3d5ddde2

    另外也可以配合dokcer image ls -q来使用. docker image rm $(docker image ls -q)删除所有的镜像

     

    3.操作容器

                 2.容器

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

     

    docker image ls列出当前已经下载下来的镜像,列表包含了仓库名、标签、镜像 ID、创建时间以及所占用的空间。

    启动容器(后台模式)

    docker run -d -p 80:80 nginx在后台运行nginx,把容器的80端口映射到宿主机  运行之后可以通过docker ps命令查看正在运行的容器也可以通过docker logs 容器id查看容器的标准输出

    删除容器

    在删掉一个容器之前需要保证当前容器没有在运行,如果在运行的话需要在删除之前,通过docker stop 容器id来停止运行,然后通过docker rm 容器id来删除容器.

    docker rm $(docker ps -a -q)删除所有的容器

    删除镜像

    和删除容器基本类似,在删除镜像之前要保证没有容器在使用当前镜像,然后在通过docker rmi image id来删除镜像。

    docker rmi $(docker images -q)删除所有镜像

     

     

     

     

     

     

     

  • 相关阅读:
    SpringCloud学习笔记【七】:Eureka,Consul,Zookeeper注册中心异同点
    SpringCloud学习笔记【六】:Consul实现服务注册与发现
    Docker安装Consul
    SpringCloud学习笔记【五】:Zookeeper代替Eureka实现服务注册与发现
    Docker安装Zookeeper以及Zk常用命令
    SpringCloud学习笔记【四】:Eureka的自我保护机制
    教你如何使用docsify快速部署优美的在线文档
    SpringCloud学习笔记【三】:Actuator微服务信息完善+Discovery获取注册信息
    SpringCloud学习笔记【二】:Eureka服务注册与发现
    WPF应用中一种比较完美的权限控制设计方式
  • 原文地址:https://www.cnblogs.com/pywjh/p/10554152.html
Copyright © 2020-2023  润新知