Docker与应用容器化

Docker与应用容器化

  • Docker简介
  • Docker安装
    • 内核升级
    • 卸载之前的安装
    • 使用国内阿里云安装
    • 启动和运行
  • Docker操作
  • MySQL与容器化
    • 拉取镜像
    • 构建Docker
    • 使用MySQL容器
  • 实验总结

Docker简介

通俗来说,Docker就是一个可以将软件打包在一个标准的“货柜”里,并可以轻松迁移的平台。Docker容器打包软件到一个包含了所有运行所需环境,包括代码、运行时状态、系统工具、系统库等任何可以被安装在服务器上的环境中的文件系统里,这样软件无论被迁移到哪里都是同样的运行环境。如果开发环境没有问题,用Docker打包成容器在服务器上运行,就不会再遇见环境问题。

Docker 现在几乎是容器的代名词。确实,是 Docker 将容器技术发扬光大。同时,围绕 Docker 还有一个生态系统。Docker 是这个生态系统的基石,但完善的生态系统才是保障 Docker 以及容器技术能够真正健康发展的决定因素。

Docker安装

内核升级

由于安装需要CentOS系统内核版本高于3.10,我们首先升级内核:

1.导入key

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

2.安装elrepo的yum源

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

3.安装内核

yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml

当前为5.4.3:
Docker与应用容器化_第1张图片
4.查看默认启动顺序

awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg 

在这里插入图片描述
默认启动的顺序是从0开始,新内核是从头插入(目前位置在0,而4.4.4的是在1),所以需要选择0:

grub2-set-default 0

然后reboot重启,使用新的内核,下面是重启后使用的内核版本:
在这里插入图片描述
5.删除旧的内核

yum remove kernel

卸载之前的安装

如果之前安装过:

# 移除
yum -y remove docker docker-common docker-selinux docker-engine docker-engine-selinux container-selinux docker-ce

# 或者
yum -y remove docker*

#删除所有的镜像、容器、数据卷、配置文件等
sudo rm -rf /var/lib/docker

# 查看安装的docker相关软件 卸载情况
yum list installed | grep docker

使用国内阿里云安装

# 设置 repository
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 使用阿里云镜像
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 不指定版本号 默认安装最新版
sudo yum install docker-ce

启动和运行

启动docker:

sudo systemctl start docker

尝试运行hello-world 映像:

sudo docker run hello-world

由于是第一次运行,这里会出现找不到image 'hello-world:latest’的情况:
在这里插入图片描述
不过很快docker会自动从Docker Hub上获取到最新的Hello World镜像,下载到了本地。然后即可运行成功:
Docker与应用容器化_第2张图片

Docker操作

1.运行镜像:

使用命令:

docker run -it ubuntu bash

为了提高下载速度,可以将镜像换成阿里云的镜像:
在这里插入图片描述
运行结果如下所示:
Docker与应用容器化_第3张图片
2.显示本地镜像库

使用命令:

docker images

Docker与应用容器化_第4张图片
3.查看帮助信息
使用命令:

docker --help

Docker与应用容器化_第5张图片
4.显示运行中的容器

使用命令:

docker ps

在这里插入图片描述
5.显示所有容器

使用命令:

docker ps -a

在这里插入图片描述
6.继续运行原容器并进入

使用命令:

# your docker name
docker restart naughty_panini
docker ps
docker attach naughty_panini

在这里插入图片描述

MySQL与容器化

拉取镜像

使用命令:

docker pull mysql:5.7

Docker与应用容器化_第6张图片

构建Docker

1.录入内容

创建一个文件夹并创建一个文件:
在这里插入图片描述
添加内容如下所示:
在这里插入图片描述
2.构建镜像

使用命令:

docker build . -t hello

Docker与应用容器化_第7张图片
3.运行镜像

使用命令:

docker run -it --rm hello -H

Docker与应用容器化_第8张图片

使用MySQL容器

1.启动服务器

使用命令:

sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
docker ps

在这里插入图片描述
2.启动客户端

首先输入命令启动容器内 sh 进程:

docker run -it --net host mysql:5.7 "sh"

进入到docker命令行下运行以下命令即可启动MySQL客户端:

mysql -h127.0.0.1 -P3306 -uroot -proot

Docker与应用容器化_第9张图片
3.执行数据库操作

我们可以执行一些简单的mysql语句进行测试:

create database test;
use test;

CREATE TABLE `userinfo` (
    `uid` INT(10) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(64) NULL DEFAULT NULL,
    `departname` VARCHAR(64) NULL DEFAULT NULL,
    `created` DATE NULL DEFAULT NULL,
    PRIMARY KEY (`uid`)
);

CREATE TABLE `userdetail` (
    `uid` INT(10) NOT NULL DEFAULT '0',
    `intro` TEXT NULL,
    `profile` TEXT NULL,
    PRIMARY KEY (`uid`)
);

Docker与应用容器化_第10张图片
4.挂载卷保存db

查看数据库文件:

docker exec -it mysql2 bash

进入docker命令行,输出如下命令:

ls /var/lib/mysql

Docker与应用容器化_第11张图片
5.Dockerfile 的 VOLUME /var/lib/mysql 的含义

使用命令:

docker container prune -f
docker volume prune –f
docker volume ls

Docker与应用容器化_第12张图片
6.创建卷并挂载

使用命令:

docker rm $(docker ps -a -q) -f -v
docker volume create mydb
docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=root -v mydb:/var/lib/mysql -d mysql:5.7

Docker与应用容器化_第13张图片
7.启动客户端容器链接服务器

使用命令:

docker run --name myclient --link mysql2:mysql -it mysql:5.7 bash

启动bash命令后,输入env查看环境变量:

env

然后启动mysql客户端链接到服务器:

mysql -hmysql -P3306 -uroot -proot

Docker与应用容器化_第14张图片

实验总结

本次实验主要是学习了如何安装Docker,在安装内核的过程中花费的时间比较长,主要是一些命令不熟悉的缘故,而且因为种种原因虚拟机的增强功能还出现了一些问题,不过最后终于是调好了。本次实验中,也自己尝试了一些Docker的基本操作命令,学习了使用Docker容器化的方式启动MySQL,也让自己回顾了一下数据库的相关知识,总的来说还是收获较多,实际进行操作比单单看印象会更加深刻。

你可能感兴趣的:(Docker与应用容器化)