Docker容器实战系列操作一~建立属于自己的数据库

经过多篇的命令学习,我们已经了解了基本上所有的命令,如今开始第二篇我们的实战操作。这次是操作数据库命令,好了也是两种方式一种是简单的命令行,第二种还是我们的DockerFIle文件操作。
当然首先还是看下我们简单的指令详解,巩固以下再去学习,这样让我们更加的熟悉与了解。

命令行的的操作

  1. 首先从仓库中获取我们的数据库。
docker pull mysql 
docker run -it --name  test-mysql -d mysql /bin/bash  //该命令会自己先检查镜像是否存在,不存在会进行下载。然后在进入到容器中。
  1. 启动容器
docker run -it --name test-mysql -d mysql  /bin/bash  //但是在这里会出现问题因为我们的mysql验证的问题需要进行账户和密码的操作 在这步进行设置好,当然也有编码的问题在这里也得设置。
//该命令就改变成为
docker run -p 3306:3306 --name test-mysql -v /home/ruiqi/Desktop/disk/mysql/conf/:/etc/mysql/my.cnf -v /home/ruiqi/Desktop/disk/mysql/logs:/logs -v /home/ruiqi/Desktop/disk/mysql/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql
    
    命令说明:
    
        -p 3306:3306:将容器的3306端口映射到主机的3306端口
    
        -v ~/mysql/conf/my.cnf:/etc/mysql/my.cnf:将主机~/mysql/conf/my.cnf挂载到容器的/etc/mysql/my.cnf (这里不额外加配置可以不用配置,我这边没有配置)
    
        -v ~/mysql/logs:/logs:将主机~/mysql/logs目录挂载到容器的/logs
    
        -v ~/mysql/data:/mysql_data:将主机~/mysql/data目录挂载到容器的/mysql_data 进行参数的挂载。保证容器挂了 ,数据还在
      
        -e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
  1. 如果上面执行启动容器报错出现已存在的字眼,我们需要用其他命令来启动
docker start test-mysql //该命令启动已停止的容器 。
docker stop test-mysql //该命令停止已启动的容器
  1. 上面步骤设置好容器后,进入容器
docker exec -it test-mysql /bin/bash //进入容器就可以跟更平常操作数据库一样操作了

DockerFIle文件操作数据库

FROM debian:stretch-slim
# 用于增加工作组和用户组
RUN groupadd -r mysql && useradd  -r -g mysql mysql
RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr && rm -rf /var/lib/apt/lists/*

ENV GOSU_VERSION 1.7
RUN set -x \
&& apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& gpgconf --kill all \
&& rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true \
&& apt-get purge -y --auto-remove ca-certificates wget
RUN mkdir /docker-entrypoint-initdb.d

RUN apt-get update && apt-get install -y --no-install-recommends \
# for MYSQL_RANDOM_ROOT_PASSWORD
        pwgen \
# for mysql_ssl_rsa_setup
        openssl \
# FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
# File::Basename
# File::Copy
# Sys::Hostname
# Data::Dumper
        perl \
    && rm -rf /var/lib/apt/lists/*

RUN set -ex; \
# gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
    key='A4A9406876FCBD3C456770C88C718D3B5072E1F5'; \
    export GNUPGHOME="$(mktemp -d)"; \
    gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
    gpg --export "$key" > /etc/apt/trusted.gpg.d/mysql.gpg; \
    gpgconf --kill all; \
    rm -rf "$GNUPGHOME"; \
    apt-key list > /dev/null

# 设置环境变量    
ENV MYSQL_MAJOR 5.7
ENV MYSQL_VERSION 5.7.23-1debian9

RUN echo "deb http://repo.mysql.com/apt/debian/ stretch mysql-${MYSQL_MAJOR}" > /etc/apt/sources.list.d/mysql.list
RUN { \
        echo mysql-community-server mysql-community-server/data-dir select ''; \
        echo mysql-community-server mysql-community-server/root-pass password ''; \
        echo mysql-community-server mysql-community-server/re-root-pass password ''; \
        echo mysql-community-server mysql-community-server/remove-test-db select false; \
    } | debconf-set-selections \
    && apt-get update && apt-get install -y mysql-server="${MYSQL_VERSION}" && rm -rf /var/lib/apt/lists/* \
    && rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \
    && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \
# ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime
    && chmod 777 /var/run/mysqld \
# comment out a few problematic configuration values
    && find /etc/mysql/ -name '*.cnf' -print0 \
        | xargs -0 grep -lZE '^(bind-address|log)' \
        | xargs -rt -0 sed -Ei 's/^(bind-address|log)/#&/' \
# don't reverse lookup hostnames, they are usually another container
    && echo '[mysqld]\nskip-host-cache\nskip-name-resolve' > /etc/mysql/conf.d/docker.cnf
# 设置一个挂载点
VOLUME /var/lib/mysql
# 将本目录下的脚本文件复制到
COPY docker-entrypoint.sh  /entrypoint.sh
COPY helthcheck.sh /healthcheck.sh
# 指定镜像的默认入坑了楼
ENTRYPOINT ["/entrypoint.sh"]

# 暴露端口
EXPOSE 3306 3306
#执行
CMD ["mysqld"]
  1. 该DockerFile是直接照搬github上的mysql5.7DockerFile,我用来主要是练习其命令。大家可以夺取github上多看。
  2. 执行脚本文件也参照文件中mysql5.7DockerFile
    3.进行doocker build -t mysql:test .
    等待执行完毕即可
  3. 剩下的操作跟上面就一直,可以参考上面所演示的内容启动docker.
  4. 实战的目的是让我们自己熟悉命令操作,并且掌握住,经常看别人的操作代码,也会提高我们自己的操作技能。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,183评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,850评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,766评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,854评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,871评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,457评论 1 311
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,999评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,914评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,465评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,543评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,675评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,354评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,029评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,514评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,616评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,091评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,685评论 2 360

推荐阅读更多精彩内容