歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> CentOS6下Docker的鏡像管理

CentOS6下Docker的鏡像管理

日期:2017/2/27 15:56:48   编辑:Linux教程

鏡像是Docker的靈魂

Docker的鏡像是Docker容器運行的基礎。學習Docker很重要的一點是鏡像的使用。
使用默認docker命令下載的鏡像是外部制作好的,而我希望從頭做一個鏡像,並自己管理。
本文在CentOS 6下使用Docker制作鏡像,對這個過程做詳細的記錄。

理解鏡像和容器

鏡像(image)和容器(container)是什麼關系?

  • 鏡像是靜態的,容器是動態的
  • 容器是鏡像運行起來後的體現

鏡像常用命令

查看鏡像

docker images

將鏡像保存為tar包

docker save centos6-mytest > centos6-mytest.tar

將導出的tar包加載為鏡像

docker load < centos6-mytest.tar

制作基礎鏡像

下載鏡像制作工具 febootstrap

yum -y install febootstrap

使用febootstrap制作鏡像(CentOS6的鏡像),完成後鏡像目錄是centos6-image。大概是335MB

#febootstrap 基本用法是febootstrap [--options] REPO TARGET [MIRROR] ,後面可根據實際情況安裝相應的包 -i 包名
febootstrap -i bash \
-i wget -i yum -i iputils -i iproute -i man -i vim-minimal \
-i openssh-server -i openssh-clients -i cronie-anacron -i crontabs -i rsyslog \
centos6 centos6-image http://mirrors.aliyun.com/centos/6/os/x86_64/

將鏡像導入到docker

cd centos6-image && tar -c . | docker import - centos6-base

驗證鏡像可用

docker images  #可以看到剛才制作好的centos6-base
docker run -t -i centos6-base /bin/bash  #可創建容器,進入bash命令行

制作應用鏡像

基礎鏡像只包含了基礎的系統,但是它沒有包含實際的應用程序,不能產生實際的作用。
我們需要在base系統上增加應用,並生成新的鏡像。有兩種方法,一種是Docker File的方式。

使用Docker File的方式制作新鏡像

編寫Docker文件。vim Dockerfile

#Dockerfile
FROM centos6-base
MAINTAINER Yonghua
RUN sed -ri 's/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g' /etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
EXPOSE 22
RUN echo 'root:123456' | chpasswd
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
CMD /usr/sbin/sshd -D
#End

使用docker build產生新鏡像

docker build -t centos6-ssh .  #最後的.表示Dockerfile文件所在的路徑

好了,通過docker images 命令可以看到新制作好的鏡像centos6-ssh

docker images #可以看到鏡像了

將Container直接commit成鏡像

DockerFile 使用定義的方式來創建鏡像,而有時候我們期望通過將Container轉化為鏡像的方式來獲得鏡像。

首先創建一個container,進入bash 進行我們的定制

docker run -t -i centos6-base /bin/bash

然後通過commit命令將container變成鏡像

#docker commit CONTAINER_ID IMAGE_NAME
docker commit 83a9fb9eeefd centos6-mytest
Copyright © Linux教程網 All Rights Reserved