Docker 入门

Dokcer 简介java

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

Docker 有哪些优点nginx

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

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

二、响应式部署与扩展centos

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

三、在同一硬件上运行更多工做负载bash

  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 安装

一、 首先检查Linux内核,只有内核版本要高于3.10才能够正常运行Docker

uname - r

二、更新yum

yum -y update

三、安装软件包

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

四、设置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

五、查询docker镜像版本

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

六、安装docker

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

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

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

systemctl start docker
systemctl enable docker

Docker经常使用命令

一、搜索镜像

docker search java

- NAME:镜像仓库名称。

- DESCRIPTION:镜像仓库描述。

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

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

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

二、查询本地镜像

docker images

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

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

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

- CREATED:镜像建立时间。

- SIZE: 镜像大小。

三、删除镜像

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

//删除本地全部镜像
docker rmi $(docker images -q)

四、启动镜像

docker run -d -p 91:80 nginx

五、列出全部启动的容器

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选项自行指定。

六、中止容器

//中止容器
docker stop 容器ID

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

七、启动已中止容器

docker start 容器ID

八、查看容器信息

docker inspect 容器ID

九、进入容器

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

docker exec ‐it 容器ID /bin/bash

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

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

十一、删除容器

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

//删除全部容器
docker rm $(docker ps ‐a ‐q)

十二、容器与宿主机复制文件

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

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

配置镜像加速

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

总体思惟导图