https://www.cnblogs.com/han-1034683568/p/6941337.html?utm_source=debugrun&utm_medium=referral
https://yeasy.gitbooks.io/docker_practice/content/image/dockerfile/cmd.html
docker search mysql
docker pull mysql:5.6
docker run -p 3306:3306 --name mymysql -v /usr/local/mymysql/conf:/etc/mysql/conf.d -v /usr/local/mymysql/logs:/logs -v /usr/local/mymysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v /usr/local/mymysql/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
-v /usr/local/mymysql/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v /usr/local/mymysql/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
-d: 后台运行容器,并返回容器ID
docker run -v /usr/local/mypython:/usr/src/myapp --name python3.6 -w /usr/src/myapp python:3.6 python testPython.py
-v 挂载主机上的文件卷到容器
-w 容器内的默认工作目录
#进入容器
docker exec -it mysql bash
docker build -t mysql:5.7 .
-t ---------指定镜像名和标签
FROM mysql:5.7.20
MAINTAINER FinTester_Helix
# 指定工作目录
WORKDIR /usr/fin/mysql
#设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#设置免密登录
ENV MYSQL_ALLOW_EMPTY_PASSWORD yes
#将所需文件放到容器中
COPY setup.sh ./
COPY schema.sql ./
COPY privileges.sql ./
#设置容器启动时执行的命令
CMD ["sh", "/setup.sh"]
setup.sh
#!/bin/bash
# set -e
#查看mysql服务的状态,方便调试,这条语句可以删除
echo `service mysql status`
echo '1.启动mysql....2320'
#启动mysql
service mysql start
sleep 5
#echo `service mysql status`
#echo '2.开始导入数据....'
#导入数据
#mysql < schema.sql
#echo '3.导入数据完毕....'
#sleep 3
#echo `service mysql status`
#重新设置mysql密码
#echo '4.开始创建用户及授权....'
#mysql < privileges.sql
#echo '5.创建用户及授权....'
#sleep 3
echo `service mysql status`
#echo `mysql容器启动完毕,且数据导入成功`
tail -f /dev/null
privileges.sql
use mysql;
select host, user from user;
-- 因为mysql版本是5.7,因此新建用户为如下命令:
create user testgroup identified by '123456';
-- 将所有数据库的权限授权给创建的testgroup用户,密码为123456:
-- grant all privileges on *.* to 'test'@'%'identified by '123456' with grant option
-- all代表接受所有操作,比如 select,insert,delete....; *.* 代表所有库下面的所有表;% 代表这个用户允许从任何地方登录;为了安全起见,这个%可以替换为你允许的ip地址;
grant all privileges on *.* to testgroup@'%' identified by '123456' with grant option;
-- 这一条命令一定要有:
flush privileges;
touch mysql.dockerfile
docker build -t mysql:5.7 -f mysql.dockerfile .
-
命令行创建
1. 拉取官方的镜像,标签为5.6 -
docker pull mysql:5.6
5.6: Pulling from library/mysql
fc7181108d40: Pull complete
787a24c80112: Pull complete
a08cb039d3cd: Pull complete
4f7d35eb5394: Pull complete
5aa21f895d95: Pull complete
345649b63bc3: Pull complete
591a87fc59ec: Pull complete
6019ecdb5901: Pull complete
aadc682b6a75: Pull complete
e0969183ab5f: Pull complete
8a01a78fff5a: Pull complete
Digest: sha256:e4a70c0f52bfda9ed28d2127b461ff44cbc381450e7ca22e83936560d8875f14
Status: Downloaded newer image for mysql:5.6
2. 查看镜像
- docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.6 3ed1080b793f 13 days ago 256MB
python 3.6 2bb3204ab1d1 2 months ago 924MB
3. 运行容器