前言

前几天项目要求快速上线并且部署多态服务器环境,小编一台一台服务器的yum ,install ,vim, restart ,这重复的机械操作实在是让我忍受不了,那时心里想要是有一个U盘,能把整个环境一台一台的Ctrl+V 过去,那该多好啊。突然想起来Docker不就是我想要的那个U盘嘛。

Docker简介

Docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。如果出现的故障,可以通过镜像,快速恢复服务。

Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker的基础是Linux容器(LXC)等技术。在LXC的基础上Docker进行了进一步的封装,让用户不需要关心容器的管理,使得操作更加简便。用户操作Docker的容器就像操作一个快速轻量级的虚拟机一样简单。

Docker架构

Docker 包括三个基本概念:


  • 镜像(Image):Docker镜像,就相当于是一个root文件系统。比如官方镜像 ubuntu:16.04 就包含了完整一套 Ubuntu 16.04 最小系统的root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。

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

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系:

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker简介及安装使用 入门篇_linux

镜像是构建Docker的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步步构建出来。

也可以将镜像当做容器的“源代码”。镜像体积很小,非常“便携”,易于分享,存储和更新。

Docker可以帮助你构建和部署容器,只需要把自己的应用程序或服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜像是Docker生命周期中的构建或打包阶段,而容器则是启动或者执行阶段。容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或服务。Docker容器方便替换,可以叠加,易于分发,并且尽量通用。

Registry(注册中心)

Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营公共的Registry叫做Docker Hub。用户可以在Docker Hub注册账号,分享并保存自己的镜像(在Docker Hub下载镜像巨慢,可以自己搭建私有的Registry)。

Docker的安装,启动和停止

安装

1、yum包更新到最新

sudo yum update

2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

3、设置yum源为阿里云

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、安装docker

sudo yum install docker-ce

5、安装后查询docker版本

docker -v

设置ustc 的镜像:

ustc是老牌的Linux镜像服务提供者,ustc的docker镜像加速器速度很快。

ustc docker mirror 的优势之一就是不需要注册,是真正的公共服务。

1、编辑该文件

vi /etc/docker/daemon.json

2、在该文件下输入如下内容:

{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

启动和停止

systemctl 命令是系统服务管理器指令

1、启动docker

systemctl start docker

2、停止docker

systemctl stop docker

3、重启docker

systemctl restart docker

4、查看docker状态

systemctl status docker

5、开机启动

systemctl enable docker

6、查看docker概要信息

docker info

7、查看docker帮助文档

docker  --help

常用命令

镜像相关命令

1、查看镜像

docker images

各个属性字段含义:

Docker简介及安装使用 入门篇_docker_02

2、搜索镜像

如果需要从网络中查找需要的镜像,可以通过下面命令来搜索:

docker search 镜像名称

各个属性字段含义:

Docker简介及安装使用 入门篇_linux_03

3、拉取镜像

拉取镜像就是从中央仓库中下载镜像到本地:

docker pull 镜像名称

4、删除镜像

按镜像ID删除镜像:

docker rmi  镜像ID

Docker简介及安装使用 入门篇_docker_04

删除所有镜像:

docker rmi `docker images -q`

容器相关命令

1、查看容器

查看正在运行的容器:

docker  ps

查看所有容器:

docker  ps  -a

查看最后一次运行的容器:

docker  ps -l

查看停止的容器:

docker  ps -f status=exited

注意: docker若以守护式容器在后台运行程序,如果想要进入容器则需要执行命令:

如: ​​docker exec -it mycentos2 /bin/bash​

2、创建和启动容器

创建容器的命令:

docker run

创建容器常用参数说明:

-l : 表示运行容器

-t : 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

–name : 为创建的容器命名

-v : 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个 -v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

-d : 在run 后面加上-d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加 -I - t 两个参数,创建后就会自动进去容器)

-p : 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个 -p 做多个端口映射。

3、启动和停止容器

停止容器:

docker stop 容器名称(或者容器ID)

启动容器:

docker start容器名称(或者容器ID)

4、文件拷贝

如果我们需要将文件拷贝到容器内可以使用cp 命令:

docker cp 需要拷贝的文件或目录  容器名称:容器目录

也可以将文件从容器内拷贝出来:

docker cp 容器名称:容器目录  需要拷贝的文件或目录

5、查看容器IP地址

查看容器运行的各种数据:

docker inspect 容器名称(容器ID)

也可以直接执行下面的命令直接输出IP地址:

docker inspect --format='{{.NetworkSettings.IPAddress}}'  容器名称(容器ID)

6、删除容器

删除指定的容器:

docker rm 容器名称(容器ID)