在 Docker 中使用 MySQL
提及虚拟化技术,我可是linuxContainer(LXC)的热爱者。但随着Docker技术的声名鹊起,我想在这展示一下如何使用带有Docker的MyS
提及虚拟化技术,我可是linuxContainer(LXC)的热爱者。但随着Docker技术的声名鹊起,我想在这展示一下如何使用带有Docker的MySQL。
Docker是什么?
实际上,Docker就是LXC的封装。使用起来很有意思。Docker采用LXC来虚拟化每个应用。所以在接下来的示例中,我们会启动chroot环境中一个被封装在自己命名空间内的mysql实例(你也可以设置Cgroups对应的资源)使用Docker的一个亮点就是统一文件系统(aufs)。所以当启动一个Docker容器后,它会记录其aufs总数并只会更新新写入的数据。
Aufs对于大多数应用来说十分有用,并且也能很好地支持数据库测试。在这我只想做个简单的示例-仅仅抛砖引玉,实用性也许并不高- Dockerfile. Dockerfile是Docker镜像的构建脚本
咱们来看看Dockerfile的内容:
FROM Ubuntu
MAINTAINER erkan yanar
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get install -y python-software-properties
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
RUN add-apt-repository 'deb precise main'
RUN apt-get update
RUN apt-get install -y mariadb-server
RUN echo "[mysqld]" >/etc/mysql/conf.d/docker.cnf
RUN echo "bind-address = 0.0.0.0" >>/etc/mysql/conf.d/docker.cnf
RUN echo "innodb_flush_method = O_DSYNC" >>/etc/mysql/conf.d/docker.cnf
RUN echo "skip-name-resolve" >>/etc/mysql/conf.d/docker.cnf
RUN echo "init_file = /etc/mysql/init" >>/etc/mysql/conf.d/docker.cnf
RUN echo "GRANT ALL ON *.* TO supa@'%' IDENTIFIED BY 'supa';" >/etc/mysql/init
EXPOSE 3306
USER mysql
ENTRYPOINT mysqld
你可以按自己的需求更改。明白了大意后,,可以进一步优化代码。比如,较少运行步骤:)
运行一下看看 (命名为mysql)
> cat $DOCKERFILENAME | docker build -t mysql -
很好!启动51个容器看看:
> time for i in $(seq 10 60 ) ; do docker run -d -p 50$i:3306 mysql ; done
..
real 0m27.446s
user 0m0.264s
sys 0m0.211s
这都是在我笔记本上的结果. 如果使用KVM性能会更好 :)
> docker ps | grep mysqld |wc -l
51
> docker ps | head -2
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d3a5181cd56 mysql:latest /bin/sh -c mysqld About a minute ago Up About a minute 0.0.0.0:5060->3306/tcp lonely_pare
快来试试吧 \o/
Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里
开源项目Docker,Red Hat新的虚拟化选择
dockerlite: 轻量级 Linux 虚拟化
Docker的搭建Gitlab CI 全过程详解
Docker 和一个正常的虚拟机有何区别?
Docker 将改变所有事情

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

退出 Docker 容器的四種方法:容器終端中使用 Ctrl D 快捷鍵容器終端中輸入 exit 命令宿主機終端中使用 docker stop <container_name> 命令宿主機終端中使用 docker kill <container_name> 命令(強制退出)

Docker 中將文件拷貝到外部主機的方法:使用 docker cp 命令:執行 docker cp [選項] <容器路徑> <主機路徑>。使用數據卷:在主機上創建目錄,在創建容器時使用 -v 參數掛載該目錄到容器內,實現文件雙向同步。

重啟 Docker 容器的方法:獲取容器 ID(docker ps);停止容器(docker stop <container_id>);啟動容器(docker start <container_id>);驗證重啟成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(參考 Docker 文檔)。

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

查看 Docker 日誌的方法包括:使用 docker logs 命令,例如:docker logs CONTAINER_NAME使用 docker exec 命令運行 /bin/sh 並查看日誌文件,例如:docker exec -it CONTAINER_NAME /bin/sh ; cat /var/log/CONTAINER_NAME.log使用 Docker Compose 的 docker-compose logs 命令,例如:docker-compose -f docker-com
