Docker容器化技术体验

本文介绍了在Ubuntu 20.04上安装和使用Docker的详细过程,包括如何从阿里云镜像源加速下载MySQL,解决Docker服务问题,以及实现MySQL容器的数据持久化。通过实例展示了Docker基本操作和构建MySQL镜像。
摘要由CSDN通过智能技术生成

Ubuntu下的Docker容器化技术体验

简介

容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行。

对 IT 行业来说,这是一项非常有价值的技术。而对 IT 从业者来说,掌握容器技术是市场的需要,也是提升自我价值的重要途径。

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

实验环境

Ubuntu 20.04

安装Docker

首先我们更新 ubuntu 的 apt 源索引

sudo apt-get update

然后我们通过 apt-get 允许通过 HTTP 使用仓库

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

在这里插入图片描述
之后添加 Docker 官方 GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

在这里插入图片描述

sudo apt-key fingerprint 0EBFCD88

在这里插入图片描述

设置 Docker 稳定版仓库

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

在这里插入图片描述

添加仓库后,更新 apt 源索引

sudo apt-get update

安装最新版 Docker CE(社区版)

sudo apt-get install docker-ce

在这里插入图片描述

检查 Docker CE 是否安装正确,下载并运行 Hello World

sudo docker run hello-world

在这里插入图片描述
显示本地镜像库内容
在这里插入图片描述
获得帮助
在这里插入图片描述

Docker的基本操作

显示运行中容器
在这里插入图片描述

显示所有容器(包含已中止)
在这里插入图片描述
继续运行原容器并进入

在这里插入图片描述

MySQL和容器化(利用阿里云镜像源)

拉去MySQL镜像

docker pull mysql:5.7

这个时候,我们会发现 pull 得特别慢,那怎么办呢
我们需要换成阿里云的镜像源
我们访问如下的配置文件

vim /etc/docker/daemon.json

在配置文件中加上如下代码

{
  "registry-mirrors": ["https://r3u6ty4i.mirror.aliyuncs.com","https://mirror.baidubce.com"],
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"}
}

然后重启 docker 服务即可替换成阿里云镜像源

重启 docker

sudo systemctl restart docker

这个时候我们使用sudo docker info命令可以查看到镜像源中已经有阿里云镜像源

Registry Mirrors:
  https://r3u6ty4i.mirror.aliyuncs.com/
  https://mirror.baidubce.com/

这样我们 pull 镜像源就会快很多。
在这里插入图片描述
pull完后我们再次使用docker images命令就可以看到 MySQL
在这里插入图片描述

构建docker镜像

首先创建文件夹 mydock
在这里插入图片描述

 mkdir mydock && cd mydock
  vi dockerfile

在其中创建 dockerfile 并录入

FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]

在这里插入图片描述
构建镜像

 docker build . -t hello

在这里插入图片描述
运行镜像

docker run -it --rm hello -H

在这里插入图片描述
然后我们用以下代码尝试运行 MySQL 容器,但是会出现以下报错

sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

在这里插入图片描述
前一部分的报错是说 docker 服务启动时定义的自定义链 DOCKER 被清除
根据别人博客的解决方案,重启 docker 即可,但是我们却不行。
后一部分的报错是指3306端口被占用,然后我们通过以下指令来查看是什么进程占用了3306端口。

sudo netstat -apn | grep 3306

在这里插入图片描述
这时我们发现是 MySQL 自己的服务器占用了这个端口
此时我们简单的 kill 是不会彻底杀死这个服务器的,服务器会换一个进程继续监听,这个时候我们需要使用以下指令来停止服务(其中 mysqld 是查询到的进程名)

sudo /etc/init.d/mysqld stop

在这里插入图片描述
这样3306端口就不会被占用了
这个时候我们再次运行 MySQL 容器就不会报错了
在这里插入图片描述
我们再次使用docker ps命令来查看当前使用的容器,就可以看到 MySQL 已经被创建
在这里插入图片描述

连接MySQL

我们之前已经创建好了 MySQL ,现在我们就要连接上我们刚才创建的 MySQL
使用的登录密码是之前创造 MySQ L数据库的时候自己设置的

sudo docker exec -it mysql bash
mysql -uroot -p123456

成功连接会出现下面的提示
在这里插入图片描述
这样我们就成功连接到了 docker 中的 MySQL 容器。

MySQL容器数据持久化

但是这样的 MySQL 容器数据是不持久化的,也就是说在我们退出后数据是会被删除的。
这个时候我们就需要在创建 MySQL 容器的时候进行卷的挂载。
在创建 MySQL 数据库的时候我们手动添加 -v 指令,-v 命令代表主机和容器之间的映射关系,后面的两个路径分别为主机路径以及 MySQL 容器内的路径

docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

这样创建完的数据库容器就会跟我们本地的数据相映射,在 MySQL 容器内的数据也就可以持久化了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值