使用Docker镜像安装MySQL

小提示

镜像是 Docker 三大核心概念中最重要的,自Docker诞生之日起镜像就是相关社区最为热门的关键词。
Docker运行容器前需要本地存在对应的镜像,如果镜像不存在,Docker会尝试先从默认镜像仓库下载(默认使用 Docker Hub
公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。本章将围绕镜像这一核心概念介绍具体操作,包括如何使用 pull 命令从
Docker Hub
仓库中下载镜像到本地;如何查看本地已有的镜像信息和管理镜像标签;如何在远端仓库使用search命令进行搜索和过滤;如何删除镜像标签和镜像文件;如何创建用户定制的镜像并且保存为外部文件。最后,还将介绍如何往Docker
Hub仓库中推送自己的镜像。

1. 获取镜像
镜像是运行容器的前提,官方的Docker Hub网站已经提供了数十万个镜像供大家开放下载。
本节主要介绍 pecker镜像的 pull 子命令。可以使用 docker [image] pull 命令直接从 Docker Hub 镜像
源来下载镜像。 该命令的格式为 docker [image] pull NAME [ :TAG] 。其中, NAME 是镜像仓库名称
(用来区分镜像), TAG 是镜像的标签(往往用来表示版本信息) 。 通常情况下, 描述一个镜像需
要包括 “名称+标签“ 信息。

例如, 获取一个 mysql5.6 系统的基础镜像可以使用如下的命令:

docker pull mysql:5.6
2.列出本地镜像
2-1 : 本节主要介绍Docker镜像的ls、taginspect子命令。使用images命令列出镜像
docker images -a

docker image ls

如下图:可以看出刚才下载的 mysql5.6 的镜像,但是你会发现下面还有一个镜像是 latest 版本的。那是因为对于Docker镜像来说,如果不显式指定TAG, 则默认会选择 latest 标签,这会下载仓库中最新版本的镜像。所以你懂得!!!下面那个是最新版本的镜像。
列出本地所有镜像

★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆字段信息★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆

  • REPOSITORY:表示来自于哪个仓库,比如 ubuntu 表示ubuntu 系列的基础镜像;mysql表示…
  • TAG:镜像的标答信息, 比如 5.6、latest 表示不同的版本信息。 标签只是标记, 并不能标识镜像内容;
  • IMAGE_ID:镜像的ID(唯一标识镜像), 如果两个镜像的ID相同, 说明它们实际上指向了同一 个镜像, 只是具有不同标签名称而已;
  • CREATED:创建时间, 说明镜像最后的更新时间;
  • SIZE:镜像大小, 优秀的镜像往往体积都较小。

注意

一般来说, 镜像的latest 标签意味着该镜像的内容会跟踪最新版本的变更而变化, 内容是不稳定的。因此,从稳定性上考虑,不要在生产环境中忽略镜像的标签信息或使用默认的latest 标记的镜像。

2-2 :使用inspect命令查看详细信息
使用docker [mage] inspect命令可以获取该镜像的详细信息,包括制作者、适应架构、各层的数字摘要等:
[root@instance-fwgv21ga ~]# docker inspect mysql:5.6 
[
    {
        "Id": "sha256:b3983abaa3feff23bf58b849c7c2c0f84862e3a749a3181a0bdd6fcfa023f318",
        "RepoTags": [
            "mysql:5.6"
        ],
        "RepoDigests": [
            "mysql@sha256:411cb46904b646d1260e075505ee75d7457511412011eb03928e956eac1c0bf9"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2019-10-17T04:50:19.73840748Z",
        "Container": "809ae277b0d6f90236126d6c1545c22d0043d4f134d88c131d9e8908d6761ebd",
        "ContainerConfig": {
            "Hostname": "809ae277b0d6",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3306/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.7",
                "MYSQL_MAJOR=5.6",
                "MYSQL_VERSION=5.6.46-1debian9"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"mysqld\"]"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:4b605b5514b3f9cd052e5e282184e04045d5dd2c1132bb329ba45a5f4d6e835c",
            "Volumes": {
                "/var/lib/mysql": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "DockerVersion": "18.06.1-ce",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3306/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.7",
                "MYSQL_MAJOR=5.6",
                "MYSQL_VERSION=5.6.46-1debian9"
            ],
            "Cmd": [
                "mysqld"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:4b605b5514b3f9cd052e5e282184e04045d5dd2c1132bb329ba45a5f4d6e835c",
            "Volumes": {
                "/var/lib/mysql": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 302446311,
        "VirtualSize": 302446311,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/b89b4d5df2821b529666dafc462c617f155819006755667b603a9a9a77334089/diff:/var/lib/docker/overlay2/7a9bac6cb1b3ac718598c5c77f27934ea2f0a2e0d92b7ba54163beb14232efac/diff:/var/lib/docker/overlay2/2b653a91aaed77ee2d4fc211e0d5eed63762716f1249b3ec1365a2b1570d0911/diff:/var/lib/docker/overlay2/381f022807d2aeb7c7437a7e1ab2bb2eed1c651bb011aa6a7a64190fe30692ff/diff:/var/lib/docker/overlay2/335fceb49467165174dcee3326602e990fb126eb8ccde8dec92b6ad8428482bb/diff:/var/lib/docker/overlay2/657cf9df3ed65c93e167c70decc503939b4970a2f0169b2d28b88a145fab953b/diff:/var/lib/docker/overlay2/e44d7193ca8e53d83220d2225f4712532c7c26022688c725733ed691530889d0/diff:/var/lib/docker/overlay2/c4f1d8b656d016b4c2b34468bedd2beeec3fd9817806f760a80f932c23e8fd02/diff:/var/lib/docker/overlay2/f7bf6053db884d714da885e224b0b59829fb390fb5a86e2937a71064ab11b10d/diff:/var/lib/docker/overlay2/8eb6175129c5ba986ca01bebd66a427c999f16f97205fd7e244b4804a0056ab1/diff",
                "MergedDir": "/var/lib/docker/overlay2/75c628634224ff5c26fb79b11189837a1a4d2be18ef7d95d748894c819cfe227/merged",
                "UpperDir": "/var/lib/docker/overlay2/75c628634224ff5c26fb79b11189837a1a4d2be18ef7d95d748894c819cfe227/diff",
                "WorkDir": "/var/lib/docker/overlay2/75c628634224ff5c26fb79b11189837a1a4d2be18ef7d95d748894c819cfe227/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:67ecfc9591c8a90936d6f1c27a3b0c907ea7d62a4d8255a3f34691344e8243f2",
                "sha256:096401f81d2cc1a314d933b976cd8092696cd2335877fcc6b7d38415921d8f37",
                "sha256:3c353031df8b38e7bad841b6c43e95e52163ca872589d6b6d4b1e1d5d9d76364",
                "sha256:d8cb0457f31e8062fc574eac76bb69f4d9d75367b947a15d01d9d19e0ec80bd1",
                "sha256:452ea71a57ff989e8cb297ab455a540b24c58a992ed2ded887cafa567ca56274",
                "sha256:60477422128d0fe35e956246c664979c58b7e0b10433b52c31a6f94319a24ef7",
                "sha256:718ed803b23941612a0ed385b7ec3cef672019aeaa96dc892e5cd3ce83cdb53b",
                "sha256:7fbeee2bc706e05799634d53dec201c7a24d2d36c45814c7708c2ebf7497bcae",
                "sha256:14577980fc3069fff3b7b9f47371a954918a13b823fe3724dd353cdbd5ae032f",
                "sha256:0a0b7d4fcd0cebd90d190fa53cd5c9b7d90dd67d7187da35c041b6a6ea5f565d",
                "sha256:b8a5eeccd82681297d4ae57415cd86243f0047bd9b5099b584908fa7461667f9"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

3.运行容器

安装完成后,我们可以使用以下命令来运行 mysql 容器:

docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.6

★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ 参数说明 ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
-i 即 :(interaction:交互) 以交互模式运行容器,通常与 -t 同时使用;
-t 即 :(terminal:终端) 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-d 后台运行容器,并返回容器ID;
–name=“mysql-test”: 为容器指定一个名称(随意指定);
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。 MYSQL_ROOT_PASSWORD=root:设置 MySQL 服务 root 用户的密码。
-e 即 :(environment:环境) MYSQL_ROOT_PASSWORD=root 设置环境变量;
命令最后的 mysql:5.6是库标签,就是 repository : tag


docker run -itd --name jsh_mysql -p 3306:3366 -e MYSQL_ROOT_PASSWORD=‘Xxyua&as12LLb’ -d mysql:8.0.20
参数 -p 3306:3366 用于将容器端口映射到宿主机端口。这里的 3306:3366 表示将容器的 3366 端口映射到宿主机的 3306 端口。
容器端口(Container Port):3366 - 这是 MySQL 服务在容器内部监听的端口。
宿主机端口(Host Port):3306 - 这是您希望从宿主机或其他网络上的客户端访问 MySQL 服务时使用的端口。

运行MySQL容器图例

4.安装成功

通过 docker ps 命令查看是否安装成功:
安装成功图例

5.服务重启后docker重启mysql

列出docker中的容器 :docker ps -a

[root@centos-7-1 ~]# docker ps -a
CONTAINER ID    IMAGE          COMMAND                  CREATED         STATUS           PORTS                    NAMES
1c1ef6c930a0    mysql:5.6      "docker-entrypoint..."   24 hours ago    Up 24 hours      0.0.0.0:3306->3306/tcp   mysql-test

启动mysql:docker start

[root@centos-7-1 ~]# docker start 1c1ef6c930a0
1c1ef6c930a0

Alt

提示
本人以抱着学习的态度去分享,以上内容如有雷同,不胜荣幸!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值