什么是DockerDockerDocker是一个完全使用沙箱隔离机制的虚拟化容器引擎,相对于传统的VM虚拟机有很大的优势。传统虚拟机(VM)和虚拟化容器(Docker)的区别:传统VM虚拟机不能共享资源,比如在VMWare中安装4GB内存的Linux操作系统,也就是说Linux系统使用固定4GB内存且不能与宿主机或其他虚拟系统共享此资源,可能造成资源浪费或资源溢出。Docker弥补了传统VM虚拟机的不足,各个虚拟化操作系统可以相互共享资源,解决了资源溢出或者资源浪费等一系列问题。Docker的主要概念Docker镜像(Image)操作系统分为内核空间和用户空间。对于Linux,内核启动后,挂载根文件系统,提供用户空间支持。Docker镜像(Image)相当于一个根文件系统。Docker镜像是一种特殊的文件系统。除了提供容器运行所需的程序、库、资源、配置等文件外,还包含一些为运行时准备的配置参数(如环境变量、用户等)。Docker容器(Container)Docker镜像和Docker容器的关系就像面向对象编程中的类和对象,镜像是静态定义的。容器是镜像运行时中的实体,可以创建、启动、停止、删除、暂停等。容器中的进程运行在一个隔离的环境中,就好像运行在一个独立于宿主的系统下。这个特性使得容器封装的应用程序比直接在主机上运行更安全。Docker仓库(Registry)镜像构建完成后,一行命令就可以在当前宿主机上运行,??但是如果想在其他服务器上使用这个镜像,就需要一个集中存放镜像的仓库——也就是码头工人仓库。PublicDockerRegistry:最常用的Registry公共服务是官方的DockerHub,但是国内访问会比较慢,国内一些云服务商提供DockerHub的镜像服务,常见的有阿里云,DaoCloud加速器,会比直接从DockerHub下载快得多。私有DockerRegistry:您可以在本地构建私有DockerRegistry。Docker官方提供了DockerRegistry镜像,可以直接作为私有Registry服务使用。安装Docker,使用脚本自动安装$curl-fsSLget.docker.com-oget-docker.sh$sudoshget-docker.sh--mirror阿里云执行这两行命令后,脚本会自动准备一切都完成并在系统上安装了DockerCE。使用APT安装#安装一些必要的系统工具$sudoapt-getupdate$sudoapt-get-yinstallapt-transport-httpsca-certificatescurlsoftware-properties-common#安装GPG证书$curl-fsSLhttp://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg|sudoapt-keyadd-#写入软件源信息$sudoadd-apt-repository"deb[arch=amd64]http://mirrors.aliyun.com/docker-ce/linux/ubuntu$(lsb_release-cs)stable"#更新软件源$sudoapt-get-yupdate#安装DockerCE$sudoapt-get-yinstalldocker-ceDocker用户组安装完成后,默认情况下,Docker命令会使用Unixsocket与Docker引擎,只有Root用户和Docker组的用户可以访问Docker引擎的Unixsocket。在Linux系统上一般不会直接使用Root用户。因此,将需要使用Docker的用户加入Docker用户组是一个更好的做法。#创建Docker用户组$sudogroupadddocker#添加用户到Docker用户组$sudousermod-aGdockerusername镜像加速器因为从国内的DockerHub下载镜像有时候很慢,可以配置国内云提供的镜像加速器服务商:Docker官方提供的中文注册镜像阿里云加速器DaoCloud加速器获取阿里云镜像加速器添加镜像加速器登录阿里云,进入容器镜像服务控制台>镜像加速器添加镜像加速器复制加速器地址,如下图配置镜像加速器编辑daemon.json配置文件$sudonano/etc/docker/daemon.json添加如下代码{"registry-mirrors":["mirroracceleratoraddress"]}重启Docker服务$sudosystemctldaemon-reload$sudosystemctlrestartdocker检查加速器是否有效$dockerinfo如果看到如下输出,说明镜像加速器配置成功。RegistryMirrors:镜像加速器地址Docker常用命令Dockermirrorcommand#列出镜像列表$dockerimages$dockerimagels-a#运行Docker镜像(守护进程模式)$dockerrun-d镜像名#删除指定的Docker镜像$dockerimagerm镜像名称#删除Docker虚拟镜像$dockerimagepruneDocker容器命令#列出正在运行的容器$dockerps-a#列出所有容器(包括停止的容器)$dockerps-l#进入正在运行的Docker容器$dockerexec-itcontainerID/bin/bash#停止Docker容器$dockerstopcontainerID#删除指定的Docker容器$dockerrm-fcontainerID#删除停止的Docker容器$dockercontainerprune#查看Docker容器历史运行日志$dockerlogscontainername#实时监控Docker容器运行日志$dockerlogs-fcontainernameDockerdatavolumecommand#创建一个Docker数据卷$dockervolumecreatedatavolumename#列出所有Docker数据卷$dockervolumels#删除指定的Docker数据卷$dockervolumermdatavolumename#删除未关联的(失败)Docker数据卷$dockervolumeprune$dockervolumerm$(dockervolumels-qfdangling=true)Docker文件操作命令#从宿主机复制文件到Docker容器$sudodockercp宿主机容器ID中的文件路径:containerInternalfilestoragepath#将Docker容器中的文件复制到宿主机$sudodockercp容器ID:宿主机中容器文件存放路径中的文件路径更多干货请访问:https://antonipeng.com
