目录
这是一篇制作docker镜像的博客。镜像里安装了MySQL 8.2.06,且镜像是以CentOS8.4.2105为基础制作的。镜像的制作环境为Mac M1。下面分步介绍制作方法,仅供参考。如果有出错的地方欢迎留言讨论。
选择基础镜像
选择一个合适的镜像去安装MySQL等工具至关重要。在这里我选择了CentOS8镜像作为基础镜像。喜欢Ubuntu或者其他镜像的小伙伴可以自己下载尝试。下面的命令将CentOS8镜像下载到本地:
docker pull centos:centos8.4.2105
📚提示:如果下载centos镜像速度过慢,可以尝试更换镜像源。更换镜像源的方法这里不再介绍,需要的小伙伴可以自己搜索。
下载完毕,我们使用docker images可以看到刚刚下载的镜像:
$ docker images centos
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos8.4.2105 e6a0117ec169 6 months ago 272MB
在容器内安装MySQL
进入容器内部
为了在容器内部安装MySQL,我们首先需要运行容器:
$ docker run -itd -p 10234:3306 --privileged=true --name mysql_demo centos:centos8.4.2105 /sbin/init
4c48b7ce4425af6db96d0502d47781b664ad668b58e0675bc5c22980c3463280
$ docker exec -it 4c48b7ce4425a /bin/bash
[root@4c48b7ce4425 /]#
docker run命令会启动一个容器。下面是对上面命令的参数解读:
选项 | 描述 |
---|---|
-i | 以交互式模式运行容器。 |
-t | 为容器重新分配一个伪输入终端。 |
-d | 后台运行容器。 |
-p | 指定端口映射。在上面的例子中,将容器运行的宿主机10234端口映射到容器内部的3306端口。 |
--privileged | privileged=true,表示容器内的root用户拥有真正的root权限。 |
--name | 为启动的容器指定一个名字。在上面的例子中,为运行的容器命名为mysql_demo。 |
注意到我们使用的命令不是/bash/bin,而是/sbin/init,这表示容器运行时要初始化系统环境。
docker exec命令会进入到容器内部。容器id只需要从开头写出一部分即可,不需要全部写全。
看到 命令提示符变为[root@4c48b7ce4425 /]# 后,我们就进入到了容器内部中。可以使用hostname命令测试验证一下是不是在容器内部:
[root@4c48b7ce4425 /]# hostname
4c48b7ce4425
主机名变成了容器id开头的部分子字符串。说明我们已经处于容器中了。接下来的流程就好比在一台CentOS8服务器上安装MySQL一样简单。
安装必要的工具
我们下载的镜像是一个纯净的CentOS,很多基础的