镜像

你以为 Alpine 镜像想用就能用?

▼魔方 西西 提交于 2020-02-25 19:32:44
你以为 Alpine 镜像想用就能用?🌚 1 大致流程 alpine 镜像体积只有 5MB,作为 Docker 下最小的 Linux 镜像,很适合打造一些轻量级镜像。但 alpine 底层使用 musl-libc,兼容性与 glibc 有一定差距。 用 Golang 编写了一个简单的 hello, world 程序, Dockerfile 使用 alpine 作为基础镜像 FROM alpine:latest 能够正常运行; 基于 Gin 框架 Web 应用,相似的 Dockerfile 文件,build 完成后 run 的时候报了一些不明原因的错误,最后基础镜像改为 centos 或 alpine-glibc 后 ( FROM centos:latest ) 重新构建的镜像可以正常运行。 2 问题复现 2.1 使用 alpine 作为基础镜像构建 Golang “hello, world” 应用, ENTRYPOINT 使用 sh 运行程序 2.1.1 编写 “hello, world” Dockerfile,基础镜像 alpine hello.go package main import ( "fmt" "os" "flag" ) var config = flag.String("config", "go & docker", "[-config value]") func

Docker-(二).使用操作

爱⌒轻易说出口 提交于 2020-02-25 19:22:09
docker的三个组件:镜像、容器、仓库; 容器是隔离的,虚拟机是彻底的资源隔离; 仓库是集中式机构,将镜像都存放进去;只要能访问仓库,就可以下载镜像建立容器; docker目前的问题:如果docker挂了 那上面的容器停了 那上面的服务就会有问题; uploading-image-531381.png uploading-image-922308.png 镜像操作 1.查看docker信息 docker info 2.搜索镜像 docker search centos docker search lamp -f stars=10 (显示星际10以上的) 3.下载镜像/上传镜像 docker pull nickistre/centos-lamp docker push 名称:标签 4.显示当前镜像 docker images 5.查看镜像信息 docker inspect ID 6.添加标签 docker tag nickistre/centos-lamp:latest centos:lamp 7.导出/导入 docker save -o centos.tar centos docker load < 存出的文件 docker load -input centos.tar 8.删除镜像 (有容器的时候,不能删除镜像) docker rmi 名称/镜像ID (以ID号删除

Docker容器之镜像管理,端口映射,容器互联

强颜欢笑 提交于 2020-02-25 16:57:12
docker镜像的分层 Dockerfile 中的每个指令都会创建一个新的镜像层; 镜像层将会被缓存和复用; 当 Dockerfile 的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效; 某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效; 镜像层是不变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然包含该文件 docker镜像 是应用发布的标准格式 可支撑一个docker容器的运行 docker镜像的创建方法 基于已有镜像创建 基于本地模板创建 基于dockerfile创建 基于已有镜像创建 将容器里面运行的程序及运行环境打包生成新的镜像 docker commit [选项] 容器ID/名称 仓库名称:[标签] -m:说明信息 -a:作者信息 -p:生成过程中停止容器的运行 基于本地模板创建 通过导入操作系统模板文件生成新的镜像 使用wget命令导入为本地镜像 导入成功后可查看本地镜像信息 基于 Dockerfile 创建 Dockerfile 是由一组指令组成的文件 Dockerfile 结构的四部分 基础镜像信息 维护者信息 镜像操作指令 容器启动时执行指令 使用 Dockerfile 创建镜像并在容器中运行 dockerfile操作指令 基于已有镜像创建 [root@localhost ~]# docker

Docker容器之基础管理

依然范特西╮ 提交于 2020-02-25 16:04:00
Docker介绍 是一种轻量级的“虚拟机” 在Linux容器里运行应用的开源工具 Docker与虚拟机的区别 虚拟机是在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。Docker是开源的应用容器引擎,依然需要先在电脑上安装操作系统,然后安装Docker容器的管理器,才可以。虚拟机是在硬件级别进行虚拟化,而Docker是在操作系统的层面虚拟化;虚拟机是通过模拟硬件搭建操作系统 Docker的使用场景 打包应用程序简化部署 可脱离底层硬件任意迁移 例:服务器从腾讯云迁移到阿里云 Docker核心概念 镜像 容器 仓库 CentOS安装Docker的两种方式 使用curl获得docker的安装脚本进行安装 使用yum仓库来安装docker docker的安装 设置镜像源,安装docker [root@localhost ~]# yum install -y \ > yum-utils \ //设置源工具 > device-mapper-persistent-data \ //映射工具 > lvm2 [root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //加载阿里云镜像源

使用Jenkins持续集成部署QQ小程序

无人久伴 提交于 2020-02-25 15:44:07
QQ小程序提供了Docker镜像来对小程序项目进行CI构建( 文档 )。文档中提供的Github Actions及Drone CI两种CI工具都对Docker的相关操作进行了深度集成,以至于不需要调用docker自身的命令。 而改写成Jenkinsfile也很简单,在检出代码后,只需要先拉取镜像然后运行即可。 操作步骤 在QQ小程序后台获取AppToken,然后赋值到环境变量 PLUGIN_APPTOKEN 。 在检出代码后,新建一个拉取镜像的stage,拉取镜像。 stage('拉取镜像') { steps { sh 'docker pull qqminiapp/build:latest' } } 追加部署的stage,运行docker镜像,并根据文档设置传递的参数,我这里把小程序版本设置为CI构建的编号,描述为提交的commit id。 注意在设置 workdir 后,还需要 -v 挂载目录,否则在容器内也无法读取到目录文件。 stage('部署') { steps { sh '''docker run --rm --workdir /root/workspace \ --env PLUGIN_VERSION=${CI_BUILD_NUMBER} \ --env PLUGIN_DESC=${GIT_BUILD_REF} \ --env PLUGIN_APPTOKEN=$

导出和导入Docker容器

不羁的心 提交于 2020-02-25 10:53:42
导出容器 如果要导出本地某个容器,可以使用 docker export 命令。 $ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7691a814370e ubuntu:14.04 "/bin/bash" 36 hours ago Exited (0) 21 hours ago test $ sudo docker export 7691a814370e > ubuntu.tar 这样将导出容器快照到本地文件。 导入容器快照 可以使用 docker import 从容器快照文件中再导入为镜像,例如 $ cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB 此外,也可以通过指定 URL 或者某个目录来导入,例如 $sudo docker import http://example.com/exampleimage.tgz example/imagerepo *注:用户既可以使用

docker跑run命令拉取镜像慢或无反应--换镜像源

Deadly 提交于 2020-02-24 22:37:48
问题: 使用docker run 命令进行创建容器及拉取镜像nginx时(别的镜像都适用),回复一直处于pulling fs layer或没反应。 解决办法: (更换源) 编辑文件: vi /etc/docker/daemon.json 删除原有地址、添加新的镜像源文件,这里我推荐使用阿里云(其他国内源也可以) { “registry-mirrors”: [“https://pee6w651.mirror.aliyuncs.com”] } 保存并退出; 此时注意一下:配置仍没有生效,需使用命令重启 重新跑命令即可----- 来源: CSDN 作者: 资深菜鸟. 链接: https://blog.csdn.net/weixin_45447770/article/details/104483723

Docker存储驱动之AUFS简介

可紊 提交于 2020-02-24 16:06:58
简介   AUFS曾是Docker默认的首选存储驱动。它非常稳定、有很多真实场景的部署、很强的社区支持。它有以下主要优点:   极短的容器启动时间。   有效的存储利用率。   有效的内存利用率。   虽然如此,但由于它没有包含在Linux内核主线中,所有很多Linux发行版并不支持AUFS。   以下章节介绍AUFS的特性,并且它们如何作用于Docker。 特性 镜像分层和部署   AUFS是一种联合文件系统。它使用同一个Linux host上的多个目录,逐个堆叠起来,对外呈现出一个统一的文件系统。AUFS使用该特性,实现了Docker镜像的分层。下图展示出ubuntu:latest的镜像的分层。       注意 :在Docker1.10之前,layer的ID对应着其在/var/lib/docker下的目录名称,但在Docker1.10之后,不再有这种直接的对应关系。   对于一个容器来说, 只有顶层的容器layer是可读写的,而下面的layer都是只读 的。 读写文件   Docker使用AUFS的CoW(Copy-on-Write)技术来实现镜像共享和最小化磁盘空间的使用。AUFS作用于文件层,也就是说AUFS CoW拷贝整个文件——即使文件只修改了一点点的内容。所以,它对容器的性能影响很明显,尤其拷贝多层镜像下的大文件,或者是在一个深层次的目录树中进行搜索。   不过

从实战角度超级详解中大型企业微服务化的六大核心关键技术

痞子三分冷 提交于 2020-02-24 15:38:27
在之前文章: 超全详解Java开发环境搭建 一文中,部分博友提出程序的自动化部署等相关问题,本篇文章就来解决该问题,即企业微服务化,如何实现服务的自动化部署?服务自动化部署需要哪些技术? 本篇文章从实战角度讲解中大型公司微服务化最核心最关键的六大技术,即jenkins,docker,maven,git,gitlab,harbor(本篇文章未讲解nexus,在后续文章再讲解),关于六大技术,会在接下来的文章中从架构,理论,实战,常见难点和常见误区等角度精细化讲解。 Tip:本篇文章适合具有一定linux和docker基础的读者,对于不熟悉linux和docker的读者朋友,可以先关注,后续文章会对每个专题从入门到架构进行讲解。 一 docker安装 1.卸载旧版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 2.安装相关工具 yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 3.选择稳定仓库 yum-config-manager \ --add-repo

Docker基本概念

霸气de小男生 提交于 2020-02-24 14:38:49
container 容器。可以把每个 container 看做是一个独立的主机。 container 的创建通常有一个 image 作为其模板。类比成虚拟机的话可以理解为 image 就是虚拟机的镜像,而 container 就是一个个正在运行的虚拟机。一个虚拟机镜像可以创建出多个运行的虚拟主机且相互独立。 注意:container 一旦创建如果没有用 rm 命令移除,将会一直存在。所以用完后记得删除哦。 image 镜像。image 相当于 container 的模板,container 创建后里面有什么软件完全取决于它使用什么 image 。image 可以通过 container 创建(相当于把此时 container 的状态保存成快照),也可以通过 Dockerfile (一个文本文件,里面使用 docker 规定的一些写法)来创建。其中通过 Dockerfile 创建的方法能让环境配置和代码一起被版本库一起管理。 registry 存放镜像的仓库。只要能连接到 registry 每个人都可以很方便地通过 pull 命令从仓库中获取镜像。docker 默认使用的仓库是 docker hub ,国内可以使用 DaoCloud 来建立 Mirror 连接到 docker hub,进而加快获取 image 的速度。 boot2docker 一个轻量级 linux 虚拟机