Docker学习

Docker是什么

解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

Docker的好处

开发/运维(DevOps)

  1. 一次构建,随处运行
  2. 更快速的应用交付和部署——环境和代码都给
  3. 更便捷的升级和扩缩容
  4. 更简单的系统运维
  5. 更高效的计算资源利用

Docker的三要素

  1. 镜像(Image)

    1. Docker镜像(Image)就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建多个容器。
    2. Image文件生成的文件实例,本身也是一个文件,称为镜像文件。
    3. 镜像与容器的关系类似于面向对象编程中的类与对象:
    DOCKER面向对象
    容器对象
    镜像
  2. 容器(Container)

    1. Docker利用容器(Container)独立运行的一个或一组应用。容器是镜像创建的运行实例。
    2. 它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证平台的安全。
    3. 可以把容器看作是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
    4. 容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面一层是可读可写的。
  3. 仓库(Repository)

    1. 仓库(Repository)是集中存放镜像文件的场所
    2. 仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上通常存放着多个仓库,每个仓库中又包含了多个镜像。每个镜像有不同的标签(Tag)。
    3. 仓库分为公开仓库(Public)和私有仓库(Private)两种形式:
      1. 最大的公开仓库DockerHub(https://hub.docker.com),存放了数量庞大的镜像供用户下载。
      2. 国内的公开仓库包括阿里云、网易云等。

Docker架构图

Docker的架构图

Docker的安装

  1. 环境为CentOS7.5
  2. 参考docker官网安装教程
  3. 阿里云镜像设置
  4. 网易云镜像设置:将上述阿里云镜像所给的加速器地址更改为网易云镜像所给的加速器地址即可。

Docker运行的底层原理

  1. 为什么Docker比VM快

    Docker为什么比VM快

  2. Docker是怎么工作的

    Docker是一个Client-Server(C/S)结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接收命令并管理运行在主机上的容器。

    Docker运行原理

Docker常用命令

帮助命令

  1. docker version #查看版本信息
    
  2. docker info #查看docker的详细信息
    
  3. docker --help #帮助命令
    

镜像命令

  1. docker images	#List images
    				#列出本地主机上的镜像
    			#OPTIONS说明:
    				# -a:列出本地所有的镜像,含中间映像层
    				# -q:只显示镜像ID
    				# --digests:显示镜像的摘要信息
    				# --no-trunc:显示完整的镜像信息
    
  2. docker search 某个镜像的名字
    				#Search the Docker Hub for images
    				#在Docker Hub上搜索某个镜像
    
  3. docker pull 某个镜像的名字[:TAG]
    			#Pull an image or a repository from a registry
    			#下载镜像
    			#默认下载latest版
    
  4. docker rmi 某个镜像的名字[ IMAGE1 IMAGE2 ...]
    			#Remove one or more images
    			#删除一个或多个镜像
    			#默认删除latest版
    			# -f : 强制删除
    			#删除多个,中间用空格隔开
    			# 组合命令:
                # docker rmi -f $(docker images -qa) 批量删除
    

容器命令

  1. 下载一个CentOS镜像演示

    docker pull centos:7
    
  2. 新建并启动容器

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    		#OPTIONS说明
    		# --name="容器新名字":为容器指定一个名称
    		# -d:后台运行容器,并返回容器ID,也即启动守护式容器
    		# -i:以交互模式启动容器,通常与-t同时使用
    		# -t:为容器重新分配一个伪输入终端,通常与-i使用
    		# -P:随机端口映射
    		# -p:指定端口映射,有以下四种格式
    				ip:hostPort:containerPort
    				ip::containerPort
    				hostPort::containerPort
    				containerPort
    
  3. 列出当前所有正在运行的容器

    docker ps [OPTIONS]
    			# -a:列出当前所有正在运行的程序+历史上运行过的
    			# -l:显示最近创建的容器
    			# -n:显示最近n个创建的容器
    			# -q:静默模式,只显示容器编号
    			# --no-trunc:不截断输出
    			# 默认显示当前正在运行的
    
  4. 退出容器

    1. 容器停止退出

      exit
      
    2. 容器不停止退出

      ctrl+P+Q
      
  5. 启动容器

    docker start 容器ID或容器名
    
  6. 重启容器

    docker restart 容器ID或容器名
    
  7. 停止容器

    docker stop 容器ID或容器名
    
  8. 强制停止容器

    docker kill 容器ID或容器名
    
  9. 删除已停止的容器

    docker rm 容器ID或容器名
    
    一次性删除多个容器:
    docker rm -f $(docker ps -a -a)
    或
    docker ps -a -q | xargs docker rm
    

一些重要的命令

启动守护式进程
docker run -d 容器名

注意:

  1. 使用docker ps -a 进行查看,发现容器已经退出
  2. Docker容器后台运行,就必须有一个前台进程
  3. 容器运行的命令如果不是那些一直挂起的命令(如top,tail),就是会自动退出
  4. 将你想要运行的程序以前台进程的形式运行
查看容器日志
docker logs [-f] [-t] [--tail n] 容器ID
					# -t是加入时间戳
					# -f是跟随最新的日志打印
					# --tail 数字  显示最后多少条
查看容器内运行的进程
docker top 容器ID
查看容器内部细节
docker inspect 容器ID
进入正在运行的容器并以命令行交互
  1. 直接进入容器启动命令的终端,不会启动新的进程

    docker attach 容器ID
    
  2. 在容器中打开新的终端,并且可以启动新的进程

    docker exec -it 容器ID bsahShell
    如:docker exec -t centos_01 ls -l /tmp
    

    docker  exec

从容器内部拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐