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 ----连接容器