问题背景:
我自制了一个 mysql的容器,每次启动容器后,都需要进入容器,然后启动mysql服务,效率太低。
解决思路:
通过Dockerfile来实现容器内服务自启动。
一: 基础环境准备
准备基础环境:
- docker mysql镜像(问题当中的mysql镜像)
- 启动脚本
二: 编写Dockerfile文件
新建目录:
mkdir -p /opt/docker-file/ubuntu-mysql
编写Dockerfile文件
#新建Dockerfile文件
touch Dockerfile
Dockerfile文件内容如下:
# 选择一个已有的os镜像作为基础 FROM ubuntu-ssh-jdk-mysql:v1
# 镜像的作者 MAINTAINER binzaijun
COPY start-mysql.sh /root/
# 配置java环境变量
ENV JAVA_HOME /usr/java/jdk
ENV PATH $JAVA_HOME/bin:$PATHRUN
chmod 777 /root/start-mysql.sh \
CMD ["sh","/root/start-mysql.sh"]
三: 编写启动脚本
start-mysql.sh 脚本内容如下:
#!/bin/bash
echo '1. starting mysql...'
service mysql start
echo '2. starting ssh...'
/usr/sbin/sshd
tail -f /dev/null
四: 构建docker image
构建命令:
docker build -t="ubuntu-mysql:v2" .
五:查看docker 镜像
docker images
六:验证
运行容器:
docker run -it -d --name mysql ubuntu-mysql:v2
进入容器:
docker exec -it 容器id /bin/bash
测试mysql:
mysql -uroot -proot
基于mysql的docker容器使mysql服务随容器启动而启动完成!!