使用dockerfile打包centos实践
作者:我怎么又饿了呀
文章介绍了Docker操作CentOS镜像的常用命令,包括拉取、运行容器(交互/后台模式)、安装软件、复制文件、编写Dockerfile构建镜像及使用commit保存容器为新镜像的流程
Docker使用dockerfile&commit打包centos
常用命令
Docker 使用过程中有许多常用的命令,完整列表可以查看docker help
镜像操作
docker images # 查看镜像 docker rmi <镜像ID或名称> # 删除镜像 docker search <关键词> # 在镜像仓库中搜索 docker pull <镜像> # 从镜像仓库拉取镜像 docker save -o image.tar <镜像ID或名称> # 将镜像保存到文件 docker load -i image.tar # 从文件载入镜像
容器操作
docker ps # 查看运行的容器 docker ps -a # 查看所有的容器 docker restart <容器ID或名称> # 重启容器 docker stop <容器ID或名称> # 停止容器 docker start <容器ID或名称> # 启动停止的容器 docker rm <容器ID或名称> # 删除容器,必须先停止,使用 -f 参数强制删除 docker logs <容器ID或名称> # 查看容器的日志 docker exec <容器ID或名称> <命令> # 在容器中执行命令 docker exec -ti <容器ID或名称> bash # 典型的用法是登陆容器的 bash docker top <容器ID或名称> # 查看容器的进程 docker inspect <容器ID或名称> # 查看容器的底层信息,如 IP 等
一、 安装运行centos镜像
1.拉取镜像
docker pull centos:7
2.查询镜像
docker images
3.运行镜像
docker run -it centos:7 /bin/bash
- -i:internel交互
- -t:terminal终端
- -d:daemon守护进程,后台运行
4.安装一些基础包
yum -y install wget gcc
5.退出容器
exit
6.查询docker的进程
docker ps -a
7.停止
docker stop 容器id
二、将本地文件复制到docker容器中
docker cp 本地文件路径 容器ID/容器NAME:容器内路径
举例:
docker cp /Users/wuhanxue/Downloads/rabbitmq_delayed_message_exchange-3.9.0.ez ID:/opt/rabbitmq/plugins
或者通过容器名
docker cp /Users/wuhanxue/Downloads/rabbitmq_delayed_message_exchange-3.9.0.ez ID:/opt/rabbitmq/plugins
三、编写dockerfile文件
FROM centos:7 #centos:7做基础镜像 MAINTAINER XHC<XHC> #作者信息 ENV MYPATH /tmp #指定容器运行时的环境变量 WORKDIR $MYPATH #镜像的工作目录 RUN yum -y install vim #运行指令(安装vim) RUN yum -y install net-tools #运行指令(安装 net-tools) EXPOSE 80 #保留端口配置80 端口 CMD echo $MYPATH CMD echo "success---------ok" CMD /bin/bash
打包成新的镜像文件
docker build -f dockerfile -t xhcentos:7 .
Sending build context to Docker daemon 2.048kB Step 1/10 : FROM centos:7 ---> eeb6ee3f44bd Step 2/10 : MAINTAINER XHC<XHC> ---> Running in 415830efe82d Removing intermediate container 415830efe82d ---> 8a5ab9458859 Step 3/10 : ENV MYPATH /tmp ---> Running in 33aece0b2f0f Removing intermediate container 33aece0b2f0f ---> 532fcfd5fa96 Step 4/10 : WORKDIR $MYPATH ---> Running in 6933a9798b86 Removing intermediate container 6933a9798b86 ---> 892b9b1892f8 Step 5/10 : RUN yum -y install vim ---> Running in b261a5704b35 Loaded plugins: fastestmirror, ovl Determining fastest mirrors * base: mirrors.huaweicloud.com * extras: mirrors.huaweicloud.com * updates: mirrors.huaweicloud.com Resolving Dependencies --> Running transaction check ---> Package vim-enhanced.x86_64 2:7.4.629-8.el7_9 will be installed --> Processing Dependency: vim-common = 2:7.4.629-8.el7_9 for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64 --> Processing Dependency: which for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64 --> Processing Dependency: perl(:MODULE_COMPAT_5.16.3) for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64 --> Processing Dependency: libperl.so()(64bit) for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64 --> Processing Dependency: libgpm.so.2()(64bit) for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64 --> Running transaction check ---> Package gpm-libs.x86_64 0:1.20.7-6.el7 will be installed ---> Package perl.x86_64 4:5.16.3-299.el7_9 will be installed --> Processing Dependency: perl(Socket) >= 1.3 for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Scalar::Util) >= 1.10 for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl-macros for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(threads::shared) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(threads) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(constant) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Time::Local) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Time::HiRes) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Storable) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Socket) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Scalar::Util) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Pod::Simple::XHTML) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Pod::Simple::Search) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Getopt::Long) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Filter::Util::Call) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(File::Temp) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(File::Spec::Unix) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(File::Spec::Functions) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(File::Spec) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(File::Path) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Exporter) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Cwd) for package: 4:perl-5.16.3-299.el7_9.x86_64 --> Processing Dependency: perl(Carp) for package: 4:perl-5.16.3-299.el7_9.x86_64 ---> Package perl-libs.x86_64 4:5.16.3-299.el7_9 will be installed ---> Package vim-common.x86_64 2:7.4.629-8.el7_9 will be installed --> Processing Dependency: vim-filesystem for package: 2:vim-common-7.4.629-8.el7_9.x86_64 ---> Package which.x86_64 0:2.20-7.el7 will be installed --> Running transaction check ---> Package perl-Carp.noarch 0:1.26-244.el7 will be installed ---> Package perl-Exporter.noarch 0:5.68-3.el7 will be installed ---> Package perl-File-Path.noarch 0:2.09-2.el7 will be installed ---> Package perl-File-Temp.noarch 0:0.23.01-3.el7 will be installed ---> Package perl-Filter.x86_64 0:1.49-3.el7 will be installed ---> Package perl-Getopt-Long.noarch 0:2.40-3.el7 will be installed --> Processing Dependency: perl(Pod::Usage) >= 1.14 for package: perl-Getopt-Long-2.40-3.el7.noarch --> Processing Dependency: perl(Text::ParseWords) for package: perl-Getopt-Long-2.40-3.el7.noarch ---> Package perl-PathTools.x86_64 0:3.40-5.el7 will be installed ---> Package perl-Pod-Simple.noarch 1:3.28-4.el7 will be installed --> Processing Dependency: perl(Pod::Escapes) >= 1.04 for package: 1:perl-Pod-Simple-3.28-4.el7.noarch --> Processing Dependency: perl(Encode) for package: 1:perl-Pod-Simple-3.28-4.el7.noarch ---> Package perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 will be installed ---> Package perl-Socket.x86_64 0:2.010-5.el7 will be installed ---> Package perl-Storable.x86_64 0:2.45-3.el7 will be installed ---> Package perl-Time-HiRes.x86_64 4:1.9725-3.el7 will be installed ---> Package perl-Time-Local.noarch 0:1.2300-2.el7 will be installed ---> Package perl-constant.noarch 0:1.27-2.el7 will be installed ---> Package perl-macros.x86_64 4:5.16.3-299.el7_9 will be installed ---> Package perl-threads.x86_64 0:1.87-4.el7 will be installed ---> Package perl-threads-shared.x86_64 0:1.43-6.el7 will be installed ---> Package vim-filesystem.x86_64 2:7.4.629-8.el7_9 will be installed --> Running transaction check ---> Package perl-Encode.x86_64 0:2.51-7.el7 will be installed ---> Package perl-Pod-Escapes.noarch 1:1.04-299.el7_9 will be installed ---> Package perl-Pod-Usage.noarch 0:1.63-3.el7 will be installed --> Processing Dependency: perl(Pod::Text) >= 3.15 for package: perl-Pod-Usage-1.63-3.el7.noarch --> Processing Dependency: perl-Pod-Perldoc for package: perl-Pod-Usage-1.63-3.el7.noarch ---> Package perl-Text-ParseWords.noarch 0:3.29-4.el7 will be installed --> Running transaction check ---> Package perl-Pod-Perldoc.noarch 0:3.20-4.el7 will be installed --> Processing Dependency: perl(parent) for package: perl-Pod-Perldoc-3.20-4.el7.noarch --> Processing Dependency: perl(HTTP::Tiny) for package: perl-Pod-Perldoc-3.20-4.el7.noarch --> Processing Dependency: groff-base for package: perl-Pod-Perldoc-3.20-4.el7.noarch ---> Package perl-podlators.noarch 0:2.5.1-3.el7 will be installed --> Running transaction check ---> Package groff-base.x86_64 0:1.22.2-8.el7 will be installed ---> Package perl-HTTP-Tiny.noarch 0:0.033-3.el7 will be installed ---> Package perl-parent.noarch 1:0.225-244.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: vim-enhanced x86_64 2:7.4.629-8.el7_9 updates 1.1 M Installing for dependencies: gpm-libs x86_64 1.20.7-6.el7 base 32 k groff-base x86_64 1.22.2-8.el7 base 942 k perl x86_64 4:5.16.3-299.el7_9 updates 8.0 M perl-Carp noarch 1.26-244.el7 base 19 k perl-Encode x86_64 2.51-7.el7 base 1.5 M perl-Exporter noarch 5.68-3.el7 base 28 k perl-File-Path noarch 2.09-2.el7 base 26 k perl-File-Temp noarch 0.23.01-3.el7 base 56 k perl-Filter x86_64 1.49-3.el7 base 76 k perl-Getopt-Long noarch 2.40-3.el7 base 56 k perl-HTTP-Tiny noarch 0.033-3.el7 base 38 k perl-PathTools x86_64 3.40-5.el7 base 82 k perl-Pod-Escapes noarch 1:1.04-299.el7_9 updates 52 k perl-Pod-Perldoc noarch 3.20-4.el7 base 87 k perl-Pod-Simple noarch 1:3.28-4.el7 base 216 k perl-Pod-Usage noarch 1.63-3.el7 base 27 k perl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 k perl-Socket x86_64 2.010-5.el7 base 49 k perl-Storable x86_64 2.45-3.el7 base 77 k perl-Text-ParseWords noarch 3.29-4.el7 base 14 k perl-Time-HiRes x86_64 4:1.9725-3.el7 base 45 k perl-Time-Local noarch 1.2300-2.el7 base 24 k perl-constant noarch 1.27-2.el7 base 19 k perl-libs x86_64 4:5.16.3-299.el7_9 updates 690 k perl-macros x86_64 4:5.16.3-299.el7_9 updates 44 k perl-parent noarch 1:0.225-244.el7 base 12 k perl-podlators noarch 2.5.1-3.el7 base 112 k perl-threads x86_64 1.87-4.el7 base 49 k perl-threads-shared x86_64 1.43-6.el7 base 39 k vim-common x86_64 2:7.4.629-8.el7_9 updates 5.9 M vim-filesystem x86_64 2:7.4.629-8.el7_9 updates 11 k which x86_64 2.20-7.el7 base 41 k Transaction Summary ================================================================================ Install 1 Package (+32 Dependent packages) Total download size: 19 M Installed size: 63 M Downloading packages: warning: /var/cache/yum/x86_64/7/base/packages/gpm-libs-1.20.7-6.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Public key for gpm-libs-1.20.7-6.el7.x86_64.rpm is not installed Public key for perl-Pod-Escapes-1.04-299.el7_9.noarch.rpm is not installed -------------------------------------------------------------------------------- Total 2.3 MB/s | 19 MB 00:08 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Importing GPG key 0xF4A80EB5: Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>" Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 Package : centos-release-7-9.2009.0.el7.centos.x86_64 (@CentOS) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : gpm-libs-1.20.7-6.el7.x86_64 1/33 Installing : 2:vim-filesystem-7.4.629-8.el7_9.x86_64 2/33 Installing : 2:vim-common-7.4.629-8.el7_9.x86_64 3/33 Installing : which-2.20-7.el7.x86_64 4/33 install-info: No such file or directory for /usr/share/info/which.info.gz Installing : groff-base-1.22.2-8.el7.x86_64 5/33 Installing : 1:perl-parent-0.225-244.el7.noarch 6/33 Installing : perl-HTTP-Tiny-0.033-3.el7.noarch 7/33 Installing : perl-podlators-2.5.1-3.el7.noarch 8/33 Installing : perl-Pod-Perldoc-3.20-4.el7.noarch 9/33 Installing : 1:perl-Pod-Escapes-1.04-299.el7_9.noarch 10/33 Installing : perl-Encode-2.51-7.el7.x86_64 11/33 Installing : perl-Text-ParseWords-3.29-4.el7.noarch 12/33 Installing : perl-Pod-Usage-1.63-3.el7.noarch 13/33 Installing : 4:perl-macros-5.16.3-299.el7_9.x86_64 14/33 Installing : perl-Storable-2.45-3.el7.x86_64 15/33 Installing : perl-Exporter-5.68-3.el7.noarch 16/33 Installing : perl-constant-1.27-2.el7.noarch 17/33 Installing : perl-Socket-2.010-5.el7.x86_64 18/33 Installing : perl-Time-Local-1.2300-2.el7.noarch 19/33 Installing : perl-Carp-1.26-244.el7.noarch 20/33 Installing : perl-PathTools-3.40-5.el7.x86_64 21/33 Installing : perl-Scalar-List-Utils-1.27-248.el7.x86_64 22/33 Installing : 1:perl-Pod-Simple-3.28-4.el7.noarch 23/33 Installing : perl-File-Temp-0.23.01-3.el7.noarch 24/33 Installing : perl-File-Path-2.09-2.el7.noarch 25/33 Installing : perl-threads-shared-1.43-6.el7.x86_64 26/33 Installing : perl-threads-1.87-4.el7.x86_64 27/33 Installing : 4:perl-Time-HiRes-1.9725-3.el7.x86_64 28/33 Installing : perl-Filter-1.49-3.el7.x86_64 29/33 Installing : 4:perl-libs-5.16.3-299.el7_9.x86_64 30/33 Installing : perl-Getopt-Long-2.40-3.el7.noarch 31/33 Installing : 4:perl-5.16.3-299.el7_9.x86_64 32/33 Installing : 2:vim-enhanced-7.4.629-8.el7_9.x86_64 33/33 Verifying : perl-HTTP-Tiny-0.033-3.el7.noarch 1/33 Verifying : perl-threads-shared-1.43-6.el7.x86_64 2/33 Verifying : perl-Storable-2.45-3.el7.x86_64 3/33 Verifying : groff-base-1.22.2-8.el7.x86_64 4/33 Verifying : perl-Exporter-5.68-3.el7.noarch 5/33 Verifying : perl-constant-1.27-2.el7.noarch 6/33 Verifying : perl-PathTools-3.40-5.el7.x86_64 7/33 Verifying : 4:perl-macros-5.16.3-299.el7_9.x86_64 8/33 Verifying : 2:vim-enhanced-7.4.629-8.el7_9.x86_64 9/33 Verifying : 1:perl-parent-0.225-244.el7.noarch 10/33 Verifying : perl-Socket-2.010-5.el7.x86_64 11/33 Verifying : which-2.20-7.el7.x86_64 12/33 Verifying : 2:vim-filesystem-7.4.629-8.el7_9.x86_64 13/33 Verifying : perl-File-Temp-0.23.01-3.el7.noarch 14/33 Verifying : 1:perl-Pod-Simple-3.28-4.el7.noarch 15/33 Verifying : perl-Time-Local-1.2300-2.el7.noarch 16/33 Verifying : 1:perl-Pod-Escapes-1.04-299.el7_9.noarch 17/33 Verifying : perl-Carp-1.26-244.el7.noarch 18/33 Verifying : 2:vim-common-7.4.629-8.el7_9.x86_64 19/33 Verifying : perl-Scalar-List-Utils-1.27-248.el7.x86_64 20/33 Verifying : perl-Pod-Usage-1.63-3.el7.noarch 21/33 Verifying : perl-Encode-2.51-7.el7.x86_64 22/33 Verifying : perl-Pod-Perldoc-3.20-4.el7.noarch 23/33 Verifying : perl-podlators-2.5.1-3.el7.noarch 24/33 Verifying : 4:perl-5.16.3-299.el7_9.x86_64 25/33 Verifying : perl-File-Path-2.09-2.el7.noarch 26/33 Verifying : perl-threads-1.87-4.el7.x86_64 27/33 Verifying : 4:perl-Time-HiRes-1.9725-3.el7.x86_64 28/33 Verifying : gpm-libs-1.20.7-6.el7.x86_64 29/33 Verifying : perl-Filter-1.49-3.el7.x86_64 30/33 Verifying : perl-Getopt-Long-2.40-3.el7.noarch 31/33 Verifying : perl-Text-ParseWords-3.29-4.el7.noarch 32/33 Verifying : 4:perl-libs-5.16.3-299.el7_9.x86_64 33/33 Installed: vim-enhanced.x86_64 2:7.4.629-8.el7_9 Dependency Installed: gpm-libs.x86_64 0:1.20.7-6.el7 groff-base.x86_64 0:1.22.2-8.el7 perl.x86_64 4:5.16.3-299.el7_9 perl-Carp.noarch 0:1.26-244.el7 perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7 perl-File-Path.noarch 0:2.09-2.el7 perl-File-Temp.noarch 0:0.23.01-3.el7 perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-3.el7 perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-PathTools.x86_64 0:3.40-5.el7 perl-Pod-Escapes.noarch 1:1.04-299.el7_9 perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7 perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-5.el7 perl-Storable.x86_64 0:2.45-3.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7 perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-299.el7_9 perl-macros.x86_64 4:5.16.3-299.el7_9 perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7 vim-common.x86_64 2:7.4.629-8.el7_9 vim-filesystem.x86_64 2:7.4.629-8.el7_9 which.x86_64 0:2.20-7.el7 Complete! Removing intermediate container b261a5704b35 ---> 3df6402a9280 Step 6/10 : RUN yum -y install net-tools ---> Running in 38988044c38d Loaded plugins: fastestmirror, ovl Loading mirror speeds from cached hostfile * base: mirrors.huaweicloud.com * extras: mirrors.huaweicloud.com * updates: mirrors.huaweicloud.com Resolving Dependencies --> Running transaction check ---> Package net-tools.x86_64 0:2.0-0.25.20131004git.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: net-tools x86_64 2.0-0.25.20131004git.el7 base 306 k Transaction Summary ================================================================================ Install 1 Package Total download size: 306 k Installed size: 917 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1 Verifying : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1 Installed: net-tools.x86_64 0:2.0-0.25.20131004git.el7 Complete! Removing intermediate container 38988044c38d ---> 169759d67d86 Step 7/10 : EXPOSE 80 ---> Running in 5df1b0d1a77c Removing intermediate container 5df1b0d1a77c ---> bb6f50331ff8 Step 8/10 : CMD echo $MYPATH ---> Running in 5a110ebe1220 Removing intermediate container 5a110ebe1220 ---> aa35d85d35dd Step 9/10 : CMD echo "success---------ok" ---> Running in 033beca66f92 Removing intermediate container 033beca66f92 ---> 31234ca1b0e9 Step 10/10 : CMD /bin/bash ---> Running in ID Removing intermediate container ID ---> e683032e31c7 Successfully built ID Successfully tagged xhcentos:7
四、 使用commit打包镜像
docker commit :从容器创建一个新的镜像。 语法 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS说明: -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。
docker exec -it ID /bin/bash
mkdir app
exit
docker cp ./FreeFileSync_11.20_Linux.tar.gz ID:/app
cd app/ tar -vxf FreeFileSync_11.20_Linux.tar.gz exit
docker commit -a "xhc" ID xhcent:0.1
docker run -it xcentos:v1 /bin/bash
查看是否有之前保存的文件
ls cd app ll
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。