Alpine Linux

8 分钟入门 K8s | 详解容器基本概念

六月ゝ 毕业季﹏ 提交于 2019-11-29 21:37:36
一、容器与镜像 什么是容器? 在介绍容器的具体概念之前,先简单回顾一下操作系统是如何管理进程的。 首先,当我们登录到操作系统之后,可以通过 ps 等操作看到各式各样的进程,这些进程包括系统自带的服务和用户的应用进程。那么,这些进程都有什么样的特点? 第一,这些进程可以相互看到、相互通信; 第二,它们使用的是同一个文件系统,可以对同一个文件进行读写操作; 第三,这些进程会使用相同的系统资源。 这样的三个特点会带来什么问题呢? 因为这些进程能够相互看到并且进行通信,高级权限的进程可以攻击其他进程; 因为它们使用的是同一个文件系统,因此会带来两个问题:这些进程可以对于已有的数据进行增删改查,具有高级权限的进程可能会将其他进程的数据删除掉,破坏掉其他进程的正常运行;此外,进程与进程之间的依赖可能会存在冲突,如此一来就会给运维带来很大的压力; 因为这些进程使用的是同一个宿主机的资源,应用之间可能会存在资源抢占的问题,当一个应用需要消耗大量 CPU 和内存资源的时候,就可能会破坏其他应用的运行,导致其他应用无法正常地提供服务。 针对上述的三个问题,如何为进程提供一个独立的运行环境呢? 针对不同进程使用同一个文件系统所造成的问题而言,Linux 和 Unix 操作系统可以通过 chroot 系统调用将子目录变成根目录,达到视图级别的隔离;进程在 chroot 的帮助下可以具有独立的文件系统

8 分钟入门 K8s | 详解容器基本概念

天大地大妈咪最大 提交于 2019-11-29 21:35:49
一、容器与镜像 什么是容器? 在介绍容器的具体概念之前,先简单回顾一下操作系统是如何管理进程的。 首先,当我们登录到操作系统之后,可以通过 ps 等操作看到各式各样的进程,这些进程包括系统自带的服务和用户的应用进程。那么,这些进程都有什么样的特点? 第一,这些进程可以相互看到、相互通信; 第二,它们使用的是同一个文件系统,可以对同一个文件进行读写操作; 第三,这些进程会使用相同的系统资源。 这样的三个特点会带来什么问题呢? 因为这些进程能够相互看到并且进行通信,高级权限的进程可以攻击其他进程; 因为它们使用的是同一个文件系统,因此会带来两个问题:这些进程可以对于已有的数据进行增删改查,具有高级权限的进程可能会将其他进程的数据删除掉,破坏掉其他进程的正常运行;此外,进程与进程之间的依赖可能会存在冲突,如此一来就会给运维带来很大的压力; 因为这些进程使用的是同一个宿主机的资源,应用之间可能会存在资源抢占的问题,当一个应用需要消耗大量 CPU 和内存资源的时候,就可能会破坏其他应用的运行,导致其他应用无法正常地提供服务。 针对上述的三个问题,如何为进程提供一个独立的运行环境呢? 针对不同进程使用同一个文件系统所造成的问题而言,Linux 和 Unix 操作系统可以通过 chroot 系统调用将子目录变成根目录,达到视图级别的隔离;进程在 chroot 的帮助下可以具有独立的文件系统

开发环境迁移到Docker笔记

柔情痞子 提交于 2019-11-29 20:18:42
最近因为被苹果爸爸的新系统卡顿的恶心到吐,决定把开发系统迁移到win10,然后又把所有的开发环境docker化,docker大法好 这里记录下常用本地开发的常用的docker操作 一些常用操作 docker search ubuntu // 搜索image docker pull ubuntu // 获取 docker run -it --rm ubuntu // 启动一个容器,并且在运行结束后删除容器 docker run --name myubuntu -it --rm ubuntu // 启动一个容器并命名为myubuntu docker run -it --rm ubuntu sh -c "cmd1 && cmd2" //启动容器并执行多个命令 docker run -it --rm --mount type=bind,source=/local-path,target=/container-path ubuntu // 启动容器并挂载本机目录 创建新的网络,并在启动本地容器的时候,指定ip,这个在本地开发的时候比较有用 docker network create --subnet=172.18.0.0/16 mynet docker run --net mynet --ip 172.18.0.22 -it ubuntu bash 一些清理操作 docker image

8 分钟入门 K8s | 详解容器基本概念

心已入冬 提交于 2019-11-29 10:16:33
作者| 阿里巴巴高级开发工程师 傅伟 一、容器与镜像 什么是容器? 在介绍容器的具体概念之前,先简单回顾一下操作系统是如何管理进程的。 首先,当我们登录到操作系统之后,可以通过 ps 等操作看到各式各样的进程,这些进程包括系统自带的服务和用户的应用进程。那么,这些进程都有什么样的特点? 第一,这些进程可以相互看到、相互通信; 第二,它们使用的是同一个文件系统,可以对同一个文件进行读写操作; 第三,这些进程会使用相同的系统资源。 这样的三个特点会带来什么问题呢? 因为这些进程能够相互看到并且进行通信,高级权限的进程可以攻击其他进程; 因为它们使用的是同一个文件系统,因此会带来两个问题:这些进程可以对于已有的数据进行增删改查,具有高级权限的进程可能会将其他进程的数据删除掉,破坏掉其他进程的正常运行;此外,进程与进程之间的依赖可能会存在冲突,如此一来就会给运维带来很大的压力; 因为这些进程使用的是同一个宿主机的资源,应用之间可能会存在资源抢占的问题,当一个应用需要消耗大量 CPU 和内存资源的时候,就可能会破坏其他应用的运行,导致其他应用无法正常地提供服务。 针对上述的三个问题,如何为进程提供一个独立的运行环境呢? 针对不同进程使用同一个文件系统所造成的问题而言,Linux 和 Unix 操作系统可以通过 chroot 系统调用将子目录变成根目录,达到视图级别的隔离;进程在 chroot

Alpine Linux

你说的曾经没有我的故事 提交于 2019-11-29 08:25:15
做自己的偶像 Alpine Linux Alpine Linux Docker镜像 基于 Alpine Linux操作系统 ,后者是一个面向安全的轻型Linux发行版。不同于通常Linux发行版,Alpine Linux采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗。在保持瘦身的同时,Alpine Linux还提供了自己的包管理工具apk,可以在其网站上 查询 ,或者直接通过apk命令查询和安装。 官网:https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management apk search -v 'jdk' apk update apk add curl=7.55.0-r0 这里我们选择使用体积更小的 Linux 镜像,Alpine来进行同样功能的二维码服务的容器镜像。 因为 Alpine 和 Ubuntu 不是一个社区进行维护,所以软件包很多名称是不同的,这里我直接提供我已经查找修改完毕的镜像文件。 如果你也有类似的需求,需要将不同系统的软件进行迁移安装,可以在 https://pkgs.alpinelinux.org/packages 查找你所需要的软件包的名称。 ============ 尝试用apt-get install python-matplotlib 安装失败

Docker | 第五章:构建自定义镜像

喜你入骨 提交于 2019-11-27 07:58:48
前言 上一章节 ,主要是介绍了下 Dockerfile 的一些常用命令的说明。我们知道,利用 Dockerfile 可以构建一个新的镜像,比如运行 Java 环境,就需要一个 JDK 环境的镜像,但直接使用公共的镜像时,一般上大小都比较大。所以本章节就主要结合 Dockerfile 文件及 commit 方式,构建属于自己的镜像,同时对镜像进行压缩和优化,同时也是对 Dockerfile 知识的一个实践。 利用Dockerfile构建自定义镜像 作为一个 java 后端开发,这里就直接以构建一个Oracle官方 jre 环境来示例。 选定基础镜像 由于在Linux中, JVM 主要是调用系统的C语言库,Oracle的官方JRE,使用的是libc,也就是 glibc ,这意味着你要运行任何Java程序,都需要先装好 glibc 。所以我们直接去 https://hub.docker.com 找一个基于 glibc 的基础镜像(当然了,大家也可直接选定比如 CensOS 这些Linux的发行版本了)。 我们之类直接选择默认排在第一个的 alpine-glibc 作为我们的基础镜像,比较这个大小也才12M左右呀! 题外话:大家作为实验性质时,为了获取更小的基础镜像,可以选择 alpine 这个基础镜像,比较这个只有5M大小,够精简了! 准备JRE版本 这里我们直接去 Oracle官网

dlv进行debug时报_cgo_export.c:3:10: fatal error: stdlib.h: No such file or directory错误

ぃ、小莉子 提交于 2019-11-26 09:27:11
环境模拟 使用docker启用golang的调试环境,镜像使用golang:1.13.4-alpine3.10 启用调用环境: docker run -d --name golang-debug golang:1.13.4-alpine3.10 sleep 1d 进入容器: docker exec -it golang-debug sh 安装git和dlv apk add git go get -u github.com/derekparker/delve/cmd/dlv cd $GOPATH git clone project_ repository_url 开始调试debug dlv debug ./main.go 报错 解决方法 apk add musl-dev 来源: oschina 链接: https://my.oschina.net/jennerlo/blog/3130875

构建swoole docker镜像(基于alpine基础镜像)

安稳与你 提交于 2019-11-25 17:03:38
这里默认你已经安装好docker,并准备好以下环境 一.环境 Ubuntu 18.04.1 LTS php:7.2.4-cli-alpine3.7 ( https://hub.docker.com/_/php/ 拉取) swoole-4.2.1 ( https://pecl.php.net/package/swoole 下载) docker version $ docker version Client: Version: 18.05.0-ce API version: 1.37 Go version: go1.9.5 Git commit: f150324 Built: Wed May 9 22:16:13 2018 OS/Arch: linux/amd64 Experimental: false Orchestrator: swarm Server: Engine: Version: 18.05.0-ce API version: 1.37 (minimum version 1.12) Go version: go1.9.5 Git commit: f150324 Built: Wed May 9 22:14:23 2018 OS/Arch: linux/amd64 Experimental: false 二.基于pecl构建 $ mkdir build-swoole &&