docker容器自定义镜像的两种方法

1.使用docker commit

使用镜像启动容器,在该容器上修改,在使用命令另存为一个镜像

实现思路:使用一个基础的镜像,这个镜像可以在centos的官网进行下载,在使用docker进行创建

一个容器,进入到该容器中,删除原有的yum源,自己从宿主机上分享一个yum源,实现自己的yum

源仓库,这个则作为自己的基础镜像,在用docker commit命令进行镜像存储。

[root@docker01 ~]# docker run -it centos bash    -------用docker镜像运行容器
ba591c357232c64c835cf4bfa964001d1b98a853a806a46a422b1dd11136d232
[root@docker01 ~]# docker ps                                ------查看正在运行的容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ba591c357232        centos              "bash"              9 seconds ago       Up 6 seconds                            small_newton
[root@ba591c357232 /]# cd /etc/yum.repos.d/   
[root@ba591c357232 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Sources.repo  CentOS-fasttrack.repo
CentOS-CR.repo    CentOS-Media.repo      CentOS-Vault.repo
[root@ba591c357232 yum.repos.d]# rm -rf *
[root@ba591c357232 yum.repos.d]# vi local.repo   ----搭建自己的yum源
[local_source]
name=CentOS Source
baseurl=ftp://192.168.6.254/centos7
enabled=1
gpgcheck=0
[root@ba591c357232 yum.repos.d]# yum install net-tools  psmisc  lftp  iproute  ---用搭建的yum源安装包
[root@ba591c357232 yum.repos.d]# exit 
[root@docker01 ~]# docker commit ba591c357232 myos:zhy             -------------将以上的容器自定义为镜像
sha256:7c9ea4abc39813f60abf2970939ce9d810795960b0cca51f71fa9b1b449c7463
[root@docker01 ~]# docker images                     -----------查看镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myos                zhy                 7c9ea4abc398        7 seconds ago       262.7 MB
[root@docker01 ~]# docker run -it myos:zhy    --------用自己定义的镜像创建容器

2.Dockerfile文件创建镜像文件

使用Dockerfile工作流程
– mkdir build; cd build
– vim Dockerfile
– docker build -t imagename Dockerfile

特别强调一个Dockerfile文件只放在一个文件夹里面
[root@docker01 ~]# mkdir zhy     ---创建目录
[root@docker01 ~]# cd zhy/        -----进入到目录下
[root@docker01 zhy]# vim Dockerfile    -----编辑Dockerfile 文件
[root@docker01 zhy]# cp /etc/yum.repos.d/local.repo  local.repo   -----复制本地的yum源到存放Dockerfile 文件的目录下
[root@docker01 zhy]# ls
Dockerfile  local.repo
[root@docker01 zhy]# cat Dockerfile
FROM centos:latest   -----使用的基础镜像
RUN  rm -f /etc/yum.repos.d/*    ---在容器下运行
ADD  local.repo /etc/yum.repos.d/local.repo  ---把宿主机上的文件加到docker容器里
RUN  yum install -y net-tools psmisc lftp iproute vim   ------在容器下运行安装软件
[root@docker01 zhy]# cat local.repo
[root@docker01 zhy]# docker build -t  centos:latest  .    ------用Dockerfile文件编写镜像,所用的基础镜像是centos标签是latest 
Sending build context to Docker daemon 3.072 kB
Step 1 : FROM centos:latest
 ---> e934aafc2206
Step 2 : RUN rm -f /etc/yum.repos.d/*
 ---> Using cache
 ---> b255db59aa67
Step 3 : ADD local.repo /etc/yum.repos.d/local.repo
 ---> eb695975254e
Removing intermediate container a2f3e8b07221
Step 4 : RUN yum -y install net-tools vim-enhanced bridge-utils psmisc vim
 ---> Running in f7206f86d9bd
[root@docker01 xx]# docker run -it centos:latest      -----运行自定义的镜像
[root@docker01 zhy]# docker ps -a     -----查看正在运行的镜像
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                              PORTS               NAMES
079b4af29c58        2c428750fbd0        "/bin/sh -c 'yum -y i"   5 minutes ago       Exited (1) 5 minutes
[root@docker01 zhy]# docker images    ------查看docker的镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
testos              latest              94a37eb84943        3 minutes ago       310.8 MB
[root@docker01 zhy]# docker run -it testos:latest     ----运行镜像
[root@d010ff955f61 /]# ifconfig 

[root@docker01 zhy]#  docker ps -a     ---查看所有都容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                              PORTS               NAMES
d010ff955f61        testos:latest       "/bin/bash"              30 minutes ago      Exited (1) 23 minute
[root@docker01 zhy]#  docker start d010ff955f61   ----开启容器
d010ff955f61
[root@docker01 zhy]# docker exec -it d010ff955f61 bash    ----连接容器

猜你喜欢

转载自blog.csdn.net/zhydream77/article/details/81208555