通俗来说,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
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镜像,下载到了本地。然后即可运行成功:
1.运行镜像:
使用命令:
docker run -it ubuntu bash
为了提高下载速度,可以将镜像换成阿里云的镜像:
运行结果如下所示:
2.显示本地镜像库
使用命令:
docker images
docker --help
使用命令:
docker ps
5.显示所有容器
使用命令:
docker ps -a
使用命令:
# your docker name
docker restart naughty_panini
docker ps
docker attach naughty_panini
使用命令:
docker pull mysql:5.7
1.录入内容
创建一个文件夹并创建一个文件:
添加内容如下所示:
2.构建镜像
使用命令:
docker build . -t hello
使用命令:
docker run -it --rm hello -H
1.启动服务器
使用命令:
sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
docker ps
首先输入命令启动容器内 sh 进程:
docker run -it --net host mysql:5.7 "sh"
进入到docker命令行下运行以下命令即可启动MySQL客户端:
mysql -h127.0.0.1 -P3306 -uroot -proot
我们可以执行一些简单的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 exec -it mysql2 bash
进入docker命令行,输出如下命令:
ls /var/lib/mysql
5.Dockerfile 的 VOLUME /var/lib/mysql 的含义
使用命令:
docker container prune -f
docker volume prune –f
docker volume ls
使用命令:
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 run --name myclient --link mysql2:mysql -it mysql:5.7 bash
启动bash命令后,输入env查看环境变量:
env
然后启动mysql客户端链接到服务器:
mysql -hmysql -P3306 -uroot -proot
本次实验主要是学习了如何安装Docker,在安装内核的过程中花费的时间比较长,主要是一些命令不熟悉的缘故,而且因为种种原因虚拟机的增强功能还出现了一些问题,不过最后终于是调好了。本次实验中,也自己尝试了一些Docker的基本操作命令,学习了使用Docker容器化的方式启动MySQL,也让自己回顾了一下数据库的相关知识,总的来说还是收获较多,实际进行操作比单单看印象会更加深刻。