Docker

Posted jiangyaxiong1990

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker相关的知识,希望对你有一定的参考价值。

Dokcer 简介

  Docker是一个用于开发,交付和运行应用程序的开放平台。Docker能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker可以与管理应用程序相同的方式来管理基础架构。通过利用Docker的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

Docker 有哪些优势

1、快速、一致地交付应用程序

  Docker简化了开发生命周期,允许开发人员使用本地容器在标准化的环境中工作,本地容器可以提供应用程序和服务。容器对于持续集成和持续交付(CI/CD)工作流非常有用。

2、响应式部署与扩展

  Docker基于容器的平台允许高度可移植的工作负载。Docker的可移植性和轻量级的特性使得可以轻松地动态管理工作负载,让运维人员可以根据业务需求指示实时扩展或拆除应用程序和服务。

3、在同一硬件上运行更多工作负载

  Docker是轻量级和快速的。它为基于管理程序的虚拟机提供了一种可行的、经济有效的替代方案,因此您可以使用更多的计算能力来实现您的业务目标。Docker非常适合于高密度环境和需要使用更少资源完成更多工作的中小型部署。

Docker 架构图

技术图片

Docker daemon(Docker守护进程):
  Docker守护程序侦听Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。
Client( Docker客户端):
  Docker客户端是 Docker的用户界面,它可以接受用户命令和配置标识,并与 Docker daemon通信。图中, docker build等都是 Docker的相关命令。
Images( Docker镜像):
  Docker镜像是一个只读模板,它包含创建 Docker容器的说明。它和系统安装光盘有点像,使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行 Docker镜像中的程序。
Container(容器):
  容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。可通过 Docker API或者 CLI命令来启停、移动、删除容器。
Registry:
  Docker Registry是一个集中存储与分发镜像的服务。构建完 Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,就需要手动复制。此时可借助 Docker Registry来避免镜像的手动复制。
一个 Docker Registry可包含多个 Docker仓库,每个仓库可包含多个镜像标签,每个标签对应一个 Docker镜像。这跟 Maven的仓库有点类似,如果把 Docker Registry比作 Maven仓库的话,那么 Docker仓库就可理解为某jar包的路径,而镜像标签则可理解为jar包的版本号。
  Docker Registry可分为公有Docker Registry和私有Docker Registry。 最常?的Docker Registry莫过于官?的Docker Hub, 这也是默认的Docker Registry。

Docker 安装

技术图片

1、 首先检查Linux内核,只有内核版本要高于3.10才可以正常运行Docker

uname - r

2、更新yum

yum -y update

3、安装软件包

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

4、设置yum源

// 添加阿里云的docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
//将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度
yum makecache fast
//yum会把下载的软件包和header存储在cache中而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令清除缓存。
yum clean all

5、查询docker镜像版本

yum list docker-ce --showduplicates | sort -r

6、安装docker

//指定版本安装:
yum ‐y install docker‐ce‐18.03.1.ce

//安装最新的稳定版
yum ‐y install docker‐ce

7、启动,并添加到开机启动中

systemctl start docker
systemctl enable docker

Docker常用命令

技术图片

1、搜索镜像

docker search java

技术图片

- NAME:镜像仓库名称。

- DESCRIPTION:镜像仓库描述。

- STARS:镜像仓库收藏数,表示该镜像仓库的受欢迎程度,类似于 GitHub的 stars0

- OFFICAL:表示是否为官方仓库,该列标记为[0K]的镜像均由各软件的官方项目组创建和维护。

- AUTOMATED:表示是否是自动构建的镜像仓库

2、查询本地镜像

docker images

技术图片

- REPOSITORY:镜像所属仓库名称。

- TAG:镜像标签。默认是 latest,表示最新。

- IMAGE ID:镜像 ID,表示镜像唯一标识。

- CREATED:镜像创建时间。

- SIZE: 镜像大小。

3、删除镜像

//删除本地java镜像
docker rmi java

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

4、启动镜像

docker run -d -p 91:80 nginx

5、列出所有启动的容器

docker ps
  • -a :显示所有的容器,包括未运行的。

  • -f :根据条件过滤显示的内容。

  • --format :指定返回值的模板文件。

  • -l :显示最近创建的容器。

  • -n :列出最近创建的n个容器。

  • --no-trunc :不截断输出。

  • -q :静默模式,只显示容器编号。

  • -s :显示总的文件大小。

技术图片

 - CONTAINER_ID:表示容器 ID。

- IMAGE:表示镜像名称。

- COMMAND:表示启动容器时运行的命令。

- CREATED:表示容器的创建时间。

- STATUS:表示容器运行的状态。UP表示运行中, Exited表示已停止。

- PORTS:表示容器对外的端口号。

- NAMES:表示容器名称。该名称默认由 Docker自动生成,也可使用 docker run命令的--name选项自行指定。

6、停止容器

//停止容器
docker stop 容器ID

//强制停止容器
docker kill 容器ID

7、启动已停止容器

docker start 容器ID

8、查看容器信息

docker inspect 容器ID

9、进入容器

使用docker exec命令用于进入一个正在运行的docker容器。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了

docker exec ‐it 容器ID /bin/bash

10、容器内安装vim、ping、ifconfig等指令

apt‐get update
apt‐get install vim #安装vim
apt‐get install iputils‐ping #安装ping
apt‐get install net‐tools #安装ifconfig

11、删除容器

//删除指定容器
docker rm 容器ID

//删除所有容器
docker rm $(docker ps ‐a ‐q)

12、容器与宿主机复制文件

//从容器里面拷文件到宿主机
docker cp 容器id:要拷贝的文件在容器里面的路径 宿主机的相应路径

//从宿主机拷文件到容器里
docker cp 要拷贝的宿主机文件路径 容器id:要拷贝到容器里面对应的路径

配置镜像加速

1、登录阿里云,容器镜像服务,获取镜像加速器(https://cr.console.aliyun.com/#/accelerator),根据操作文档进行配置;

技术图片

整体思维导图

技术图片

 

 

以上是关于Docker的主要内容,如果未能解决你的问题,请参考以下文章

markdown docker-compose片段

sh Docker片段

《Docker 源码分析》全球首发啦!

docker 部署 coredns(内部域名解析)

docker 部署 coredns(内部域名解析)

将 Docker 容器限制为单个 cpu 核心