Dockerfile構建鏡像與部署

    基於上一章的基本介紹,這一部分寫一下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的一些配置我們也能實現一些我們想要的功能,比如端口映射,卷組掛載等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章