ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker镜像创建,数据管理与网络通信

2020-02-20 17:08:50  阅读:19  来源: 互联网

标签:网络通信 容器 centos 数据管理 镜像 Docker root docker localhost



目录

Docker镜像的创建方法

1)基于已有镜像创建(类似于最新快照,适用于保存新容器文件)

2)由本地模板创建镜像(适用于创建全新纯净版底层系统)

3)基于Dockfile创建(适用于高级服务搭建和配置)

 

   Docker镜像除了是Docker的核心技术之外,也是应用发布的标准格式。一个完整的Docker镜像可以支撑一个Docker容器的运行,在Docker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务,如果要把已经安装的服务进行迁移,就需要把环境及搭建的服务生成新的镜像。

创建镜像的方法有三种分别为:

  • 基于已有镜像创建
  • 基于本地模板创建
  • 基于Dockerfile创建

1.基于已有镜像创建(类似于最新快照,适用于保存新容器文件)

基于已有镜像创建主要使用“docker commit”命令,其实质就是把一个容器里面运行的程序及该程序的运行环境打包起来生成新的镜像。

语法:docker commit [选项] 容器id/名称  仓库名称:[标签]

常用的选项:
-m:说明信息
-a:作者信息
-p:生成过程中停止容器的运行 

如:把容器id为df3b34be596c ,做成镜像111:111 

[root@localhost ~]# docker ps -a  //先查看容器ID
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                  PORTS               NAMES
df3b34be596c        dhcp:dhcp           "/entrypoint.sh"    2 days ago          Exited (1) 2 days ago                       stoic_jennings
[root@localhost ~]# docker commit -m "newdhcp" -a "t3117" df3b34be596c 111:111  //生成镜像 
sha256:454893fd71c3a491a6d0745dc7f9dc817061068546fc715dfd37f604cda9956a
[root@localhost ~]# docker images  //查看镜像
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
111                           111                 454893fd71c3        18 seconds ago      105 MB
centos7                       dhcp                645089167d00        4 days ago          84.7 MB
dhcp                          dhcp                52cbff801df2        11 months ago       105 MB
docker.io/networkboot/dhcpd   latest              52cbff801df2        11 months ago       105 MB

2.由本地模板创建镜像(适用于创建全新纯净版底层系统)

模板下载地址:wget http://download.openvz.org/template/precreated/

实验使用centos-7-x86_64-minimal.tar.gz,现实中可以按环境任意选择

[root@localhost ~]# wget http://download.openvz.org/template/precreated/centos-7-x86_64-minimal.tar.gz
--2020-02-19 13:15:11--  http://download.openvz.org/template/precreated/centos-7-x86_64-minimal.tar.gz
Resolving download.openvz.org (download.openvz.org)... 185.231.241.69
Connecting to download.openvz.org (download.openvz.org)|185.231.241.69|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 145639219 (139M) [application/x-gzip]
Saving to: ‘centos-7-x86_64-minimal.tar.gz’

100%[=============================================>] 145,639,219  393KB/s   in 8m 37s 

2020-02-19 13:23:51 (275 KB/s) - ‘centos-7-x86_64-minimal.tar.gz’ saved [145639219/145639219]

 

创建镜像:

[root@localhost ~]# cat centos-7-x86_64-minimal.tar.gz |docker import - docker:centos7.1
//docker后面是新的镜像名字
[root@localhost ~]# docker images 
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
docker                        centos7.1           fe688f03fa33        35 seconds ago      435 MB

 3.基于Dockfile创建(适用于高级服务搭建和配置)

除了手动生成docker镜像之外,还可以使用Dockerfile自动生成镜像。Dockerfile是由一组指令组成的文件,其中每条指令对应Linux中的一条命令,Docker程序将读取Dockerfile中的指令生成指定镜像。

Dockerfile结构大致分为4个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时候执行指令。Dockerfile每行支持一条指令,每条指令可携带多个参数,支持使用以“#”号开头的注释。

  • 项描述:
  •     FROM centos    \\指定基于的基础镜像,镜像centos必须存在
  •     MAINTAINER    \\维护该镜像的用户信息
  •     RUN yum -y install openssh-server \\镜像中的操作命令,可写多条
  •     EXPOSE 22    \\容器开放的端口
  •     CMD ["/usr/sbin/sshd","-D"] \\启动容器时执行命令,可写多条但仅最后一条生效
     

 

1) 建立工作目录并进入

mkdir  /root/apache
cd  /root/apache

2) 编写Dockerfile文件

在编写Dockerfile时,有严格的格式需要遵循:第一行必须使用FROM指令指明所基于的镜像名字,之后使用MAINTAINER 维护该镜像的用户信息。

[root@localhost ~]# vim Dokerfile
FROM centos   //这里centos是镜像名字,不是标签
#第一行必须指明基于的基础镜像
MAINTAINER The CentOS project <qinziteng>
#维护该镜像的用户信息
RUN yum -y update
RUN yum -y install openssh-server
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
#镜像操作指令
EXPOSE 22
#开启22端口
CMD ["/usr/sbin/sshd","-D"]
#启动容器时执行指令

此Dockerfile文件使用的基础镜像是centos,所以要保证首先获取此基础镜像,使用“docker pull docker.io/centos” 获取镜像,之后的容器运行才会有效. 

3)编写运行脚本文件

[root@localhost apache]# vim run.sh
#!/bin/bash
rm -rf /run/httpd/*                                      //清理httpd的缓存
exec /usr/sbin/apachectl -D FOREGROUND                  //启动apache服务
//启动容器时,进程、脚本都要在前台启动

4)编写网站默认首页

[root@localhost apache]# echo "qinziten" > index.html                 //创建首页文件
[root@localhost apache]# ls  
Dockerfile  index.html  run.sh               //保持三个文件在一个目录下

5)使用Dockerfile生成镜像

编写完成Dockerfile及相关内容后,通过“docker build”命令来创建镜像

语法:docker build [选项] 路径

常用选项“-t”指定镜像的标签信息

[root@localhost apache]# docker build -t httpd:centos .
注意后面有“.”表示当前路径

6)使用新的镜像运行容器

[root@localhost ~]# docker run -d -p 12345:80 httpd:centos 
ee9adf324443b006ead23f2d9c71f86d1a4eb73358fb684ee3a2d058a0ac4243
//使用新生成的镜像加载到容器中运行
//“-p”选项实现从本地端口12345到容器中80端口的映射
[root@localhost ~]# docker ps -a  //查看镜像确认结果
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                     PORTS                   NAMES
ee9adf324443        httpd:centos        "/run.sh"                About a minute ago   Up About a minute          0.0.0.0:12345->80/tcp   admiring_bardeen

 

秦子腾 发布了42 篇原创文章 · 获赞 5 · 访问量 1366 私信 关注

标签:网络通信,容器,centos,数据管理,镜像,Docker,root,docker,localhost
来源: https://blog.csdn.net/weixin_45310323/article/details/104391069

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有