問題:有一個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 hanzhe
COPY start-mysql.sh /root/
# 配置java環境變量
ENV JAVA_HOME /usr/java/jdk
ENV PATH $JAVA_HOME/bin:$PATH
RUN 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服務隨容器啟動而啟動完成!!