當前位置:編程學習大全網 - 行動軟體 - 如何提交docker鏡像到DockerHub

如何提交docker鏡像到DockerHub

初次安裝部署好docker後,大多數鏡像可以從DockerHub 提取,但是大多數人都希望自己可以完全自定義壹個鏡像,那麽這裏需要壹個第三方工具 febootstrap

epel6的源提供febootstrap的RPM包

yum install docker-io febootstrap -y

service docker start

chkconfig docker --level35 on

復制代碼

制作CentOS6.6鏡像目錄

febootstrap -i yum -i iputils -i iproute -i bash -i vim-minimal -i coreutils -i tar -i net-tools centos6 base <a href="" target="_blank"></a> -u <a href="" target="_blank"></a>

復制代碼

-i 表示鏡像裏面安裝的RPM包(包括壹些人為有必要的軟件包)

centos6 表示鏡像的版本說明

base 表示生成的鏡像目錄

後面之後了系統安裝源和更新源為USTC

安裝執行後,會開始壹系列的RPM包下載安裝,過程與yum類似,安裝完成後當前目錄會多了base目錄,裏面就是壹個鏡像的系統文件

進入base目錄等於進入鏡像的根目錄

[root@image ~]# cd base/

[root@image base]# ls

bin boot dev etc home lib lib64 media mnt opt proc root sbin selinux srv sys tmp usr var

復制代碼

可以像壹般的系統文件壹樣先做壹些修改配置,例如配置第三方yum源等等

把base目錄把所有文件打包成二進制文件後導入docker創建為鏡像

cd ~/root/base/ && tar -c . | docker import - centos6:base

復制代碼

docker images 可以查看鏡像的信息

壹個基本centos鏡像創建完畢,下面再利用Dokcerfile制作mysql鏡像

cat Dockerfile

FROM centos6:base

MAINTAINER Lion "lioncui@163.com"

VOLUME /var/lib/mysql

RUN yum install mysql-server mysql -y

RUN echo -ne "NETWORKING=yes\\nHOSTNAME=mysql" > /etc/sysconfig/network

RUN echo -ne "bind-address = 0.0.0.0\\ndefault-storage-engine=innodb\\ninnodb_file_per_table\\n\

collation-server=utf8_general_ci\\ninit-connect='SET NAMES utf8'\\ncharacter-set-server = utf8" > insert

RUN sed -i "/user=mysql/r insert" /etc/my.cnf && rm -f insert

RUN echo -ne "/usr/bin/mysql_install_db\\n/usr/bin/mysqld_safe" >> /opt/mysql_start

RUN chmod 777 /opt/mysql_start

ENV PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:

WORKDIR /opt

EXPOSE 3306

CMD /bin/sh -c mysql_start

復制代碼

FROM 聲明以centos:base鏡像為基礎

MAINTAINER 聲明鏡像的維護者信息

VOLUME 掛載本地目錄到容器裏/var/lib/mysql目錄(這是mysql默認的數據保存目錄)

由於我希望數據可以持久化防止因為容器誤刪除而丟失,所以映射到宿主本地目錄

RUN 在鏡像中執行安裝mysql

在新鏡像中寫入HOSTNAME信息,因為mysql啟動過程需要network文件

在my.cnf配置文件插入壹些修改配置

創建啟動腳本

聲明環境變量

制定默認工作目錄

EXPOSE 聲明容器需要暴露的端口號

CMD 是指鏡像生成容器後自動執行的命令,類似docker exec,這裏是自動啟動mysql服務

根據Dockerfile創建mysql服務鏡像

docker build --rm=true -t mysql:frist .

查看鏡像的樹狀關系可以發現,mysql:frist是以centos:base為父鏡像

  • 上一篇:丁柳元的主要作品
  • 下一篇:淘寶店鋪綜合DSI是指什麽意思?
  • copyright 2024編程學習大全網