docker上安装使用mysql镜像

背景:

现如今不管什么服务和应用基本都可以在docker里跑一跑了,但是在我个人的印象中,像数据库这种比较重要大型且数据容易受伤的应用是不适合在docker里跑的。但是也有很多人尝试在docker中跑mysql等数据库,所以也试着尝试一下。(好吧,重点是领导喜欢~~)

获取镜像:

mysql的镜像可以自己用dockerfile制作一个,或者直接到官方的docker镜像库中下载,本文用的是官方镜像。

# docker pull mysql

# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

docker.io/mysql latest d9124e6c552f 12 days ago 383.4 MB

运行容器:

1:正常运行。

启动容器:

# docker run --name cmh-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d docker.io/mysql

进入容器:

# docker-enter cmh-mysql

进入mysql:

root@3a2b8ab0d971:~# mysql -u root -pmy-secret-pw

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.7.16 MySQL Community Server (GPL)

Copyright (c) 2000, 2016,Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

以上就创建了一个mysql的docker容器,可以看到版本为5.7.16。但是这样创建的容器有两个问题,一是容器删除后,数据就丢失了,二是要访问数据库,必须进入到容器里面才可以。

2:持久化数据,映射开放mysql端口

创建宿主机数据存放目录:

# mkdir -p /opt/data/mysql

启动容器:

# docker run --name cmh-mysql -v /opt/data/mysql/:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/mysql

c38f50a540ff4d5ecf1a5ec49fb721335a8e1b79dec58229cf5e00553f988e44

查看容器:

# docker ps

CONTAINER ID        IMAGE                    COMMAND                  CREATED            STATUS              PORTS        NAMES

c38f50a540ff        docker.io/mysql          "docker-entrypoint.sh"  9 seconds ago      Up 8 seconds        0.0.0.0:3306->3306/tcp        cmh-mysql

查看端口:

# netstat -ntpl

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address          Foreign Address        State      PID/Program name

tcp6      0      0 :::3306                :::*                    LISTEN      28657/docker-proxy

查看宿主机上的mysql数据:

# cd /opt/data/mysql

# ll

total 188452

-rw-r-----. 1 systemd-bus-proxy ssh_keys 56 Dec 6 16:01 auto.cnf

-rw-r-----. 1 systemd-bus-proxy ssh_keys 1325 Dec 6 16:01 ib_buffer_pool

-rw-r-----. 1 systemd-bus-proxy ssh_keys 79691776 Dec 6 17:16 ibdata1

-rw-r-----. 1 systemd-bus-proxy ssh_keys 50331648 Dec 6 17:16 ib_logfile0

-rw-r-----. 1 systemd-bus-proxy ssh_keys 50331648 Dec 6 16:01 ib_logfile1

-rw-r-----. 1 systemd-bus-proxy ssh_keys 12582912 Dec 6 17:16 ibtmp1

drwxr-x---. 2 systemd-bus-proxy ssh_keys 4096 Dec 6 16:01 mysql

drwxr-x---. 2 systemd-bus-proxy ssh_keys 8192 Dec 6 16:01 performance_schema

drwxr-x---. 2 systemd-bus-proxy ssh_keys 8192 Dec 6 16:01 sys

-p 3306:3306把容器的mysql端口3306映射到宿主机的3306端口,这样想访问mysql就可以直接访问宿主机的3306端口。

-v /opt/data/mysql:/var/lib/mysql,即把宿主机/opt/data/mysql/目录映射到容器的/var/lib/mysql目录。

注意事项:

1:在使用-v选项映射目录时,宿主机需关闭SElinux:

# setenforce 0

或者给数据目录添加相关selinux权限:

# chcon -Rt svirt_sandbox_file_t /my/own/datadir

2:-v 选项原本是把宿主机的目录映射进容器,但是在本文中,是反过来的。即是把容器中的目录映射出宿主机,这是因为官方镜像在制作的时候使用了VOLUME /var/lib/mysql选项。这使得容器中/var/lib/mysql成为一个单独的卷组,在使用挂载选项-v时,就可以把该目录映射出宿主机。

可以参考官方mysql镜像的dockerfile:

https://github.com/docker-library/mysql/blob/4dd33136c4739667a223d39b6f829beb27b235cf/5.7/Dockerfile

DOCKER介绍 点击查看

Docker从入门到实践  点击查看

(0)

相关推荐

  • docker连接spring boot和mysql容器方法介绍

    在之前使用docker部署运行了Spring Boot的小例子,但是没有使用数据库.在这一篇中,介绍docker如何启动mysql容器,以及如何将Spring Boot容器与mysql容器连接起来运行. docker基本命令 首先熟悉一下在操作过程中常用的docker基本命令: docker images:列出所有docker镜像 docker ps:列出所有运行中的容器,-a参数可以列出所有容器,包括停止的 docker stop container_id:停止容器 docker start

  • Docker + Nodejs + Kafka + Redis + MySQL搭建简单秒杀环境

    秒杀活动可以说在互联网上随处可见,从12306抢票,到聚划算抢购,我们生活的方方面面都可以看到秒杀的身影.秒杀的架构设计也是对于一个架构师架构设计能力的一次考验.本文的目的并不在于提供一个可以直接落地的设计方案,而是意在提供一个简单的方法,一个思路,使大家能够对于秒杀背后的一些设计有更感性的认识, 并且可以自己亲自动手实践一下.所有的配置及源码都在本文最后的GitHub repository中可以找到. 首先,先简单介绍下本文中会涉及到的一些组件,如下图所示: JMeter:用JMeter来模拟

  • 详解Docker创建Mysql容器并通过命令行连接到容器

    拉取网易蜂巢的mysql-server:5.6 docker pull hub.c.163.com/nce2/mysql:5.6 创建mysql5.6容器 1master+3个slave docker run --name mysql-master -d -P hub.c.163.com/nce2/mysql:5.6 docker run --name mysql-slave1 -d -P hub.c.163.com/nce2/mysql:5.6 docker run --name mysql-

  • 详解通过Docker搭建Mysql容器+Tomcat容器连接环境

    1.实验目的:web容器能访问部署在另外容器中的MySQL 2.步骤1:拉取mysql镜像,拉取命令如下: docker pull mysql//官网的最新mysql进行 3.步骤2:拉取tomcat镜像,拉取命令如下: docker pull tomcat --name xuguokun/jdk-tomcat 4.步骤3:创建mysql的一个容器,容器的名字是mymysql,创建命令如下: 复制代码 代码如下: docker run --name mymysql -p 3306:3306  -

  • Docker搭建 Nginx+PHP+MySQL 环境并部署WordPress实践

    Docker基于LXC实现了把软件封装到一个完整的文件系统,可以在docker容器中运行所需的一切代码,运行环境,系统工具和系统库.由于docker使用独立于主机的文件系统,可以确保软件在不同的主机环境中仍然保持运行环境不变.docker与主机共用一个操作系统内核,使用docker容器具有轻量级的特点,能占用更少的内存快速启动容器. 下面我们学习使用docker来部署目前非常流行的博客系统wordpress的运行环境nginx php mysql.那么docker部署wordpress的运行环境

  • docker上安装使用mysql镜像

    背景: 现如今不管什么服务和应用基本都可以在docker里跑一跑了,但是在我个人的印象中,像数据库这种比较重要大型且数据容易受伤的应用是不适合在docker里跑的.但是也有很多人尝试在docker中跑mysql等数据库,所以也试着尝试一下.(好吧,重点是领导喜欢~~) 获取镜像: mysql的镜像可以自己用dockerfile制作一个,或者直接到官方的docker镜像库中下载,本文用的是官方镜像. # docker pull mysql # docker images REPOSITORY TA

  • 在docker上安装运行mysql实例

    希望在自己的机器模拟一下公司中微服务的构建,使用docker部署了mysql实例,使用spring boot进行了CRUD(增删改查)操作进行了一下验证,在后面的学习中也可以尝试更多的框架和组件. ps:实验环境是:ubuntu 14.04, 64位 1.获取mysql镜像 从docker hub的仓库中拉取mysql镜像 sudo docker pull mysql 查看镜像 sudo docker images mysql latest 18f13d72f7f0 2 weeks ago 38

  • docker通过Dockerfile构建mysql镜像的方法

    构建Dockerfile ,路径 /docker/mysql FROM hub.c.163.com/library/mysql:5.7 #作者信息 MAINTAINER hu "***@qq.com" #修改编码方式 RUN echo "character-set-server=utf8" >> /etc/mysql/mysql.conf.d/mysqld.cnf RUN service mysql restart EXPOSE 3306 到Docker

  • 在Docker上安装配置Oracle教程

    由于工作需要,但是对于Docker 又是一窍不通,网上的资料又很少,真是一个头两个大.好歹最后终于找了各种资料终于捣鼓成功. 地址:https://github.com/wnameless/docker-oracle-xe-11g .直接 Git clone 到本地就行了 安装 Docker shell 下: docker pull wnameless/oracle-xe-11g 运行,并开放 49160 和 49161 端口,分别对应 22 端口和 Oracle 端口(SSH 和 oracle

  • Docker安装配置MySQL的实现步骤

    目录 前言 环境 安装 创建并启动MySQL容器 提醒 创建并启动MySQL容器命令 参数说明: 进入到MySQL容器内部进行配置 进入命令 连接MySQL 更改MySQL密码 测试连接 前言 MySQL 是世界上最受欢迎的开源数据库,So~本文将演示如何在Docker上安装并且配置MySQL. 环境 CentOS 7 Docker 20.10.10 安装 拉取镜像 docker pull mysql 如果要指定版本,在mysql后面加上:+版本号,例如: docker pull mysql:8

  • docker上快速搭建gitlab、gitlab-runer及实现CI/CD功能

    目录 1.docker上安装gitlab 1.1 拉取镜像 1.2 启动gitlab服务 1.3 配置root账号密码 2.docker上安装gitlab runner docker基本配置及命令不熟的,看我这篇 https://www.jb51.net/article/206760.htm 1.docker上安装gitlab 参考:https://www.jb51.net/article/244867.htm 1.1 拉取镜像 docker search gitlab docker pull

  • Ubuntu 18.04上安装 phpMyAdmin的详细教程

    我们将安装 phpMyAdmin 在 Ubuntu18.04 上配合 Apache 一起工作. 在安装 phpMyAdmin 之前需要已经安装了LAMP栈并提供了web页面. 如果没有安装可以参照 Ubuntu 18.04上安装Apache,MySQL,PHP 来先安装. 1. 安装 phpMyAdmin 让我们从更新包列表开始,并在Ubuntu 18.04上安装phpMyAdmin.下面我们有两个用&&分隔的命令.第一个命令将更新包列表,以确保您获得phpMyAdmin的最新版本和依赖项

  • 详解docker 制作mysql镜像并自动安装脚本

    centos7环境下 一键制作mysql docker镜像,并安装 centos7环境下 一键制作mysql docker镜像,并安装 shell脚本内容如下: #docker自动安装mysql echo -e "\033[32m '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&

  • 详解docker下的Mysql镜像的使用方法

    通常初学者学习docker时,不太清楚怎样拉取一个Mysql镜像并使用,今天这篇文章简单介绍一下使用流程. 一.预习一下用到的docker命令: 1.docker images 列出本地主机上的镜像. 2.docker pull 从Docker Hub中拉取或者更新指定镜像. 3.docker run -d 标识是让 docker 容器在后台运行. -p 标识通知 Docker 将容器内部使用的网络端口映射到我们使用的主机上. --name 定义一个容器的名字,如果在执行docker run时没

  • Mac上使用Docker如何快速启动MySQL测试

    本文主要讨论使用Docker快速启动 MySQL 测试的方法,包括Mac环境.一起看看吧! 近来业界有很多对Docker的讨论,其生态系统发展得很快,然而,从简单的"入门"或"引导"类的文章中能容易地找到成熟的技术,但Docker不然.我在Mac上试玩过Docker,但Mac绝对是Docker界的二等公民.当我在Giuseppe的博客上看到关于在Mac上使用新Docker beta<Docker for Mac beta and MySQL>一文时,决定

随机推荐