Docker概述

Docker是一个开源的应用容器引擎,让开发者可以打包应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或windows操作系统的机器上,也可以实现虚拟化

安装Docker

// 1.yum包更新到最新
yum update

// 2.安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2

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

// 4.安装docker,出现输入的界面都按y
yum install -y docker-ce

// 5.查看docker版本
docker -v

Docker架构

  • 镜像(Image):Docker镜像,就相当于是一个root文件系统
  • 容器(Container):镜像和容器的关系,就像是面向对象程序设计中的类和实力一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像

配置镜像加速器

默认情况下,将从docker hub上下载docker镜像,但是太慢,一般都会配置镜像加速器,在这里使用阿里云官网,其操作步骤如下:

步骤一:登录阿里云官网

docker容器化部署部署 docker 容器化_docker容器化部署部署

步骤二:点击左上角三横杆展开选项,搜索镜像后点击容器镜像服务

docker容器化部署部署 docker 容器化_docker_02

步骤三:将镜像加速器的代码copy到CentOS运行

docker容器化部署部署 docker 容器化_容器_03

步骤四:使用 cat /etc/docker/daemon.json查看docker镜像是否配置成功

docker容器化部署部署 docker 容器化_centos_04

Docker服务相关命令
// 启动docker服务
systemctl start docker

// 停止docker服务
systemctl stop docker

// 重启docker服务
systemctl restart docker

// 查看docker服务状态
systemctl status docker

// 开启启动docker服务
systemctl enable docker

// 本地查看镜像文件
docker images
# 查看所有镜像的id
docker images -q

// 搜索redis镜像
docker search redis

// 拉取redis镜像(不指定版本号,默认是latest)
docker pull redis
# 拉取6.2版本的redis镜像
docker pull redis:6.2

// 删除指定镜像
docker rmi redis:6.2
# 删除所有镜像
docker rmi `docker images -q`

// 导出镜像
docker save -o [保存目标文件名称] [镜像名称]
docker save -o nginx.tar nginx:latest

// 加载本地镜像
docker load -i nginx.tar
Docker容器相关命令
// 查看正在运行容器
docker ps
# 查看所有容器
docker ps -a
# 查看容器的id
docker rm -aq

// 创建启动容器
docker run 参数
/*
 * -i 保持容器运行,通常与-t同时使用,加入it这两参数后,容器创建后自动进入容器,退出容器后,容器自动关闭
 * -t 为容器重新分配一个伪输入终端,通常与-i同时使用
 * -d 以守护(后台)模式运行容器,创建一个容器在后台运行,需要docker exec进入容器,退出后,容器不会关闭
 * -it 创建的容器一般称为交互式容器,-id创建的容器一般称为守护式容器
 * --name 为创建的容器命名
 */
# 通过-it创建的容器并立即进入容器,但是一退出容器就自动关闭
docker run -it --name=centos1 centos:7 /bin/bash
# 通过-id创建的容器不会立即进入容器,需要通过命令进入容器,退出容器不会自动关闭
docker run -id --name=centos2 centos:7
docker exec -it centos2 /bin/bash	# 操作centos2进入容器

// 暂停容器
docker pause 容器名称

// 丛暂停状态恢复
docker unpause 容器名称

// 停止容器
docker stop `容器名称`

// 删除容器
docker rm `容器名称`
# 删除所有容器
docker rm `docker rm -aq`

// 查看容器信息
docker inspect `容器名称`

// 查看容器运行日志
docker logs 容器id

// 退出容器
exit

若在创建容器时报这种错误时,此方案仅针对曾经正常运行过之后再遇到问题的情况,如果第一次启动就遇到了这个问题的需要寻找其它解决方案

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

先使用 docker ps -a 查询是否已经存在想创建的容器,若存在,使用 docker start [容器id] 开启容器,然后执行 docker run -it [容器id] /bin/bash 进入容器

Docker容器的数据卷
数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方的修改会立即同步;数据卷和容器的关系是多对多的关系
数据卷容器是指多容器进行数据交换,多个容器挂载同一个数据卷
-- 配置数据卷
// 创建启动容器,使用-v参数设置数据卷
docker run ... -v 宿主机目录(文件):容器内目录(文件) ...
# 目录必须是绝对路径;如果目录不存在,会自动创建;可以挂载多个数据卷
docker run -it --name=centos1 -v /root/data:/root/data_container centos:7 /bin/bash

-- 数据卷容器
docker run -it --name=centos2 -volumes-from centos1 centos:7 /bin/bash # 表示容器centos2挂载到容器centos1
Docker应用部署