一. Docker简介

Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。同时,Docker也是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机。

1.基本组成架构

在这里插入图片描述

镜像(images)

从认识上简单的来说,就是面向对象中的类,相当于一个模板。从本质上来说,镜像相当于一个文件系统。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

容器(Container)

容器,从认识上来说,就是类创建的实例,就是依据镜像这个模板创建出来的实体。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

仓库(Repository)

仓库,从认识上来说,就好像软件包上传下载站,有各种软件的不同版本被上传供用户下载。镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

2.Centos7下Docker的安装

Centos7安装docker,centos8安装会有写不同可能会报错!!!下面再说

  • 查看系统内核(必须是3.10以上版本)
  uname -r

在这里插入图片描述

  • 查看虚拟机配置
cat /etc/os-release

在这里插入图片描述

确定好虚拟机的配置后安装Docker

参照官网:

  • 卸载Docker旧的版本

    yum remove docker \
    >                   docker-client \
    >                   docker-client-latest \
    >                   docker-common \
    >                   docker-latest \
    >                   docker-latest-logrotate \
    >                   docker-logrotate \
    >                   docker-engine
    

在这里插入图片描述

  • yum工具包安装

    yum install -y yum-utils
    
  • 下载镜像设置为阿里云镜像

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  • 建议更新软件包的索引

    yum makecache fast
    
  • 安装Docker相关的源 docker-ce为社区版 docker-ee为企业版

    yum install docker-ce docker-ce-cli containerd.io
    
  • 启动Docker

    systemctl start docker
    
  • 判断Docker是否安装成功

    docker version
    

在这里插入图片描述

出现这个,安装成功!

3.Centos8下Docker的安装

安装依赖

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

下载Docker镜像

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

安装Docker

yum install docker-ce docker-ce-cli containerd.io

可能出现问题:
在这里插入图片描述

解决包的冲突:

yum erase podman buildah

再次执行:

yum install docker-ce docker-ce-cli containerd.io

启动容器

systemctl start docker

开机自动启动

systemctl enable docker

安装参考

可能出现的问题参考

帮助命令

docker version # 显示docker的基本信息
docker info # 显示docker的系统信息包括镜像和容器的数量
docker 命令 --help # 帮助命令

安装成功之后,配置Docker镜像加速:

# 编辑daemon.json文件,无则自动创建
vi /etc/docker/daemon.json

加入镜像加速:

{
    "registry-mirrors": [
        "https://ccr.ccs.tencentyun.com/",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://mirror.baidubce.com/",
        "https://dockerproxy.com/"
    ]
}
4.镜像的基本命令

查看docker安装的所有镜像

docker images -a # 查看全部镜像
docker images -q # 查看所有镜像id

docker search搜索镜像

docker search mysql # 搜索mysql镜像

docker pull 下载镜像

docker pull mysql :5.7 # 指定版本下载

docker rmi删除镜像

docker rmi -f id # 删除id的镜像
docker rmi -f ${docker images -aq} # 删除全部的镜像
5.容器的基本命令

新建容器并启动

docker run [参数] image
# 参数
--name="Name" 容器名字,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口

列出所有运行的容器

docker ps -a # 列出当前正在运行的容器和历史运行过的容器
docker ps -n=? # 显示正在创建的容器
docker ps -q # 显示当前容器的编号

退出容器

exit # 容器停止并退出
Ctrl + p + q # 容器不停止退出

删除容器

docker rm id # 删除指定的容器
docker rm -f $(docker ps -aq) # 删除所有容器

启动和停止容器

systemctl restart docker # 重启docker
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止

可以通过配置阿里云镜像来下载容器

登录阿里云==》容器镜像服务==》镜像中心==》镜像加速器

场景一:Docker安装Mysql创建并启动

参考文章:https://blog.csdn.net/zouxuhang/article/details/107824441

  • 下载mysql5.7

    docker pull mysql:5.7
    
  • 创建容器实例并启动,挂载并启动

    -v 表示外部文件的挂载到容器的文件中容易操作 并且可以同步

    docker run -p 3306:3306 --name mysql \
    -v /mydata/mysql/log:/var/log/mysql \
    -v /mydata/mysql/data:/var/lib/mysql \
    -v /mydata/mysql/conf:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    -d mysql:5.7
    

在这里插入图片描述
设置挂载目录/mydata/mysql/conf下的文件my.cnf需要指定mysql的编码格式为UTF-8

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation connection = utf8_unicode_ci
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
  • 进入容器中

    docker exec -it mysql /bin/bash
    mysql为容器名字
    

    查看安装在那个目录

    whereis mysql
    
场景二:Docker安装Redis创建并启动
  • 下载redis

    docker pull redis
    
  • 挂载目录并创建redis.conf

    mkdir -p /mydata/redis/conf
    touch redis.conf  #在conf文件夹下运行此命令
    
  • 挂载并启动

     docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
     -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
    -d redis redis-server /etc/redis/redis.conf
    
  • 进入redis客户端

    docker exec -it redis redis-cli
    
  • 需要持久化redis数据(AOF)

    在redis.conf文件中配置appendonly yes

其它配置参考官方:redis.conf

场景三:Docker安装Ngnix创建并启动
docker run -p 80:80 --name nginx -d nginx:1.10
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html
-v /mydata/nginx/logs:/var/log/nginx
-v /mydata/nginx/conf:/etc/nginx
-d nginx:1.10
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐