基於上一章的基本介紹,這一部分寫一下Dockerfile的學習過程,通過Dockerfile我們可以方便的自動定製去構建我們的鏡像文件,寫好Dockerfile對於後期構建自動化是非常有利的。下面與在centos 7下安裝MariaDB 爲例:
Dockerfile文件:
# # MariaDB Dockerfile # # https://github.com/dockerfile/mariadb # # Pull base p_w_picpath. FROM centos:centos7.1.1503 MAINTAINER Carson,xiaoluo <[email protected]> # Install MariaDB. ENV TERM xterm ENV TZ "Asia/Shanghai" ENV DATA_DIR /var/lib/mysql ADD epel.repo /etc/yum.repos.d/epel.repo RUN \ yum install -y mariadb mariadb-server && \ yum install -y --enablerepo=epel pwgen python-pip && \ yum clean all RUN \ mysql_install_db --user=mysql --ldata=${DATA_DIR} ADD mysqld_charset.cnf /etc/my.cnf.d/ # Define mountable directories. VOLUME ["/var/lib/mysql"] # Expose ports. EXPOSE 3306 CMD ["mysqld_safe"]
註釋說明:
FROM centos:centos7.1.1503 基於哪個父鏡像創建,沒有就從遠程倉庫下載 MAINTAINER 維護者信息 ENV TERM xterm 定義環境變了,定義一個Docker的終端還有下面的時鐘,變量。 ADD 添加文件到Docker容器裏 RUN 運行shell下面的環境部署命令 VOLUME 提供一個掛載的目錄,這樣像mysql的/data的文件我們可以掛載到本機 EXPOSE 暴露端口,方便對內網的服務進行端口映射 CMD 啓動服務後運行的命令
一、創建鏡像:
docker build -t xiaoluo/mysql:5.6 .
二、查看鏡像:
[root@localhost test]# docker p_w_picpaths REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE xiaoluo/mysql 5.6 82aa5a0aaf30 16 minutes ago 382.2 MB
三、啓動鏡像以掛載的方式掛載一個本地文件,然後測試:
1、啓動鏡像:
[root@localhost test]# docker run -d -p 3306:3306 -v /var/lib/docker/mydata/:/var/lib/mysql xiaoluo/mysql:5.6
##3306是Dockefile暴露出來的端口,-v 是掛載本地的/var/lib/docker/mydata/到mysql 暴露出來的目錄:由VOLUME指定。這樣的好處是我們可以再容器存在或者死掉時候數據持久性存儲。
2、測試,登錄mysql 創建一個xiaoluo的數據庫:
[root@localhost test]# docker exec -it 87ff9f4594b2 /bin/bash [root@87ff9f4594b2 /]# mysql MariaDB [(none)]> create database xiaoluo; Query OK, 1 row affected (0.04 sec) MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | | xiaoluo | +--------------------+
3、退出容器查看本地目錄/var/lib/docker/mydata/ 目錄:
[root@localhost test]# cd /var/lib/docker/mydata/ [root@localhost mydata]# ls aria_log.00000001 aria_log_control ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock performance_schema test xiaoluo
4、刪除xiaoluo這個庫查看容器裏是否還存在、可以看到已經被刪除:
[root@localhost mydata]# rm -rf xiaoluo [root@localhost mydata]# docker exec -it 87ff9f4594b2 /bin/bash [root@87ff9f4594b2 /]# [root@87ff9f4594b2 /]# [root@87ff9f4594b2 /]# mysql MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test |
+--------------------+
使用Dockerfile可以參考官方文檔:https://github.com/dockerfile
使用Dockerfile可以幫助我們快速的構建和部署我們的Docker環境,通過Dockerfile的一些配置我們也能實現一些我們想要的功能,比如端口映射,卷組掛載等。