A. 一文教您如何通过 Docker 快速搭建各种测试环境
目录
一、镜像加速
Docker 默认是从官方镜像地址 Docker Hub 下下载镜像,由于服务器在国外的缘故,导致经常下载速度非常慢。为了提升镜像的下载速度,我们可以手动配置国内镜像加速器,让下载速度飚起来。
国内的镜像加速器选项较多,如:阿里云,DaoCloud 等。
本文主要说说如何配置阿里云的镜像加速器。
2.1 登录阿里云获取加速信息
https://dev.aliyun.com/
2.2 配置 Docker
2.2.1 确定 Docker Client 版本
在配置之前,首先需要 确定 Docker Client 的版本,推荐是 1.10.0+ :
2.2.2 配置镜像加速器
PS: 这里以 CentOS 系统为例,如果你是别的系统,可以参考阿里云配置加速器官方文档。
通过修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器:
执行下面命令:
2.3 验证一下速度
以下载 mongodb 为例,看下速度:
配置了加速器过后,速度终于飚起来了。
二、快速安装&搭建 Mysql 环境
本节中,我们将学习如何通过 Docker 快速安装与搭建 Mysql 环境。
2.1 下载 Mysql 镜像
这里以 Mysql 5.7 为例:
下载完成后,通过 docker images 检查一下镜像是否下载成功:
2.2 先以最简单方式启动
先以简单的方式启动:
命令执行完成后,你也可以通过 docker ps 命令来确认下容器是否启动成功。若成功,我们需要将容器中的目录文件复制到宿主机中,分别包括:
完成这一切后,让我们将刚刚运行的容器删除掉。
PS: mysql 是我们运行容器时,指定的名称,当然,你也可以先执行 docker ps , 通过容器 ID 来删除。
2.3 正式运行 Mysql 容器
接下来,正式运行 Mysql 容器:
其他不变,额外添加了两个挂载子命令:
执行命令完成后,查看下容器是否启动:
可以看到,容器运行成功
2.4 通过 Mysql 客户端连接一下试试
通过 MySQL 客户端连接刚刚创建的 mysql, 看看能否连接成功:
连接成功了!
三、快速安装&搭建 Redis 环境
本节中,我们将学习如何利用 Docker 安装&搭建 Redis 环境。
3.1 下载 Redis 镜像
首先拉取 Redis 镜像, 这里我选择的是 redis:alpine 轻量级镜像版本:
下载完成后,通过 docker images 确认镜像是否已经下载到本地:
3.2 运行 Redis 容器
命令说明:
命令运行完成后,查看容器是否启动成功:
可以看到 redis 容器已经启动成功了!
3.3 连接刚刚创建好的容器
执行如下命令,连接 redis:
四、快速安装&搭建 MongDB 环境
本节中,我们将学习如何通过 Docker 快速安装与搭建 MongoDB 环境。
4.1 下载 MongoDB 镜像
这里以 mongo 4 版本为例,下载镜像:
下载完成后,确认一下镜像是否下载成功:
4.2 运行 MongoDB 镜像
下载成功后,运行 mongoDB 镜像:
执行命令完成后,查看下容器是否启动:
4.3 添加管理员账号
执行命令:
然后,创建一个拥有最高权限 root 账号:
创建成功后,你会看到 Successfully added user :
4.4 用新创建的 root 账户连接,测试一下
连接成功后,我们可以执行相关 sql:
显示所有的数据库:
使用某个数据库:
输入命令 exit ,退出连接!
五、快速安装&搭建 Elasticsearch 环境
本节中,我们将学习如何通过 Docker 快速安装与搭建 Elasticsearch 环境。
5.1 下载 Elasticsearch 镜像
这里以 Elasticsearch 6.5.0 为快速安装&搭建 Elasticsearch 环境例:
下载完成后,通过 docker images 检查一下镜像是否下载成功:
5.2 先简单运行 Elasticsearch 镜像
下载成功后,简单运行 Elasticsearch 镜像:
命令执行完成后,你也可以通过 docker ps 命令来确认下容器是否启动成功。
可以看到 es 容器运行成功了,接下来,进入容器中:
安装 analysis-ik 中文分词插件:
PS: es 从 v5.5.1 版本开始支持自带的 es 插件命令来安装,如果你安装的版本不是 6.5.0,需要将命令中的版本号修改一下,具体参考 https://github.com/medcl/elasticsearch-analysis-ik
安装成功后,退出容器:
删除刚刚运行的容器:
PS: 当然了,你也可以通过容器的 ID 来删除。
5.3 复制相关文件
5.4 修改 es 相关配置
进入我们刚刚指定的 config 配置目录,修改 jvm.options 文件:
PS: 因为小哈测试服务器就 2G 内存,这里我改成了 JVM 内存占用 300m, 如果你的内存够用,可不用改。
修改 elasticsearch.yml 文件, 添加如下配置:
解释一下添加的配置,设置节点为 master 节点,并允许跨域访问,以便后面使用 head 插件图形化界面访问。
5.5 运行 Elasticsearch 容器
这次,我们额外添加了相关挂载命令:
5.6 测试一下,瞅瞅 es 是否能够正常访问
测试一下,看 es 是否启动成功:
OK, 到此 es 的单节点环境就搭建好了!
欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 721575865
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
B. 如何使用 Docker 部署容器
设想,为了推出一个网站,您不必从裸机安装一个完整的服务器。 而不是安装操作系统,然后安装服务器软件,然后部署精心设计的应用程序或站点,您可以简单地在一个独立的包中开发所有内容,并使用单个命令将其推出。
这是使用容器的众多好处之一。它们使开发和部署周期变得异常高效。但是你如何部署这些容器?我想在这里指导你完成这个过程。我们将专注于在Ubuntu Server 18.04上部署基本的NGINX Web服务器作为容器。所有这一切都将在Docker的帮助下完成。
为了成功将NGINX部署为容器,您需要具备以下条件:
- 一个安装了Docker的Ubuntu Server 18.04的运行实例。
- 一个docker 用户组的成员用户
是的,有了这两部分,你就准备好了。
您部署的每个容器都将基于从DockerHub中提取的镜像。 您可以下拉单个镜像并根据需要随时使用。 DockerHub上还有许多镜像用于单个应用程序或平台。 以NGINX为例。 如果你在DockerHub上搜索NGINX,你会得到大约56,172个条目。 这并不意味着每个条目都是您可以使用的可用图像。
图像命名如下:
例如,对于NGINX,您可能会找到一个名字为的镜像:
或许你可能找到:
您也看到了,有几乎所有需要的镜像。
在使用图像之前,必须将其保存在本地驱动器上。 有两种方法可以做到这一点:
- 直接使用pull命令
- 间接地,在容器部署过程中。
要从DockerHub中拉取图像,您将打开一个终端窗口并发出命令:
如果你想拉取Ingress图像,该命令是:
当你拉取你需要的图像之后,你可以使用命令确认是否存在:
上面的命令将列出你拉取的所有镜像(图A)。
拉取随意图像时要谨慎。 为什么? 因为你永远不知道创造它们的原因。 容器可能包含恶意代码,可能会对您的网络或数据造成严重破坏。 因此,最好只使用官方图像(例如NGINX图像)。
现在该部署容器了, 如果您尚未拉取镜像,则在部署阶段将下拉所需要的镜像。 由于我们拉取官方NGINX图像,我们将使用它。
要部署容器,请使用docker命令,如下所示:
备注:
- NAME等于您要为容器提供的名称(这可以是任何内容,例如nginx-webserver)。
- PORTS您要使用的端口(以NETWORK PORT:CONTAINER PORT形式)。
- IMAGE用于容器的图像(例如nginx)。
因此,部署NGINX容器的基本命令是:
容器将要部署,NGINX Web服务器将在端口80上可用于本地网络。但是,如果已在服务器上使用端口80来部署容器,该怎么办? 您可以将其部署在网络端口8080上,如下所示:
此时,您可能会看到下一个问题。 运行上述命令之一后,不返回bash提示符(图B)。
你如何运行一个容器,并获得你的bash提示? 为此,您必须以分离模式运行容器。 在此之前,您必须使用键盘组合[Ctrl] +终止当前容器。 该组合将返回提示并杀死容器。
要确定容器是否运行,使用命令:
将列出所有容器及其状态(图C)。
如果容器仍在运行,我们必须在同一端口部署另一个容器之前将其终止(否则端口会发生冲突,从而阻止容器部署)。 要杀死正在运行的容器,首先需要Container ID(随机字符串)。 发出docker ps -a命令时会显示此字符串。 要终止正在运行的容器,使用命令:
其中CONTAINER_ID是相关容器的ID。
然后,您可以使用以下命令删除容器:
其中CONTAINER_ID是相关容器的ID。
请注意,您不必输入完整的Container ID,字符串的前四个字符就足够了。
现在,要以分离模式部署容器,命令是:
这次你不仅会得到你的提示,而且Docker会为你显示容器ID(图D)。
如果你想在正在运行的容器上工作怎么办? 假设您想对NGINX进行更改甚至开始开发它将显示的网站? 因此,您必须访问容器。 因此,您需要Container ID。 使用ID,发出命令:
其中CONTAINER_ID是容器的ID。
您现在应该处于运行容器提示符(图E)中,您可以在其中开始处理NGINX服务器。
要退出容器,只需键入命令exit。
七、比你想象的容易
希望到现在为止,您看到容器部署并不像您想象的那样具有挑战性。 在Docker的帮助下,您可以在几分钟内推出专业版的应用和服务。
原文链接:
C. 怎样在阿里云上安装docker
怎样在阿里云上安装docker
更多1
linux
因为debian 7安装docker的手续比较麻烦,所以我把阿里云的系统换成了ubuntu 14.04,然后参考:https://docs.docker.com/installation/ubuntulinux/
还算比较方便:apt-get update && apt-get install docker.io,然后再改两个配置就完事了。
不过,在你运行docker run -i -t ubuntu /bin/bash的时候,会报错,说是docker -d好象没有运行,这不科学 啊,刚刚不是装好的吗?
于是ps aux|grep docker,果然没有进程,于是直接输入:docker -d,然后就发现报错了:
2014/08/18 12:05:42 Could not find a free IP address range for interface 'docker0'. Please configure its address manually and run 'docker -b docker0'
老规矩,内事不决问度娘,外事不决问谷歌,结果居然看到有人回复 :
当时这个心就碎了,心想这不科学啊,于是再google,就真的发现了:
OK,那就试试吧:
sudo brctl addbr docker0 # create your bridge
sudo brctl addif docker0 eth0 # mask an existing interface using the bridge
sudo ip link set dev docker0 up # bring it up - not really sure if this is necessary or is it done automatically
sudo ifconfig docker0 10.0.0.4 # give it an IP
当然要运行brctl还是要装一个bridge-utils工具的,当然这个ubuntu会提醒你,一步步的做完后,docker 果然可以启动了。这时候再运行一下,service docker.io start,然后ps aux|grep docker,进程还活着。
于是输入:
docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
2014/08/18 12:16:44 Get https://index.docker.io/v1/repositories/ubuntu/images: dial tcp: lookup index.docker.io on 10.143.22.118:53: no answer from server
咦。不能上网。其实就是上面的代码的问题,因为默认aliyun的eth0是内网IP,所以上述的
sudo brctl addif docker0 eth0 # mask an existing interface using the bridge
这里应该用eth1
重新执行一下。然后再次运行:
docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
c5881f11ded9: Download complete
。。。。。。。
整个就完成了
D. 如何在阿里云主机上安装docker
你好,
如果你是centos7的话,Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令:
[root@localhost ~]# yum install docker
E. RabbitMQ 进阶- 阿里云服务器部署RabbitMQ集群
如果RabbitMQ集群只有一个broker节点,那么该节点的失效将导致整个服务临时性的不可用,并且可能会导致message的丢失(尤其是在非持久化message存储于非持久化queue中的时候)。可以将所有message都设置为持久化,并且使用持久化的queue,但是这样仍然无法避免由于缓存导致的问题:因为message在发送之后和被写入磁盘并执行fsync之间存在一个虽然短暂但是会产生问题的时间窗。通过publisher的confirm机制能够确保客户端知道哪些message已经存入磁盘,尽管如此,一般不希望遇到因单点故障导致服务不可用。
如果RabbitMQ集群是由多个broker节点构成的,那么从服务的整体可用性上来讲,该集群对于单点失效是有弹性的,但是同时也需要注意:尽管exchange和binding能够在单点失效问题上幸免于难,但是queue和其上持有的message却不行,这是因为queue及其内容仅仅存储于单个节点之上,所以一个节点的失效表现为其对应的queue不可用。
为了提高程序的吞吐量,保持消息的可靠性,一台机器挂了后,RabbitMQ能够正常生产,消费消息。
rabbitmq有三种模式:单机模式,普通集群模式,镜像集群模式
Demo级别的,一般只是本机测试玩玩而已,生产环境下不会用的。
在多台机器上启动多个rabbitmq实例,每个机器启动一个。
但是你创建的queue,只会放在一个rabbtimq实例上,但是每个实例都同步queue的元数据(存放含queue数据的真正实例位置)。消费的时候,实际上如果连接到了另外一个实例,那么那个实例会从queue所在实例上拉取数据过来。
示意图
这种方式确实很麻烦,也不怎么好,没做到所谓的分布式,就是个普通集群。
普通集群的方式,确实达到了消息的高可用,但没办法保证可靠性,没做到分布式,简而言之,只是一个普通的集群。
这种模式,才是所谓的rabbitmq的高可用模式,跟普通集群模式不一样的是,你创建的queue,无论元数据还是queue里的消息都会存在于多个实例上,然后每次你写消息到queue的时候,都会自动把消息到多个实例的queue里进行消息同步。
上图中每个节点有一个queue,生产者生产完毕数据后投递到指定交换机的队列,交换机的队列进行消息同步。
每个节点queue都有一个完整的rabbitmq节点,所以这种方式叫做镜像集群
好处: 任何一个节点宕机后,其它节点不受影响,正常使用
坏处:
确保机器中安装了Docker,若未安装,可看:【云原生】Docker入门 – 阿里云服务器Linux环境下安装Docker
查看拉取的镜像
成功运行
设置节点1
浏览器输入 您的ip地址:15673
再次测试即可成功~
File —> New —> Project —> Maven —> 直接Next 进入下一步创建普通的Maven工程即可
创建一个默认的Maven聚合工程,将src文件夹删除,该工程就是一个Maven聚合工程
引入依赖如下:
在项目内,新建一个Moudle,rabbitmq-order-procer 默认Maven工程,下一步即可
在项目内,新建一个Moudle,rabbitmq-order-cousumer 默认Maven工程,下一步即可
Maven聚合工程创建完成图
Maven依赖图
自行手写MainApplication即可
创建完成!
编写完成!
启动消费者
交换机
=
15674
15675
成功消费数据!
已成功同步消息~
F. 10. Docker 安装与配置
Docker 是一个开源的应用容器引擎,基于LXC(Linux Container)内核虚拟化技术实现,提供一系列更强的功能,比如镜像、 Dockerfile等;Docker理念是将应用及依赖包打包到一个可移植的容器中,可发布到任意Linux发行版Docker引擎上。使用沙箱机制运行程序, 程序之间相互隔离;
容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的一个独立的进程,不占用其他任何可执行文件的内存,非常轻量、高效、快速。
虚拟机运行的是一个完成的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。
参考: https://www.cnblogs.com/codingbit/p/install-docker-in-ubuntu.html
Linux版本CentOS7
使用加速器可以提升获取Docker官方镜像的速度,下面使用 阿里云镜像 进行加速。
通过修改daemon配置文件 /etc/docker/daemon.json 来使用加速器
Docker 守护进程绑定在 Unix socket 而不是 TCP 端口。默认情况下 Unix socket 归属于 root 用户,其他用户只能通过 sudo 命令访问。所以 Docker 守护进程总是以 root 用户来运行。
如果你不希望每次运行 docker 命令时在前面加上 sudo,你可以创建一个 docker 用户组并把用户加进去。当 Docker 守护进程启动时,会创建一个 Unix socket 供 docker 用户组成员访问
创建 docker 用户组并添加你的用户
https://hub.docker.com/
什么是 DockerHub 以及为什么它很重要?DockerHub 是一个由 Docker 公司运行和管理的基于云的存储库。它是一个在线存储库,Docker 镜像可以由其他用户发布和使用。
有两种库:公共存储库和私有存储库 。如果你是一家公司,你可以在你自己的组织内拥有一个私有存储库,而公共镜像可以被任何人使用。
镜像层和容器层
Docker 服务端是Docker 所有后台服务的统称 。其中dockerd 是一个非常重要的后台管理进程,它负责响应和处理来自Docker 客户端的请求,然后将客户端的请求转化为Docker 的具体操作。
例如:镜像、容器、网络和挂载卷等具体对象的操作和管理。
Docker 从诞生到现在,服务端经历了多次架构重构。起初,服务端的组件是全部集成在docker 二进制里。但是从 1.11 版本开始, dockerd 已经成了独立的二进制,此时的容器也不是直接由dockerd 来启动了,而是集成了containerd、runC 等多个组件。
虽然 Docker 的架构在不停重构,但是各个模块的基本功能和定位并没有变化。它和一般的 C/S 架构系统一样,Docker 服务端模块负责和 Docker 客户端交互,并管理Docker 的容器、镜像、网络等资源。
Docker 有两个至关重要的组件: runC和containerd。
runC 是Docker 官方按照OCI 容器运行时标准的一个实现。通俗地讲,runC 是一个用来运行容器的轻量级工具,是真正用来运行容器的。
containerd 是Docker 服务端的一个核心组件,它是从dockerd 中剥离出来的 ,它的诞生完全遵循OCI 标准,是容器标准化后的产物。containerd通过containerd-shim 启动并管理runC,可以说containerd真正管理了容器的生命周期。
1. 容器中长期运行 程序
有两种方式:
2. 容器 开启和停止 程序
有两种方式
3. 进入容器
有2种方法
想要web部署在互联网上 或者 在Web上访问 应用;
个人电脑处于 私网 中; IP地址处于 IPV4 和 IPV6 ;
安装appium
排错,困难
https://hub.docker.com/r/appium/appium
测试adb
改变TCPIP连接方式
查看appium运行日志
容器端口号为 4723
开启nginx,就可以在web访问 192.168.0.100;
Dockerfile其实可以看做一个命令集 。每行均为一条命令。每行的第一个单词,就是命令command。后面的字符串是该命令所要接收的参数。比如ENTRYPOINT /bin/bash。ENTRYPOINT命令的作用就是将后面的参数设置为镜像的entrypoint。至于现有命令的含义,这里不再详述。DockOne上有很多的介绍。
FROM 指令用于指定其后构建新镜像所使用的基础镜像。FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将会基于该镜像构建新镜像,FROM 后的命令也会基于这个基础镜像。
在镜像的构建过程中执行特定的命令,并生成一个中间镜像。格式:
最多127层,不是写shell ;
G. 【实验1】docker部署vue简略过程
大家好,我是实验小张,简略记录一下自己做的一点儿docker基础处理过程。
1 - linux或者windows下安装nodejs环境
2 - 创建vue项目
npm install vue-cli -g // 全局安装vue脚手架
vue list // 查看脚手架安装工具
vue init webpack <项目名称> // 创建vue项目,以此可以开发vue
npm install // 安装依赖包
npm run dev // 调试运行,vue-cli-service serve
npm run build // 调用package.json里面的scripts对应的脚手架命令
输出dist
3 - 根据dist和Dockerfile文件制作镜像
#使用 nginx最新版本作为基础镜像,dist静态web文件塞入nginx后,通过访问nginx就可以访问到我们的vue
FROM nginx
#将当前文件夹的dist文件复制到容器的/usr/share/nginx/html目录
COPY./dist/usr/share/nginx/html/#声明运行时容器暴露的端口(容器提供的服务端口)
EXPOSE 80
#CMD:指定容器启动时要运行的命令,后台运行nginx
CMD ["nginx","-g","daemon off;"]
以上作为Dockerfile脚本,运行 docker build -t <镜像名称>:<版本号x.x> . , 生成镜像images_test:x.x
4 - 第3步中的镜像在本地,本地运行可执行 docker run -t -p out_port:docker_port images_test:x.x
如果需要再任何服务器上的docker环境下运行此镜像,则需要上传至镜像仓库,我选择的是阿里云免费个人版容器服务
$ docker login --username=n**** registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xxx/xxx:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/xxx/xxx:[镜像版本号]
然后可以拉取镜像,docker pull registry.cn-hangzhou.aliyuncs.com/xxx/xxx:[镜像版本号]
5 - 上面的事情处理完毕之后,就可以部署到服务器上了,最后一步,运行自制的vue镜像
docker run -d -p 8080:80 image_test:<version no.>
6 - 也可以通过docker-compose up -d来运行yml文件来运行镜像,还可以通过volumes参数来挂载数据卷
先大略说这么多,docker是一个比较好用的工具,提高开发效率和降低运维成本,easy~
H. 阿里云 上的docker 怎么用
包括三部分:
从Docker Hub或者其他镜像源安装Docker镜像
从Image file安装Docker镜像
从Docker file制作Docker镜像
查找Docker镜像
安装Docker镜像的第一步,是查找你需要的Docker镜像列表,键入:
docker search mysql
如果出现权限问题,请在最前面加入sudo:
sudo docker search mysql
查询返回一个列表:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relati... 2981 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Crea... 194 [OK]
centurylink/mysql Image containing mysql. Optimized to be li... 46 [OK]
sameersbn/mysql 36 [OK]
jdeathe/centos-ssh-mysql CentOS-6 6.8 x86_64 / MySQL. 8 [OK]
appcontainers/mysql Centos/Debian Based Customizable MySQL Con... 8 [OK]
marvambass/mysql MySQL Server based on Ubuntu 14.04 6 [OK]
drupaldocker/mysql MySQL for Drupal 2 [OK]
azukiapp/mysql Docker image to run MySQL by Azuki - http:... 2 [OK]
yfix/mysql Yfix docker built mysql 2 [OK]
alterway/mysql Docker Mysql 2 [OK]
frodenas/mysql A Docker Image for MySQL 2 [OK]
andreluiznsilva/mysql A extension of the offical MySQL container... 1 [OK]
phpmentors/mysql MySQL server image 1 [OK]
sin30/mysql MySQL images with my own config files. 1 [OK]
tozd/mysql MySQL (MariaDB fork) Docker image. 0 [OK]
nanobox/mysql MySQL service for nanobox.io 0 [OK]
...
列表包含了所有的MySQL镜像,其中:
NAME字段是镜像的名字
DESCRIPTION字段是对镜像的简单描述
STARS数量反映了用户的喜爱程度
OFFICIAL字段如果是OK,代表了这个镜像是官方提供的,可以信任
AUTOMATED字段如果是OK,代表了这个镜像是基于公开的脚本制作的,可以信任
如果OFFICIAL和AUTOMATED都不为OK,那使用的时候需要额外小心了,这类镜像中可能包含恶意软件,不过对于个人非敏感数据还是可以使用的。
此外,你也可以通过访问https://hub.docker.com/,通过Web来搜索你需要的镜像。
下载Docker镜像
当你找到合适的镜像后,可以通过:
docker pull [REGISTRYHOST/][USERNAME/]NAME[:TAG]
来进行下载,方括号中的是可选项:
docker pull mysql
导出Docker镜像
你可以将本地镜像导出为文件,如我们刚才下载的MySQL镜像:
docker save -o mysql.tar mysql
将我们的MySQL镜像导出为mysql.tar.
导入Docker镜像
有导出就有导入,导入的命令是:
docker load -i mysql.tar
将我们的MySQL镜像导入。
删除Docker镜像
为了节约磁盘空间,有时候我们需要删除不需要的Docker镜像文件,首先查看我们拥有的Docker镜像文件:
docker images
然后删除不需要的镜像,释放磁盘空间:
docker rmi [REGISTRYHOST/][USERNAME/]NAME[:TAG]
通过Docker File编译Docker镜像
制作Docker File我们放在后面再讲,假设你有一个名为Dockerfile的文件,编译制作Docker的命令是:
docker build -f Dockerfile .
成功后将在当前路径下制作出一个Docker镜像文件。
Summary
我们简单的介绍了Docker镜像的使用方法。通过此实战,你应该对Docker镜像有了更深入的体会。
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索docker , 镜像 , docker使用镜像 , 删除镜像 查找镜像 docker 删除镜像、docker 镜像、docker 国内镜像仓库、docker hub 国内镜像、docker 镜像仓库,以便于您获取更多的相关知识。
I. 阿里云搭建docker私有镜像仓库与SpringBoot项目推送远程镜像仓库
随着项目上容器技术的广泛应用,我也加入了Docker容器技术的学习。首先初学Docker,我的想法很简单。创建一个SpringBoot项目,如何将SpringBoot项目打包成容器镜像,然后推送至远程的Docker服务上部署。带着这个目的查阅了一些资料后,整体的实现思路如下:
环境描述:
准备一台阿里云服务器,已经完成Docker服务安装,后续将会在该服务器上进行搭建Docker私有镜像仓库。本地准备一个SpringBoot项目,至少编写一个Controller,保证本地SpringBoot项目启动后能够正常访问到Contriller。
由于私有镜像仓库是部署在阿里云上,要确保私有仓库的安全性,需要一个安全认证证书,防止发生意想不到的事情。所有需要在搭建私有仓库的Docker主机上先生成自签名证书。
生成自签名证书:
通过openssl命令先生成自签名证书,运行命令后需要填写一些证书信息。其中Common Name填写的xx.96.104.xxx是最关键的信息,这里填写的是私有仓库的地址:
Country Name:国家
State or Province Name:州或省
Locality Name:城市
Organization Name :机构名称
Organizational Unit Name :组织单位名称
Common Name:hostname域名
Email Address:邮箱地址
页面访问:
页面访问: http://xx.96.194.xxx:7001/
页面访问Spring Boot项目
参考:Docker 私有镜像仓库的搭建及认证
参考:Spring Boot 多样化构建 Docker 镜像
参考:registry-web集成安全认证