1. docker

Docker基本安装_自定义

2. 虚拟机和容器的区别

  • ①:虚拟机是借助于物理机的硬件进行硬件模拟,实现系统级别的隔离,每一台虚拟机模拟出硬件之后需要安装独立操作系统,然后再在操作系统上安装应用程序,容器是进程级别的隔离,通过虚拟化引擎在同一个操作系统上隔离出多个独立的进程,然后在独立资源管控的进程容器中安装应用程序以及应用程序的依赖程序;
  • ②: Docker容器启动速度快(秒级别),虚拟机启动速度慢(分钟级);
  • ③: Docker容器需要的资源少,和操作系统内核交互性能损耗少;
  • ④: Docker更轻量级,消耗的内存少,相同硬件条件下Docker运行的镜像数量远多于虚拟机;
  • ⑤: Docker可以快速的创建和删除,使用方便

缺点: ①: Docker安全性较弱,如果容器租户具备root权限,可以直接操作宿主机,可以进行无限制的操作; ②: Docker集中管理工具还不成熟;

3. Docker的三个基本概念

  1. Iamge 镜像: 容器运行时需要的程序、资源、库、配置文件的打包;
  2. Repository 仓库: 镜像存放的位置,镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。一个 Docker Registry 可以有多个 仓库(Repository),每个仓库可以含多个标签(Tag),每个标签都是一个镜像。
  3. Container 容器:
  4. 镜像和容器的关系就好比类和对象的关系,同一个镜像运行多次会得到多个容器实例,容器是镜像运行的实体,容器可以被创建,启动,停止,删除,暂停等。容器的实质是进程,但是又和宿主的进程不同,容器有自己的独立命名空间,因此容器拥有自己 root 文件系统,自己的网络配置,自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。注意,在容器被删除后,容器存储层保存的任何信息都不会保存,它和容器的生命周期一样,所以任何需要保存的数据 Docker 建议保存在数据卷(Volumes)或者宿主机目录中,这样数据不会随着容器的消失而消失。
  5. Docker基本安装_docker_02

4. Docker安装

安装环境准备以及安装步骤

① 检测Centos7内核版本

Docker基本安装_自定义_03

② 如果版本过低建议使用 yum update 更新

③ 更新完成再度进行检测内核系统是否满足要求

④ 卸载已经安装的docker旧版本

yum remove docker-*

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

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

⑥ 设置安装docker的yum源官方镜像地址:

yum-config-manager --add-repo 
https://download.docker.com/linux/centos/docker-ce.repo

阿里云镜像地址:

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

⑦ 更新软件包的索引

yum makecache fast

⑧ 查看可以安装的docker版本

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

Docker基本安装_docker_04

⑨ 安装docker ,此处在centos7.4操作系统上安装最新版本的docker

yum install docker-ce-18.03.1.ce-1.el7.centos

⑩ 启动并设置开机启动

systemctl start docker
systemctl enable docker
Systemctl status docker
Systemctl stop docker

11 检测是否安装成功

docker version

5. Docker的常用命令

(1) 镜像相关的命令① 查看镜像: 查看本地已经存在的镜像

docker images 或者 docker image list

Docker基本安装_Docker_05

② 搜索镜像: 查看互联网中的docker镜像

docker search image_name

Docker基本安装_自定义_06

③ 拉取镜像

docker pull image_name:版本编号

如果在拉取镜像的时候不指定具体的版本编码默认会拉取最新的版本,建议通过hub.docker网址去搜索查看相关镜像的具体版本,通过指定具体版本拉取自己需要的镜像

Docker基本安装_自定义_07

Docker基本安装_docker_08

Docker基本安装_docker_09

④ 删除镜像]

docker rmi image_id
docker rmi `docker images -q` 删除所有镜像

Docker基本安装_docker_10

(2) 容器相关的命令 ① 查看容器: 查看当前正在运行的容器

docker ps

容器是通过镜像来创建的,一个镜像可以创建很多个容器docker ps -a 查看所有的容器(包含启动和非启动的容器)

Docker基本安装_自定义_11

② 创建容器

docker run [参数选项] image [command]

可选的参数选项可以通过 docker run --help进行查看

Docker基本安装_docker_12

Docker基本安装_docker_13

Docker基本安装_Docker_14

Docker基本安装_自定义_15

③ 启动容器

  1. 伪终端模式启动
docker run -it --name=自定义的容器名称 image-name:tag /bin/bash

Docker基本安装_docker_16

Docker基本安装_Docker_17

  1. 后台进程启动
docker run -id --name=自定义的容器名 image_name:tag

Docker基本安装_Docker_18

使用以下命令进入后台启动的docker容器

docker exec -it 自定义的容器名称 /bin/bash

Docker基本安装_Docker_19

④ 停止容器和重启容器

docker stop 容器名称或者id
docker start 容器名称或者id

Docker基本安装_docker_20

⑤ docker常用命令汇总

Docker基本安装_Docker_21

复制文件

docker cp 本地文件路径中源文件 容器名:/容器中的目标路径 (从宿主机到容器)

或者

docker cp 容器名称:/文件路径 /宿主机路径 (从容器拷贝到宿主机)

Docker基本安装_自定义_22

容器目录挂载

docker run -id --name=自定义容器名称 -v 宿主机目录:容器中的目录 image_name:tag

Docker基本安装_Docker_23

docker inspect 容器名称或者容器id

查看容器配置信息(基础配置信息 挂载信息 图形驱动信息 网络信息等)

Docker基本安装_docker_24

删除容器: docker rm 容器名称或者id

Docker基本安装_自定义_25

配置容器IP地址①. 创建自定义网络

docker network create --subnet=172.20.0.1/24 docker-br0

--subnet: 表示在容器中创建的子网络的网段docker-br0 : 表示容器网桥的名称②. 创建网桥之后可以使用ifconfig命令检测ifconfig③. 如果不使用该网桥可以删除

docker network rm docker-br-9a740c9440a3

Docker基本安装_docker_26

④. 在你自定义的网段选取任意IP地址作为你要启动容器IP

docker run -id --net docker-br0 --ip 172.20.0.11  --name=mycentos_1 centos:7.4.1708

Docker基本安装_自定义_27

⑤. 使用docker exec -it 容器名 /bin/bash 进入已启动的容器,使用 yum install net-tools 下载 iptables 然后使用ifconfig查看容器ip

Docker基本安装_Docker_28

Docker基本安装_Docker_29

⑥. 测试本机和容器是否ping通

Docker基本安装_Docker_30

⑦. 重复执行④⑤⑥三步的操作重新运行一个容器

Docker基本安装_docker_31

Docker基本安装_自定义_32