linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法

简介: linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法

Docker Image 的制作两种方法

方法 1:docker commit #保存 container 的当前状态到 image 后,然后生成对应的 image

方法 2:docker build #使用 Dockerfile 文件自动化制作 image

一、. 语法: docker commit <container 的 ID>或<image_name>

根据容器当前状态做一个 image 镜像:创建一个安装了 apache 工具的 centos 镜像

[root@146 ~]# docker run -it docker.io/centos:latest /bin/bash

[root@1d3563200047 /]# yum -y install httpd #在 container 中安装 apache 软件包

[root@1d3563200047 /]# exit

[root@146~]# docker commit 1d3563200047  docker.io/centos:apache      (:apache 为打包的标签)

二.通过:docker build 创建一个基于 centos 的 httpd web 服务器镜像。

使用 docker build 创建镜像时,需要使用 Dockerfile 文件自动化制作 image 镜像

注:Dockerfile 有点像源码编译时./configure 后产生的 Makefile

以下操作要在 docker 物理机上操作:

2.1、创建工作目录

[root@146 ~]# mkdir /docker-build

[root@146 ~]# cd /docker-build

[root@146 docker-build]# touch Dockerfile

注: make 自动化编译时需要 Makefile 文件,自动化创建 docker 镜像时,需要 Dockerfile

2.2、编辑 Dockerfile   创建工作目录

[root@146 ~]# mkdir /docker-build

[root@146 ~]# cd /docker-build

[root@146 docker-build]# touch Dockerfile     注: make 自动化编译时需要 Makefile 文件,自动化创建 docker 镜像时,需要 Dockerfile     Dockerfile 用来创建一个自定义的 image,包含了用户指定的软件依赖等。

[root@146 docker-build]# vim Dockerfile

   FROM docker.io/centos:latest

   MAINTAINER <cs@name.cn>

   RUN yum -y install httpd

   ADD start.sh /usr/local/bin/start.sh

   ADD index.html /var/www/html/index.html

   CMD /usr/local/bin/start.sh

注释:

FROM docker.io/centos:latest # FROM 基于哪个镜像

MAINTAINER <mk@xuegod.cn> # MAINTAINER 镜像创建者

RUN yum -y install httpd #RUN 安装软件用

ADD start.sh /usr/local/bin/start.sh

ADD index.html /var/www/html/index.html

CMD /usr/local/bin/start.sh

# ADD 将文件<src>拷贝到新产生的镜像的文件系统对应的路径<dest>。所有拷贝到新镜像中的

文件和文件夹权限为 0755,uid 和 gid 为 0

CMD echo hello world #container 启动时执行的命令或启动服务,但是一个 Dockerfile 中叧

能有一条 CMD 命令,多条则叧执行最后一条 CMD.

2. 3、创建 start.sh 脚本启动 httpd 服务和 apache 默认首页 index.html 文件

[root@146docker-build]# echo "/usr/sbin/httpd -DFOREGROUND" > start.sh

[root@146 docker-build]# chmod a+x start.sh

创建 index.html

[root@146 docker-build]# echo "docker image build test" > index.html

2.4、使用命令 build 来创建新的 image

语法:docker build -t 父镜像名:镜像的 tag Dockerfile 文件所在路径-t :表示 tage,镜像名

docker build -t docker.io/centos:httpd ./

2.5 Docker Image 的发布

方法 1:Save Image To TarBall

方法 2:Push Image To Docker Hub

方法 1:Save Image To TarBall          保存 Image 到 tar 包

语法:docker save -o 导出的镜像名.tar 本地镜像名:镜像标签

docker save -o docker.io-centos-httpd-image.tar odcker.io/centos:httpd

[root@146 ~]# docker rmi docker.io/centos:httpd         #删除镜像,这里写自己镜像的 ID或名字

[root@146 ~]# docker images                                      #发现在镜像已经被删除

[root@146 docker-build]# docker load -i docker.io-centos-httpd-image.tar     #导入本地镜像

方法 2:Push Image To Docker Hub 发布到外网

1、Signup on docker hub & create repo 注册一个帐号 https://hub.docker.com/

2、Login to docker hub

# docker login -u userabc -p abc123 -e userab@gmail.com

3、Push image to docker hub #上传镜像

# docker push centos:httpd

4、Pull image from docker hub #下载镜像

# docker pull userabc/centos:httpd # 用户名/镜像名

Container 容器端口映射

启动 container

docker  run  -d  -p  80:80  docker.io/centos:httpd

注: -p 物理机的 80 端口:容器实例的 80 端口 ,把容器中的 80 端口映射到物理机上的 80 端口

在物理机上查看容易状态:

[root@146 ~]# docker ps

访问正在运行的 container 容器实例

语法: docker exec -it <container id | name> /bin/bash

 

配置容器 root 密码:

[root@a9c3a7bf2054 /]# echo 123456 | passwd --stdin root

在容器中安装 sshd 服务,然后把 22 端口映射出去,就可以远程登弽容器了。

 

 

 [root@localhost ~]# docker run -it docker.io/centos:latest /bin/bash         #启动一个实例

[root@local ~]# docker logs b93795788ee0#容器的 ID 可以写全,只要唯一就可以了   #查看日志

列出所有运行中容器  docker ps        docker ps -a        #-a 列出所有容器(包含沉睡/退出状态的容器);

杀死一个容器。 比如:杀死一个正在后台运行的容器

docker kill b93795788ee0       #杀死一个容器

docker rm -f  b93795788ee0      # -f 强制删除

目录
相关文章
|
5天前
|
Linux 网络安全 虚拟化
linux怎么把文件传到docker里面
在现代应用开发中,Docker作为流行的虚拟化工具,广泛应用于微服务架构。文件传输到Docker容器是常见需求。常用方法包括:1) `docker cp`命令直接复制文件;2) 使用`-v`选项挂载宿主机目录,实现数据持久化和实时同步;3) 通过SCP/FTP协议传输文件;4) 在Dockerfile中构建镜像时添加文件。选择合适的方法并确保网络安全是关键。
76 1
|
6天前
|
Linux 虚拟化 Docker
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
46 1
|
2月前
|
Linux Docker 容器
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
190 19
|
3月前
|
Ubuntu 网络协议 Linux
快速部署WSL(Windows Subsystem for Linux)
WSL提供了一种轻量级的方法,使开发者能够在Windows上无缝运行Linux环境。通过本文介绍的步骤,可以快速安装、配置和使用WSL,以满足开发和测试的需求。
283 8
|
2月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
214 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
7月前
|
存储 安全 Ubuntu
Docker 镜像与 Docker 容器的区别
【8月更文挑战第27天】
533 5
|
7月前
|
存储 Ubuntu 应用服务中间件
在Docker中,怎么快速查看本地的镜像和容器?
在Docker中,怎么快速查看本地的镜像和容器?
|
8月前
|
Shell Linux Docker
docker常用命令大全(基础、镜像、容器、数据卷)
这些命令仅仅是 Docker 命令行工具的冰山一角,但对于日常操作来说已经非常全面。通过熟练地使用这些基础命令,用户可以有效地管理 Docker 的镜像、容器、数据卷和网络。随着用户对 Docker 的深入使用,更高级的命令和选项将会变得必需,但上面列出的命令已经为用户提供了一个坚实的起点。对于初学者来说,理解和掌握这些常用命令是深入学习 Docker 的基础。
594 5
docker常用命令大全(基础、镜像、容器、数据卷)
|
8月前
|
Shell 应用服务中间件 nginx
docker 服务,镜像,容器命令总结
docker 服务,镜像,容器命令总结
204 4
|
8月前
|
运维 Ubuntu Docker
Docker镜像和容器使用
【7月更文挑战第2天】Docker 概要:Docker 镜像是只读模板,包含运行应用的环境和代码,像蓝图一样。构建镜像可通过基于现有镜像(如 Ubuntu)安装软件后提交,或使用 Dockerfile 定义构建过程。Docker 容器是镜像的运行时实例,`docker run` 命令可创建并运行容器。常用容器操作包括启动/停止、状态检查和交互式进入。通过端口映射,容器服务可从主机访问,促进应用部署和管理的便捷性。
168 3

热门文章

最新文章