通过容器手动制作docker镜像
Docker 镜像制作类似于虚拟机的镜像(模版)制作,即按照公司的实际业务务求将需要安装的软件、相关配置等基础环境配置完成,然后将其做成镜像,最后再批量从镜像批量生产实例,这样可以极大的简化相同环境的部署工作,Docker的镜像制作分为手动制作(基于容器)和自动制作(基于DockerFile),企业通常都是基于Dockerfile制作镜像
基于容器手动制作镜像步骤
基于容器手动制作镜像步骤具体如下:
1.下载一个基础的官方镜像,如:centos 或ubuntu
2.基于基础镜像启动一个容器,并进入到容器
3.在容器里面做配置操作
-安装基础命令
-配置运行环境
-安装服务和配置服务
-放程序代码
-
提交为一个新镜像
docker commit
- 基于自己的的镜像创建容器并测试访问
实战案例:在容器中利用yum安装手动制作nginx的镜像
下载基础镜像并初始化系统
基于某个基础镜像之上重新制作,因此需要先有一个基础镜像,本次使用官方提供的centos镜像为基础
[root@ubuntu1804 ~]#docker pull centos:centos7.7.1908
[root@ubuntu1804 ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos7.7.1908 08d05d1d5859 2 months ago 204MB
[root@ubuntu1804 ~]#docker run -it centos:centos7.7.1908 bash
#修改时区
[root@9caa8742e6ce /]#rm -f /etc/localtime
[root@9caa8742e6ce /]#ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@9caa8742e6ce /]# yum -y install wget
[root@9caa8742e6ce /]# rm -rf /etc/yum.repos.d/*
#更改yum 源
[root@9caa8742e6ce /]# wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo
[root@9caa8742e6ce /]# wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
安装相关软件和工具
#yum安装nginx
[root@9caa8742e6ce /]# yum install nginx –y
#安装常用命令
[root@9caa8742e6ce /]# yum install -y vim curl iproute net-tools
修改服务的配置信息关闭服务后台运行
#关闭nginx后台运行
[root@9caa8742e6ce /]# vim /etc/nginx/nginx.conf
user nginx;
daemon off; #关闭后台运行
准备程序和数据
#自定义web界面
[root@9caa8742e6ce ~]# rm -f /usr/share/nginx/html/index.html
[root@9caa8742e6ce ~]# echo "test page in docker" > /usr/share/nginx/html/index.html
提交为镜像
docker commit 命令在宿主机基于容器ID 提交为镜像
格式:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
选项:
-a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Commit message
-p, --pause Pause container during commit (default true)
提交的时候标记tag号:生产当中常用,后期可以根据tag标记创建不同版本的镜像以及创建不同版本的容器。
#不关闭容器的情况,将容器提交为镜像
[root@ubuntu1804 ~]#docker commit -a "root@wangxiaochun.com" -m "nginx yum v1" -c "EXPOSE 80 443" 9caa8742e6ce wang/centos7-nginx:1.16.1.v1
sha256:e9d09cc585ed8ee1544b1e68de326ea6dcbe99577fc9b2edad9ab481b7a7e7ec
[root@ubuntu1804 ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wang/centos7-nginx 1.16.1.v1 e9d09cc585ed 4 seconds ago 442MB
centos centos7.7.1908 08d05d1d5859 2 months ago 204MB
从制作的镜像启动容器
[root@ubuntu1804 ~]#docker run -d -p 8080:80 --name my-centos-nginx wang/centos7-nginx:1.16.1.v1 /usr/sbin/nginx
c60f8373a14210bb3aa06ce03c2258a4b912033b0650ef690f9245fc3afc5bf1
[root@ubuntu1804 ~]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c60f8373a142 wang/centos7-nginx:1.16.1.v1 "/usr/sbin/nginx" 6 seconds ago Up 5 seconds 443/tcp, 0.0.0.0:8080->80/tcp my-centos-nginx
9caa8742e6ce centos:centos7.7.1908 "bash" 35 minutes ago Up 35 minutes thirsty_hypatia
[root@ubuntu1804 ~]#
访问测试镜像
[root@ubuntu1804 ~]#curl 127.0.0.1:8080
test page in docker
[root@ubuntu1804 ~]#
本文链接:http://www.yunweipai.com/34818.html
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/52658.html