经过多篇的命令学习,我们已经了解了基本上所有的命令,如今开始第二篇我们的实战操作。这次是操作数据库命令,好了也是两种方式一种是简单的命令行,第二种还是我们的DockerFIle文件操作。
当然首先还是看下我们简单的指令详解,巩固以下再去学习,这样让我们更加的熟悉与了解。
命令行的的操作
首先从仓库中获取我们的数据库。
docker pull mysql docker run -it --name test-mysql -d mysql /bin/bash //该命令会自己先检查镜像是否存在,不存在会进行下载。然后在进入到容器中。
启动容器
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用户的密码
如果上面执行启动容器报错出现已存在的字眼,我们需要用其他命令来启动
docker start test-mysql //该命令启动已停止的容器 。 docker stop test-mysql //该命令停止已启动的容器
上面步骤设置好容器后,进入容器
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"]
该DockerFile是直接照搬github上的mysql5.7DockerFile,我用来主要是练习其命令。大家可以夺取github上多看。
执行脚本文件也参照文件中mysql5.7DockerFile
3.进行doocker build -t mysql:test .等待执行完毕即可
剩下的操作跟上面就一直,可以参考上面所演示的内容启动docker.
实战的目的是让我们自己熟悉命令操作,并且掌握住,经常看别人的操作代码,也会提高我们自己的操作技能。
作者:LuckQI
链接:https://www.jianshu.com/p/ff4f282ab4ca
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦