zoukankan      html  css  js  c++  java
  • Docker介绍,安装和常用的命令

    Docker是Google公司推出的Go语言开发的,基于Linux内核的cgroupnamespaceAUFS类的UnionFS等技术。对进程进行封装格力,属于操作系统层面的虚拟化技术。隔离的进程独立于宿主和其他的进程,称为容器。

    Docker是在容器的技术上进行了进一步的封装,从文件系统、网络互连到进程格力等等,简化了容器的创建和维护,使得Docker技术比虚拟化技术更为轻便、快捷。

    Docker与传统虚拟机对比

    Virtual Machines:传统虚拟机技术是虚拟出一套硬件,然后再其上运行一个完整的操作系统,然后应用服务再运行在其上。

    Docker: 容器内的应用程序直接运行与宿主的内核,容器和宿主公用一个内核,只是实现了一个隔离的操作。它比传统的虚拟机更轻便。

    为什么用docker?

    • 更高效的利用系统资源
    • 更快速的启动时间
    • 一致的运行环境
    • 持续交付和部署
    • 更轻松的迁移
    • 更轻松的维护和拓展

    docker架构

    客户端,主机,远程仓库

    docker是使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建docker容器。

    image:是用于创建docker容器的一个模版

    container: 是独立运行的一个或一组应用。

    client:客户端通过API进行容器的管理。

    Docker安装

    Centos 安装docker: docker CE支持64位的centos 7 ,且内核版本不低于3.10。

    卸载旧版本sudo yum remove docker docker-common docker-selinux docker-engine

    使用yum安装sudo yum install docker-ce

    安装必要的软件依赖以及增加docker-ce 的yum源:

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

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

    使用脚本安装docker:

    在测试或者开发环境中,docker官方为了简化安装流程,提供了一套便捷的安装脚本,Centos系统上可以使用这套工具安装curl -fsSL https://get.docker.com -o get-docker.sh , sudo sh get-docker.sh --mirror Aliyun

    启动docker CE

    sudo systemctl enable docker #设置开机启动
    sudo systemctl start docker
    

    创建docker用户组

    默认情况下,docker命令会使用Unix socket与docker引擎通信,只有root用户和docker组用户才可以访问docker引擎的Unix socker,一般linux不使用root进行操作,所以需要将docker的用户加入docker用户组

    sudo groupadd docker #建立docker组
    sudo usermod -aG docker $USER #将当前用户加入docker组
    

    测试docker是否安装正确:docker run hello-world

    删除docker安装包: sudo yum remove docker-ce

    删除docker镜像:sudo rm -rf /var/lib/docker

    Centos 7配置镜像加速器

    对于使用systemd的系统,请在/etc/docker/daemon.json中写入如下内容(如果文件不存在,新建即可):

    {
        "registry-mirrors":[
            "http://hub-mirror.c.163.com"
        ]
    }
    

    重启服务生效:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    可以使用docker info来查看docker的信息,其中的Registry Mirrors这个栏位会显示出docker镜像仓库的地址。

    Docker 常用的命令

    Docker镜像操作

    Docker运行容器需要本地的镜像,如果本地不存在镜像,docker会从镜像仓库中下载该镜像。

    • 从仓库中获取镜像
    • 管理本地主机上的仓库
    • 介绍镜像实现的基本原理

    获取镜像:从docker仓库中拉取镜像的命令是 docker pull。

    docker pull [选项] [Docker Registry地址[:端口号]/]仓库名[:标签]
    
    # 默认地址仓库为Docker hub,仓库名是两段式的 <用户名>/<软件名> 如果不给用户名,则默认为library
    docker pull ubuntu:16.04
    docker pull library/ubuntu:16.04
    

    运行镜像

    有了镜像,就可以以进行为模版,启动并运行一个容器。

    # -it : -i是交互式操作,-t是终端
    # --rm: 容器退出后,自动删除
    # bash: 放在镜像名后的命令,是有一个交互式的shell,此处为bash
    docker run -it --rm ubuntu:16.04 bash
    

    列出镜像docker images lsdocker images

    查看镜像、容器、数据卷所占空间:docker system df

    显示虚悬镜像(dangling image,即仓库名和标签都为):docker image ls -f dangling=true

    删除虚悬镜像:docker image prune

    删除本地镜像

    命令: docker image rm [选项] <镜像1> [<镜像2>...]

    批量删除镜像

    docker image rm $(docker image ls -q ubuntu) #删除所有仓库名为ubuntu的镜像
    

    如果有多个版本的镜像,需要删除所有在ubuntu:16.04之前的镜像:

    docker image rm $(docker image ls -q -f before=ubuntu:16.04)

    注:删除镜像前要先删除掉所有存活的或者未存活的容器。

    容器操作

    容器是独立运行的一个或一组应用,以及他们的运行态环境。

    创建并启动容器(docker run ...)

    启动容器分两种,一种是基于镜像新建容器,

    如:docker run ubuntu:16.04 /bin/echo 'hello world'

    一种是将终止态的容器重新启动,docker container start

    docker run -t -i ubuntu:16.04 /bin/bash

    -t 让docker分配一个伪终端并绑定到容器的标准输入上,-i让容器的标准输入保持打开。

    执行完这个命令后,docker会在后台执行:

    1. 检查本地是否存在指定的镜像,不存在就从公共仓库中下载
    2. 利用镜像创建并启动一个容器
    3. 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
    4. 从宿主机配置的网桥接口桥接到一个虚拟接口到容器中
    5. 从地址池中配置一个ip地址给容器
    6. 执行完指定的应用程序
    7. 执行完毕后容器被终止。

    后台运行:很多时候让docker在后台运行,而不是直接吧执行命令的结果输出到当前宿主机下。可以使用-d参数。

    如: 不使用-d ,docker run hello-workd会吧日志答应到宿主机控制台,docker run -d hello-world不会输出日志,只会打印容器id,输出结果用 docker logs查看

    停止容器

    # 停止运行中的容器
    docker container stop xx
    
    #终止状态的容器用如下命令可以查看到
    docker container ls -a
    
    #启动终止状态下的容器
    docker container start xx
    #重启一个运行态的容器
    docker container restart xx
    

    进入容器(exec)

    使用docker exex -it xx /bin/bash可以进入容器

    导入(import)导出(export)容器:

    导入 :docker export xx > 导出文件名.tar

    导入:cat 导出文件名.tar |docker import -镜像用户名/镜像名:镜像版本docker import -i 导出文件名.tar

    也可以导入远程http的资源。

    删除容器

    #删除终止的容器
    docker container rm ubuntu:16.04
    #删除运行中的容器
    docker container rm -f ubuntu:16.04
    
    #删除所有终止状态的容器
    docker container prune
    
  • 相关阅读:
    C#将方法作为参数传递(用委托接收方法)
    C#委托
    ASP.NET Identity系列教程-4【Identity高级技术】
    ASP.NET Identity系列教程-3【运用ASP.NET Identity】
    ASP.NET Identity系列教程-2【Identity入门】
    claim、claimsidentity、claimsprincipal
    Entity Framework的几种初始化器
    微信小程序环境准备
    ESLint那些坑
    absolute imports should come before relative imports import/first
  • 原文地址:https://www.cnblogs.com/junjiedeng/p/11748437.html
Copyright © 2011-2022 走看看