免费发布供求信息
热门搜: 无锡  赣州  南京  工业  阳电  作用  区别  消毒柜  纽曼  散热器  新能源  插槽 
当前位置: 首页 » 投稿 » 美文摘要 » 正文

docker菜鸟教程(docker菜鸟教程是什么)

放大字体  缩小字体 发布日期:2024-07-05 15:06:25  作者:[db:新闻资讯作者]  浏览次数:22
核心提示:本文目录docker菜鸟教程是什么如何系统地学习 Docker如何用docker容器运行一款游戏如何通过Docker进行容器编排如何在容器中运行d

本文目录

  • docker菜鸟教程是什么
  • 如何系统地学习 Docker
  • 如何用docker容器运行一款游戏
  • 如何通过Docker进行容器编排
  • 如何在容器中运行docker命令
  • 如何在Ubuntu14.04上搭建私有docker registry-Linux
  • docker私有镜像仓库搭建和镜像删除
  • 如何在windows上使用docker
  • 云计算核心技术Docker教程:Docker存储写入时复制(CoW)策略
  • docker快速搭建几个常用的第三方服务

docker菜鸟教程是什么

Docker视频免费下载

链接:https://pan.baidu.com/s/1WmpJyKAXcbPDgn29SS-c5g

提取码:1r9g

Docker视频|走进Docker|从Docker到CaaS(一)Docker集群管理介绍|从Docker到CaaS(三)Kubernetes|从Docker到CaaS(六)微服务与CaaS|从Docker到CaaS(二)Docker 容器管理工具|从 Docker 到 CaaS(五)灵雀云部署 Docker 容器|

如何系统地学习 Docker

  Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器。Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动发现。它可以让我们更加专注于应用的开发,而不是基础架构。Weave 提供了一个如此棒的环境,仿佛它的所有容器都属于同个网络,不需要端口/映射/连接等的配置。容器中的应用提供的服务在 weave 网络中可以轻易地被外部世界访问,不论你的容器运行在哪里。在这个教程里我们将会使用 weave 快速并且简单地将 nginx web 服务器部署为一个负载均衡器,反向代理一个运行在 Amazon Web Services 里面多个节点上的 docker 容器中的简单 php 应用。这里我们将会介绍 WeaveDNS,它提供一个不需要改变代码就可以让容器利用主机名找到的简单方式,并且能够让其他容器通过主机名连接彼此。   在这篇教程里,我们将使用 nginx 来将负载均衡分配到一个运行 Apache 的容器集合。最简单轻松的方法就是使用 Weave 来把运行在 ubuntu 上的 docker 容器中的 nginx 配置成负载均衡服务器。   Docker之weave工具   weave是什么呢?weave创建了一个虚拟网络,用来连接部署在多台机器上的docker容器。   下面看看weave的应用场景:   应用在使用该网络的时候就像所有的容器都在同一个交换机网络下一样,不需要配置端口映射、连接等等,容器中的应用提供的服务在weaver网络中可以被外部世界访问,不论你的容器运行在哪里。同样的,已经存在的系统应用也可以暴露给容器中的应用来调用,而不用担心内部应用运行的位置。   weave可以穿透防火墙,流量是被加密的,允许主机连接通过一个不被信任的网络,使用weave你可以方便的部署多个容器在不同的地方运行   假如你有一个docker应用运行在两台不同的主机HOST1和HOST2上面,也就是我们要在这两台主机上各部署一个相同类型的docker应用。   在HOST1上面:启动weave   代码如下:   #这一步先启动weave路由,需要在每一台HOST上都启动   weave launch   #启动一个容器,在命令行设置了一个ip,weave run调用docker run -d,因此我们可以使用这种办法启动一个容器,同理存在weave start命令,它是调用docker start命令启动已经存在的容器,如果我们在该HOST1上有多个容器要部署,则继续执行第二行的命令即可,只要保证容器设置的ip没有冲突即可,同一个网段的ip可以到处使用   ssh=$(weave run 10/weaveworks/guides   $ cd weave-gs/aws-nginx-ubuntu-simple   在克隆完仓库之后,我们执行下面的脚本,这个脚本将会部署两个 t1.micro 实例,每个实例中都是 ubuntu 作为操作系统并用 weave 跑着 docker 容器。   复制代码   代码如下:   $ sudo ./demo-aws-setup.sh   在这里,我们将会在以后用到这些实例的 IP 地址。这些地址储存在一个 weavedemo.env 文件中,这个文件创建于执行 demo-aws-setup.sh 脚本期间。为了获取这些 IP 地址,我们需要执行下面的命令,命令输出类似下面的信息。   代码如下:   $ cat weavedemo.env   export WEAVE_AWS_DEMO_HOST1=52.26.175.175   export WEAVE_AWS_DEMO_HOST2=52.26.83.141   export WEAVE_AWS_DEMO_HOSTCOUNT=2   export WEAVE_AWS_DEMO_HOSTS=(52.26.175.175 52.26.83.141)   请注意这些不是固定的 IP 地址,AWS 会为我们的实例动态地分配 IP 地址。   我们在 bash 下执行下面的命令使环境变量生效。   代码如下:   . ./weavedemo.env   2. 启动 Weave 和 WeaveDNS   在安装完实例之后,我们将会在每台主机上启动 weave 以及 weavedns。Weave 以及 weavedns 使得我们能够轻易地将容器部署到一个全新的基础架构以及配置中, 不需要改变代码,也不需要去理解像 Ambassador 容器以及 link 机制之类的概念。下面是在第一台主机上启动 weave 以及 weavedns 的命令。   代码如下:   ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1   $ sudo weave launch   $ sudo weave launch-dns 10.2.1.1/24   下一步,我也准备在第二台主机上启动 weave 以及 weavedns。   代码如下:   ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST2   $ sudo weave launch $WEAVE_AWS_DEMO_HOST1   $ sudo weave launch-dns 10.2.1.2/24   3. 启动应用容器   现在,我们准备跨两台主机启动六个容器,这两台主机都用 Apache2 Web 服务实例跑着简单的 php 网站。为了在第一个 Apache2 Web 服务器实例跑三个容器, 我们将会使用下面的命令。   复制代码   代码如下:   ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1   $ sudo weave run --with-dns 10.3.1.1/24 -h ws1.weave.local fintanr/weave-gs-nginx-apache   $ sudo weave run --with-dns 10.3.1.2/24 -h ws2.weave.local fintanr/weave-gs-nginx-apache   $ sudo weave run --with-dns 10.3.1.3/24 -h ws3.weave.local fintanr/weave-gs-nginx-apache   在那之后,我们将会在第二个实例上启动另外三个容器,请使用下面的命令。   代码如下:   ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST2   $ sudo weave run --with-dns 10.3.1.4/24 -h ws4.weave.local fintanr/weave-gs-nginx-apache   $ sudo weave run --with-dns 10.3.1.5/24 -h ws5.weave.local fintanr/weave-gs-nginx-apache   $ sudo weave run --with-dns 10.3.1.6/24 -h ws6.weave.local fintanr/weave-gs-nginx-apache   注意: 在这里,--with-dns 选项告诉容器使用 weavedns 来解析主机名,-h x.weave.local 则使得 weavedns 能够解析该主机。   4. 启动 Nginx 容器   在应用容器如预期的运行后,我们将会启动 nginx 容器,它将会在六个应用容器服务之间轮询并提供反向代理或者负载均衡。 为了启动 nginx 容器,请使用下面的命令。   复制代码   代码如下:   ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1   $ sudo weave run --with-dns 10.3.1.7/24 -ti -h nginx.weave.local -d -p 80:80 fintanr/weave-gs-nginx-simple   因此,我们的 nginx 容器在 $WEAVEAWSDEMO_HOST1 上公开地暴露成为一个

如何用docker容器运行一款游戏

1. 安装 Docker在开始前,我们首先得确保在Linux主机中已经安装了Docker。这里,我运行的是CentOS 7 主机,我们将运行yum管理器和下面的命令来安装Docker。yum install dockersystemctl restart docker.service2. 创建 Dockerfile现在,Docker守护进程已经在运行中了,我们现在准备创建自己的Firefox Docker容器。我们要创建一个Dockerfile,在其中我们要输入需要的配置来创建一个可以工作的Firefox容器。为了运行 Docker 镜像我们需要使用最新版本的CentOS。要创建 Docker 镜像,我们需要用文本器创建一个名为Dockerfile的文件。nano Dockerfile接着,在Dockerfile中添加下面的行并保存。!/bin/bashFROM centos:7RUN yum install -y firefox 用你自己的 uid /gid 替换下面的0RUN export uid=0 gid=0RUN mkdir -p /home/developerRUN echo ;developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash; ;; /etc/passwdRUN echo ;developer:x:${uid}:; ;; /etc/groupRUN echo ;developer ALL=(ALL) NOPASSWD: ALL; ;; /etc/sudoersRUN chmod 0440 /etc/sudoersRUN chown ${uid}:${gid} -R /home/developerUSER developerENV HOME /home/developerCMD /usr/bin/firefox注意:在第四行的配置中,用你自己的用户和组id来替换0。 我们可以用下面的命令在shell或者终端中得到uid和gid。id $USER3. 构造Docker容器下面我们就要根据上面的Dockerfile构建一个容器。它会安装firefox浏览器和它需要的包。它接着会设置用户权限并让它可以工作。这里镜像名是firefox,你可以根据你的需要命名。docker build --rm -t firefox .4. 运行Docker容器现在,如果一切顺利,我们现在可以在运行在CentOS 7镜像中的Docker容器里面运行我们的GUI程序也就是Firefox浏览器了。docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix firefox总结在Docker容器中运行GUI程序是一次很棒的体验,它对你的主机文件系统没有任何的伤害。它完全依赖你的Docker容器。本教程中,我尝试了CentOS 7 Docker中的Firefox。我们可以用这个技术尝试更多的GUI程序。

如何通过Docker进行容器编排

使用 weave 前需要所宿主机安装 Docker 环境参考些教程 Ubuntu 或 CentOS/Fedora 发行版安装 DockerDocker 环境部署完使用面命令安装 weave:$ wget chmod a+x weave$ sudo cp weave /usr/local/bin 注意 PATH 环境变量要包含 /usr/local/bin 路径请 /etc/profile 文件加入行(LCTT 译注:要使环境变量效需要执行命令: source /etc/profile):export PATH=“$PATH:/usr/local/bin“每台宿主机重复面操作Weave TCP UDP 都使用 6783 端口系统启防火墙请确保两端口防火墙挡住每台宿主机启 Weave 路由器想要让处于同宿主机容器能够互相通信第步要做每台宿主机启 weave 路由器第台宿主机运行面命令创建并启 weave 路由器容器(LCTT 译注:前面说weave 路由器容器):$ sudo weave launch 第运行命令候载 weave 镜像花些间载完自运行镜像功启终端输 weave 路由器 ID 号面命令用于查看路由器状态:$ sudo weave status 第 weave 路由器绪目前止整 peer 等网络 peer 员使用 docker 命令查看 weave 路由器状态:$ docker ps 第二台宿主机部署步骤稍微点同我需要台宿主机 weave 路由器指定第台宿主机 IP 址命令:$ sudo weave launch 查看路由器状态看两 peer 员:前宿主机第宿主机启更路由器 peer 员列表更新路由器要指定前宿主机 IP 址请注意第宿主机 IP 址(LCTT 译注:链状结构)现已经 weave 网络由位于同宿主机 weave 路由器组同宿主机容器互联起接要做同宿主机启 Docker 容器并使用虚拟网络互联起假设我创建私网络 10.0.0.0/24 互联 Docker 容器并些容器随机配 IP 址想新建能加入 weave 网络容器需要使用 weave 命令创建 docker 命令原 weave 命令内部调用 docker 命令新建容器设置网络面命令宿主机 hostA 建立 Ubuntu 容器放 10.0.0.0/24 网络配 IP 址 10.0.0.1:hostA:~$ sudo weave run 10.0.0.1/24 -t -i ubuntu 功运行终端显示容器 ID 号使用 ID 访问容器:hostA:~$ docker attach 宿主机 hostB 创建 Ubuntu 容器IP 址 10.0.0.2:hostB:~$ sudo weave run 10.0.0.2/24 -t -i ubuntu 访问容器控制台:hostB:~$ docker attach 两容器能够互相 ping 通通容器控制台检查检查每容器网络配置发现块名ethwe网卡配给容器 IP 址现(比别 10.0.0.1 10.0.0.2)Weave 其高级用weave 提供些非巧妙特性我作简单介绍应用离使用 weave创建虚拟网络并每网络设置同应用比群容器创建 10.0.0.0/24 网络另群容器创建 10.10.0.0/24 网络weave 自帮维护些网络并两网络互相隔离另外灵容器网络移另网络需要重启容器举例:首先启容器运行 10.0.0.0/24 网络:$ sudo weave run 10.0.0.2/24 -t -i ubuntu让脱离网络:$ sudo weave detach 10.0.0.2/24 加入 10.10.0.0/24 网络:$ sudo weave attach 10.10.0.2/24 现容器与 10.10.0.0/24 网络其容器进行通信创建容器网络信息确定帮助weave 网络与宿主机网络整合起候想让虚拟网络容器能访问物理主机网络或者相反宿主机需要访问容器满足功能weave 允许虚拟网络与宿主机网络整合举例宿主机 hostA 容器运行 10.0.0.0/24 运行使用面命令:hostA:~$ sudo weave expose 10.0.0.100/24 命令 IP 址 10.0.0.100 配给宿主机 hostA宿主机 hostA 连 10.0.0.0/24 网络显宿主机选择 IP 址候需要选没其容器使用址现 hostA 访问 10.0.0.0/24 所容器管些容器否位于 hostA 巧妙设定啊32 赞

如何在容器中运行docker命令

  我们可以轻易地在Docker容器中运行大多数GUI程序且不出错。Docker是一个开源项目,提供了一个打包、分发和运行任意程序的轻量级容器的开放平台。它没有语言支持、框架或者打包系统的限制,并可以运行在任何地方、任何时候,从小型的家用电脑到高端的服务器都可以运行。这让人们可以打包不同的包用于部署和扩展网络应用,数据库和后端服务而不必依赖于特定的栈或者提供商。下面是我们该如何在Docker容器中运行GUI程序的简单步骤。本教程中,我们会用Firefox作为例子。1. 安装 Docker在开始前,我们首先得确保在Linux主机中已经安装了Docker。这里,我运行的是CentOS 7 主机,我们将运行yum管理器和下面的命令来安装Docker。# yum install docker# systemctl restart docker.service2. 创建 Dockerfile现在,Docker守护进程已经在运行中了,我们现在准备创建自己的Firefox Docker容器。我们要创建一个Dockerfile,在其中我们要输入需要的配置来创建一个可以工作的Firefox容器。为了运行 Docker 镜像我们需要使用最新版本的CentOS。要创建 Docker 镜像,我们需要用文本器创建一个名为Dockerfile的文件。# nano Dockerfile接着,在Dockerfile中添加下面的行并保存。#!/bin/bashFROM centos:7RUN yum install -y firefox# 用你自己的 uid /gid 替换下面的0RUN export uid=0 gid=0RUN mkdir -p /home/developerRUN echo “developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash“》》/etc/passwdRUN echo “developer:x:${uid}:“》》/etc/groupRUN echo “developer ALL=(ALL) NOPASSWD: ALL“》》/etc/sudoersRUN chmod 0440/etc/sudoersRUN chown ${uid}:${gid}-R /home/developerUSER developerENV HOME /home/developerCMD /usr/bin/firefox注意:在第四行的配置中,用你自己的用户和组id来替换0。 我们可以用下面的命令在shell或者终端中得到uid和gid。# id $USER3. 构造Docker容器下面我们就要根据上面的Dockerfile构建一个容器。它会安装firefox浏览器和它需要的包。它接着会设置用户权限并让它可以工作。这里镜像名是firefox,你可以根据你的需要命名。# docker build --rm -t firefox .4. 运行Docker容器现在,如果一切顺利,我们现在可以在运行在CentOS 7镜像中的Docker容器里面运行我们的GUI程序也就是Firefox浏览器了。# docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix firefox总结在Docker容器中运行GUI程序是一次很棒的体验,它对你的主机文件系统没有任何的伤害。它完全依赖你的Docker容器。

如何在Ubuntu14.04上搭建私有docker registry-Linux

本文将指导你如何搭建私有docker registry,并确保其安全性。在本教程的最后,你将亲身体验上传自制的docker镜像到私有registry,并在不同的机器上安全的将该其拉去下来。本教程不包含如何容器化应用服务的内容,而是旨在引导你去创建registry来存储你要部署的服务资源。如果你想要docker的入门教程,也许这儿可以帮到你。基于Ubuntu14.04系统的单registry和单客户机模式,本教程已经通过测试,也许在其他基于debian的发布上仍可以运行。docker概念如果在此之前你尚未接触过docker,这需要花费你几分钟的时间来熟悉docker的关键概念。如果你对docker已得心应手,只是想了解如何构建私有registry的话,那么,你可以直接进入下一小节。对于一个新手该如何使用docker,不妨试试这里优秀的docker笔记。docker的核心就是要对应用以及应用的依赖与操作系统分离。为了达到上述目的,docker采用容器与镜像机制。一个docker镜像基本上是一个文件系统的模板。当你通过docker run命令运行一个docker镜像时,该文件系统的一个实例即被激活,并且运行在系统内的docker容器之中。默认的,该容器无法触及原始镜像以及docker本身所运行在的主机的文件系统。这是一个独立的环境。对容器所做的任何改动都将保存在容器本身之内,并不会影响原始的镜像。如果想保留这些改动,那么,可以通过docker commit命令将容器保存为镜像。这意味你可以通过原有的容器来衍生出新的容器,而不会对原始容器(或镜像)造成任何影响。如果你熟悉git,那么你会觉得该流程十分眼熟:从任意的容器上去创建新的分支(这里,分支的意思即为docker中的镜像)。运行镜像类似于执行git checkout操作。更进一步形容,运行私有docker registry,就好比为docker镜像运行私有git仓库。第一步——安装必要的软件在docker registry服务器上,应当创建一个拥有sudo权限的用户(如果可以,在客户机上也如此)。docker registry软件是一款python应用,因此为了使其能够运行起来,需要安装python开发环境以及必要的库:sudo apt-get updatesudo apt-get -y install build-essential python-dev libevent-dev python-pip liblzma-dev第二步——安装并配置docker registry为了安装最新的稳定的docker registry发行版(作者撰文时为0.7.3,译者译时为0.9.1),我们将使用python包管理工具pip:sudo pip install docker-registrydocker-registry需要配置文件。默认地,pip将该配置文件放置在相当偏僻的地方,因系统中python的安装位置而异。因此,为了找到该路径,我们将尝试运行registry,以查看相关的输出:gunicorn --access-logfile - --debug -k gevent -b 0.0.0.0:5000 -w 1 docker_registry.wsgi:application由于配置文件不在正确的位置,上述尝试将会以失败而告终,并输出一条包含FileNotFoundError错误消息,如下所示:FileNotFoundError: Heads-up! File is missing: /usr/local/lib/python2.7/dist-packages/docker_registry/lib/../../config/config.ymlregistry在同样的路径上包含一个示例配置文件,该文件名为config_sample.yml,因此,我们可以通过上述给出的路径名来定位示例配置文件。从错误消息中复制路径信息(此时为/usr/local/lib/python2.7/dist-packages/docker_registry/lib/../../config/config.yml),然后,将config.yml部分去除,这样我们可以切换到该路径下。cd /usr/local/lib/python2.7/dist-packages/docker_registry/lib/../../config/将config_sample.yml文件的内容复制到config.yml中:sudo cp config_sample.yml config.yml默认情况下,docker的数据文件存放在/tmp文件夹下,但是在许多的类Linux系统中,系统重启时该文件夹被清空,这并不是我们所希望的。那么,我们创建一个永久性的文件夹来存储数据:sudo mkdir /var/docker-registry好的,下面我们配置config.yml文件,将对文件夹/tmp的引用更改为/var/docker-registry。首先,首先找到以sqlalchemy_index_database为首的靠近文件首部的一行:sqlalchemy_index_database:_env:SQLALCHEMY_INDEX_DATAbase:sqlite:////tmp/docker-registry.db将其更改指向/var/docker-registry,如下所示:sqlalchemy_index_database:_env:SQLALCHEMY_INDEX_DATAbase:sqlite:////var/docker-registry/docker-registry.db向下一点,到local:部分,重复上述操作,更改如下内容:local: &localstorage: localstorage_path: _env:STORAGE_PATH:/tmp/registry为:local: &localstorage: localstorage_path: _env:STORAGE_PATH:/var/docker-registry/registry样例配置文件中的其他默认值均无需修改。一目十行即可。然而,如果你想要做一些复杂的配置,诸如采用扩展存储装置来存储docker数据,那么该文件正具有此功能。当然,这已超出本教程的范围,你可以查看docker-registry文档以获取更多的帮助。既然配置文件已置于正确的位置,那么再一次尝试来测试docker registry服务器:gunicorn --access-logfile - --debug -k gevent -b 0.0.0.0:5000 -w 1 docker_registry.wsgi:application你会看到如下的输出:2014-07-27 07:12:24 Booting worker with pid: 293492014-07-27 07:12:24,807 DEBUG: Will return docker-registry.drivers.file.Storage棒极了!现在我们已经拥有一个运行着的docker registry。下面执行Ctrl+C终止该程序。到目前为止,docker registry并不是那么有用。它并不会自行启动除非我们执行上述gunicorn命令。另外,docker registry不没有引入任何的内置的认证机制,因此,其当前状态下是不安全并且对外部完全开放的。第三步——以服务的形式启动docker registry通过创建Upstart脚本,设置docker registry在系统的启动程序中开始运行。首先,创建日志文件目录:sudo mkdir -p /var/log/docker-registry然后,用一款你拿手的文本器来创建Upstart脚本:sudo nano /etc/init/docker-registry.conf将如下内容写入上述脚本中:description “Docker Registry“start on runlevel respawnrespawn limit 10 5script exec gunicorn --access-logfile /var/log/docker-registry/access.log --error-logfile /var/log/docker-registry/server.log -k gevent --max-requests 100 --graceful-timeout 3600 -t 3600 -b localhost:5000 -w 8 docker_registry.wsgi:applicationend script更多关于Upstart脚本的内容,请阅读该教程。此时,执行如下命令:sudo service docker-registry start将看到下面的输出:docker-registry start/running, process 25303当然,你也可以通过运行下面的命令查看server.log日志文件,验证docker-registry服务是否正在运行:tail /var/log/docker-registry/server.log如果一切正常的话,你会看到像之前执行gunicorn命令时输出的文本信息。既然docker-registry服务器已在后台运行,那么下面我们来配置Nginx,以使registry更加安全。

docker私有镜像仓库搭建和镜像删除

docker私有镜像仓库一般用来存放公司内部的镜像,比如微服务中会有很多的服务需要放到自己公司内部的镜像仓库上,发布的时候直接从私有镜像仓库拉取。比如我公司的微服务部署在k8s环境上,微服务技术依然选择熟悉的 Spring Cloud ,这样每一个服务其实就是一个 Spring Boot 项目,我们通过Maven的插件会在项目编译、打包之后推送到我们的私有镜像仓库,之后CI工具使用kubelet部署的时候会从私有镜像仓库拉取镜像,最后完成部署,可以说私有镜像仓库是非常重要的一个环节。 接下来我会主要讲述一下私有镜像仓库的搭建以及镜像的管理,包括一些自己遇到的问题。 首先要保证自己的服务器已经安装了 docker 。具体的安装教程可以看 官网 ,这里就不在赘述了。 首先我们需要创建一个自己的CA证书, 比如下图是我自己创建时输入的相关内容: 做好镜像存储目录和证书目录的挂载,运行即可 这一步需要在所有需要拉取镜像的服务器上执行。上月底我在部署正式环境时我就遇到了这个问题,k8s的节点上一直显示拉取镜像失败,后来才发现忘了在k8s服务器上配置证书。 hostname 即生成CA证书的时候最后输入的 hostname , port 镜像仓库对外暴露的端口号。 如果是在镜像仓库所在的服务器上,执行: 如果不是同一台服务器,同样需要存放创建证书目录,执行: 之后将证书上传到目标服务器,且放在证书目录下,名称为 ca.crt 。 为了测试,我拉取一个 redis 镜像,然后给它重新打一个 tag 。 推送到私有镜像仓库:浏览器显示: 表示刚才推送到私有镜像仓库是成功的。接下来我们测试从另一台服务器拉取刚才的镜像。当然这台服务器一定要按照之前的描述配置好CA证书,还要修改服务器 hosts 文件,配置好 ip 和 hostname 。 拉取镜像: 拉取镜像如下图所示: 根据显示可以看出拉取镜像是成功的。 到这里镜像仓库的搭建、推送和拉取都讲完了,接下来就看看怎么删除镜像。 这里说的删除镜像是指从仓库中删除,即从服务器上删除。在构建仓库的时候我们将镜像的仓库容器内的目录挂载到了服务器的目录。镜像仓库内其实是没有镜像文件,都在服务器对应的目录下。在开发的时候我就遇到过这样一个问题,因为是开发环境项目编译、打包、镜像构建和推送都非常频繁,虽然新的镜像会覆盖老的镜像,但是原有的镜像文件本身并没有被覆盖,这样的结果就是虽然镜像仓库上看镜像只有一个,但是本地服务上存储的是很多个镜像文件(而且基本是没啥用的),最终导致了服务磁盘空间不足的情况。 我们依然以 Redis 举例,我将多不同版本的 Redis 多次像私有仓库推送,不管是 Redis 4.0、5.0、6.0,最终我向仓库推送的版本号都是 redis:v4 (过程省略),最终我们在镜像仓库目录( /home/registry/ )下可以看到有多个 sha256 的值,详细目录: /home/registry/docker/registry/v2/repositories/redis/_manifests/revisions/sha256 如下图:如果要删除镜像首先需要修改配置文件,进入到docker容器内: 保存之后退出容器。 我们进入到存放镜像的目录下,删除一个镜像的 sha256 的值 上面只是删除了镜像的 sha256 值,并没有删除镜像本身,我们需要调用垃圾回收的命令: 这时候会看到一些输出,比如: 这时候我们在查看下对应目录的磁盘使用情况: 但是变化不明显,那就在删除一个试试。 除了手动删除之外还可以通过API来删除,这个方法我没有测试,感兴趣的小伙伴可以测试一下。在实际过程中我也是使用上述方法删除的,因为我一般都是磁盘使用率到一定比例才进行批量删除的,另外网上也有人通过脚本,感兴趣的小伙伴都可以尝试一下。 删除可以使用使用官方API删除: 查询镜像的 sha256 的值: 今天关于docker私有镜像仓库的内容就讲到这里,如果对上面内容有什么疑问欢迎大家交流探讨,也欢迎大家多多点赞、分享、转发,谢谢大家~~~​

如何在windows上使用docker

1. 下载 Kitematic首先,我们需要从 github 仓库 中下载 Windows 操作系统可用的最新的 Kitematic 发行版。我们用下载器或者 web 浏览器下载了它的可执行 EXE 文件。下载完成后,我们需要双击可执行应用文件。双击应用文件之后,会问我们一个安全问题,我们只需要点击 OK 按钮,如下图所示。2. 安装 Kitematic下载好可执行安装程序之后,我们现在就可以在我们的 Windows 操作系统上安装 Kitematic了。安装程序现在会开始下载并安装运行 Kitematic 需要的依赖软件,包括 Virtual Box 和 Docker。如果已经在系统上安装了 Virtual Box,它会把它升级到最新版本。安装程序会在几分钟内完成,但取决于你网络和系统的速度。如果你还没有安装 Virtual Box,它会问你是否安装 Virtual Box 网络驱动。建议安装它,因为它用于 Virtual Box 的网络功能。所需的依赖 Docker 和 Virtual Box 安装完成并运行后,会让我们登录到 Docker Hub。如果我们还没有账户或者还不想登录,可以点击 SKIP FOR NOW 继续后面的步骤。如果你还没有账户,你可以在应用程序上点击注册(Sign Up)链接并在 Docker Hub 上创建账户。完成之后,就会出现 Kitematic 应用程序的第一个界面。正如下面看到的这样。我们可以搜索可用的 docker 镜像。3. 部署 Nginx Hello World 容器现在,成功安装完 Kitematic 之后,我们打算部署容器。要运行一个容器,我们只需要在搜索区域中搜索镜像。然后点击 Create 按钮部署容器。在这篇教程中,我们会部署一个小的包含了 Hello World 主页的 Nginx Web 服务器。为此,我们在搜索区域中搜索 Hello World Nginx。看到了容器信息之后,我们点击 Create 来部署容器。镜像下载完成之后,它会自动部署。我们可以查看 Kitematic 部署容器的命令日志。我们也可以在 Kitematic 界面上预览 web 页面。现在,我们通过点击预览在 web 浏览器中查看我们的 Hello World 页面。如果我们想切换到命令行接口并用它管理 docker,这里有个称为 Docker CLI 的按钮,它会打开一个 PowerShell,在里面我们可以执行 docker 命令。现在,如果我们想配置我们的容器并执行类似更改容器名称、设置环境变量、指定端口、配置容器存储以及其它高级功能的任务,我们可以在容器设置页面做到这些。总结我们终于成功在 Windows 操作系统上安装了 Kitematic 并部署了一个 Hello World Ngnix 服务器。推荐下载安装 Kitematic 最新的发行版,因为会增加很多新的高级功能。由于 Docker 运行在 64 位平台,当前 Kitematic 也是为 64 位操作系统构建。它只能在 Windows 7 以及更高版本上运行。

云计算核心技术Docker教程:Docker存储写入时复制(CoW)策略

【点击右上角加’关注’,全国产经信息不错过】

写时复制是一种共享和复制文件的策略,可最大程度地提高效率。如果文件或目录位于映像的较低层中,而另一层(包括可写层)需要对其进行读取访问,则它仅使用现有文件。另一层第一次需要修改文件时(在构建映像或运行容器时),将文件复制到该层并进行修改。这样可以将I / O和每个后续层的大小最小化。这些优点将在下面更深入地说明。

共享可以提升较小的图像

当您用于docker pull从存储库中下拉映像时,或者当您从本地尚不存在的映像中创建容器时,每个层都会被分别下拉,并存储在Docker的本地存储区域中,该区域通常/var/lib/docker/在Linux主机上。在此示例中,您可以看到这些层被拉出:

$ docker pull ubuntu:18.04

18.04: Pulling from library/ubuntu

f476d66f5408: Pull complete

8882c27f669e: Pull complete

d9af21273955: Pull complete

f5029279ec12: Pull complete

Digest: sha256:ab6cb8de3ad7bb33e2534677f865008535427390b117d7939193f8d1a6613e34

Status: Downloaded newer image for ubuntu:18.04

这些层中的每一层都存储在Docker主机的本地存储区域内的自己的目录中。要检查文件系统上的各层,请列出的内容/var/lib/docker/。本示例使用overlay2 存储驱动程序:

$ ls /var/lib/docker/overlay2

16802227a96c24dcbeab5b37821e2b67a9f921749cd9a2e386d5a6d5bc6fc6d3

377d73dbb466e0bc7c9ee23166771b35ebdbe02ef17753d79fd3571d4ce659d7

3f02d96212b03e3383160d31d7c6aeca750d2d8a1879965b89fe8146594c453d

ec1ec45792908e90484f7e629330666e7eee599f08729c93890a7205a6ba35f5

l

目录名称与层ID不对应(自Docker 1.10开始就是如此)。

现在,假设您有两个不同的Dockerfile。您使用第一个创建名为的图像acme/my-base-image:1.0。

# syntax=docker/dockerfile:1

FROM ubuntu:18.04

COPY . /app

第二acme/my-base-image:1.0层基于,但具有一些附加层:

# syntax=docker/dockerfile:1

FROM acme/my-base-image:1.0

CMD /app/hello.sh

第二个图像包含第一个图像的所有层,再加上带有CMD指令的新层,以及一个可读写容器层。Docker已经具有第一个映像中的所有层,因此不需要再次将其拉出。这两个图像共享它们共有的任何图层。

如果从两个Dockerfile构建映像,则可以使用docker image ls和 docker history命令来验证共享层的密码ID是否相同。

1.创建一个新目录cow-test/并更改到该目录中。

2.在中cow-test/,创建一个hello.sh具有以下内容的新文件:

#!/bin/sh

echo “Hello world“

保存文件,并使其可执行:

chmod +x hello.sh

3.将上面第一个Dockerfile的内容复制到一个名为的新文件中 Dockerfile.base。

4.将上面第二个Dockerfile的内容复制到一个名为的新文件中 Dockerfile。

5.在cow-test/目录中,构建第一个映像。不要忘记.在命令中包含final 。设置了PATH,它告诉Docker在哪里寻找需要添加到映像中的任何文件。

$docker build -t acme/my-base-image:1.0 -f Dockerfile.base .

6.建立第二张镜像。

$docker build -t acme/my-final-image:1.0 -f Dockerfile .

7.检查镜像的大小:

$docker image ls

8.检出构成每个镜像的图层:

$docker history bd09118bcef6

请注意,除了第二个图像的顶层以外,所有层都是相同的。所有其他层在两个图像之间共享,并且仅在中存储一次/var/lib/docker/。实际上,新层根本不占用任何空间,因为它不更改任何文件,而仅运行命令。

全国产经平台联系电话:010-65367702,邮箱:hz@people-energy.com.cn,地址:北京市朝阳区金台西路2号人民日报社

docker快速搭建几个常用的第三方服务

Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中。这篇教程介绍了利用Docker在单机上快速搭建多节点Hadoop集群的详细步骤。作者在发现目前的HadooponDocker项目所存在的问题之后,开发了接近最小化的Hadoop镜像,并且支持快速搭建任意节点数的Hadoop集群。一.项目简介GitHub:kiwanlau/hadoop-cluster-docker直接用机器搭建Hadoop集群是一个相当痛苦的过程,尤其对初学者来说。他们还没开始跑wordcount,可能就被这个问题折腾的体无完肤了。而且也不是每个人都有好几台机器对吧。你可以尝试用多个虚拟机搭建,前提是你有个性能杠杠的机器。我的目标是将Hadoop集群运行在Docker容器中,使Hadoop开发者能够快速便捷地在本机搭建多节点的Hadoop集群。其实这个想法已经有了不少实现,但是都不是很理想,他们或者镜像太大,或者使用太慢,或者使用了第三方工具使得使用起来过于复杂。下表为一些已知的HadooponDocker项目以及其存在的问题。

 
关键词: 容器
 
 
相关推荐
热门点击
 
网站首页 | 网站地图 | 广告服务 | 网站留言 | RSS订阅