Docker 安装 Alpine
Alpine 操作系统是 面向安全的 轻型 Linux 发行版
Alpine 采用了 musl libc 和 busybox 减小系统 体积 和 运行资源消耗
功能上比 busybox 完善 得到开源社区 青睐 在保持瘦身的同时 Alpine 还提供了自己的包管理工具 apk
通过 https://pkgs.alpinelinux.org/packages 查询包信息 也可以直接通过 apk 命令 查询 安装 软件
Alpine 由非商业组织维护 支持 广泛场景的 Linux发行版 特别为资深 重度Linux用户 而优化 关注安全 性能和资源效能
Alpine 镜像 是一个优秀的 适用于生产的基础系统
Alpine Docker 镜像 继承了 Alpine Linux 发行版 优势
相比于其他 Docker 镜像 容量 仅 有 5 MB 非常友好的 包管理机制 官方镜像
官方镜像的大小比较
REPOSITORY TAG IMAGE ID VIRTUAL SIZE
alpine latest 4e38e38c8ce0 4.799 MB
debian latest 4d6ce913b130 84.98 MB
ubuntu latest b39b81afc8ca 188.3 MB
centos latest 8efe422e6104 210 MB
使用 docker run 指令直接运行一个 Alpine 容器 并指定运行的 Linux 指令
$ docker run alpine echo '123'
查看镜像
$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 4d90542f0623 38 weeks ago 5.58 MB
hello-world latest 04b44316b6af 2 weeks ago 30.83 MB
列表参数如下
REPOSITORY 指明镜像来自于哪个仓库
TAG 镜像的标记
IMAGE ID 镜像的ID值 该值是唯一的 有相同ID值的镜像是同一个镜像
CREATED 镜像的创建时间
VIRTUAL SIZE 镜像的大小
搜索镜像
$ docker search 镜像名下载镜像
$ docker pull 镜像名删除镜像
docker rmi 镜像名$ docker rmi 8dde5631d4aa
Docker 容器命令
根据镜像创建容器 并启动 镜像 比作类 容器就是对象 通过镜像创建容器$ docker run --name myalpine -itd 4d90542f0623
此时命令符变成了
/ # 这是容器内部了 可以使用容器内部系统的命令操作了
如 Alpine 的 apk 使用 exit 命令退出 容器
/ # apk
查看 运行中的 容器列表
$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
64024a8a158b 1a8a9ee54eb7 "docker-entrypoint.sh" 3 minutes ago Up 3 minutes 6379/tcp test_redis
7e7ee9d4ab30 04b44316b6af "/bin/sh -c 'php-fpm " 5 minutes ago Up 5 minutes 80/tcp teest_hellowold
列表说明
CONTAINER ID 启动的时候生成的ID
IMAGE 该容器使用的镜像
COMMAND 容器启动时调用的命令
CREATED 容器创建时间
STATUS 容器的状态
PORTS 容器系统使用的端口号
NAMES 容器自定义名称
启动容器
$ docker start container-name/container-id$ docker start 64024a8a158b
停止容器
$ docker stop container-name/container-id$ docker stop 64024a8a158b
查看容器日志
$ docker logs container-name/container-id$ docker logs 64024a8a158b
登录容器
$ docker exec -it container-name/container-id 命令名$ docker exec -it 64024a8a158b ls /
root@64024a8a158b:/data#
使用 exit 退出容器
列出容器里被改变的文件或者目录
$ docker diff container-name/container-id$ docker diff 64024a8a158b
显示运行容器 进程信息
$ docker top container-name/container-id$ docker top 64024a8a158b
从容器 拷贝文件/目录到本地路径
$ docker cp (container-name/container-id):/container_path path
$ docker cp 64024a8a158b:/root/.bash_history history
端口映射
容器中 运行的软件 使用的端口 在本机和本机的局域网 是不能访问的 所以将 docker 容器中的端口 映射到 当前的端口上映射容器 6379 端口 到 本机的 6378 端口 如下
$ docker run -d -p 6378:6379 --name port-redis redis
删除容器
删除单个容器$ docker rm container-id
删除所有容器
$ docker rm `$ docker ps -a -q`
迁移至 Alpine 基础镜像
大部分 Docker 官方镜像 支持 Alpine 作为基础镜像 可以很容易进行迁移ubuntu/debian -> alpine
python:2.7 -> python:2.7-alpine
ruby:2.3 -> ruby:2.3-alpine
使用 Alpine 镜像替换 Ubuntu 基础镜像 安装软件包 需要用 apk 包管理器替换 apt 工具
$ apk add --no-cache <package>
Alpine 软件安装包 名字 会与其他发行版 不同 在 //pkgs.alpinelinux.org/packages 确定安装包名称 如果需要的安装包不在主索引内 但是在测试或社区索引中 可以按照以下方法使用这些安装包
$ echo "http://dl-4.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
$ apk --update add --no-cache <package>
apk命令详解
/ # apk -hapk-tools 2.10.0, compiled for x86_64.
Installing and removing packages:
add Add PACKAGEs to 'world' and install (or upgrade) them, while ensuring that all dependencies are met
del Remove PACKAGEs from 'world' and uninstall them
System maintenance:
fix Repair package or upgrade it without modifying main dependencies
update Update repository indexes from all remote repositories
upgrade Upgrade currently installed packages to match repositories
cache Download missing PACKAGEs to cache and/or delete unneeded files from cache
Querying information about packages:
info Give detailed information about PACKAGEs or repositories
list List packages by PATTERN and other criteria
dot Generate graphviz graphs
policy Show repository policy for packages
Repository maintenance:
index Create repository index file from FILEs
fetch Download PACKAGEs from global repositories to a local directory
verify Verify package integrity and signature
manifest Show checksums of package contents
Use apk <command> --help for command-specific help.
Use apk --help --verbose for a full command listing.
This apk has coffee making abilities.
apk add --allow-untrusted /path/to/file.apk #本地安装
apk 命令是 Alpine Linux 下的包管理工具
apk 命令语法
apk install xxxapk search xxx # 支持正则
apk info xxx # 查看包的详细信息
apk show # list local package
# 卸载并删除 包
apk del openssh openntp vim
apk 命令升级
upgrade 命令升级系统已安装的所以软件包(一般包括内核) 当然也可指定仅升级部分软件包(通过 -u 或 –upgrade 选择指定)apk update # 更新最新本地镜像源
apk upgrade # 升级软件
apk add --upgrade busybox # 指定升级部分软件包
apk 命令搜索
apk search # 查找所以可用软件包apk search -v # 查找所以可用软件包及其描述内容
apk search -v 'acf*' # 通过软件包名称查找软件包
apk search -v -d 'docker' # 通过描述文件查找特定的软件包
apk 命令查看包信息
info 命令用于显示软件包的信息apk 命令实例
apk info # 列出所有已安装的软件包
apk info -a zlib # 显示完整的软件包信息
apk info --who-owns /sbin/lbu # 显示指定文件属于的包
apk镜像站
http://dl-cdn.alpinelinux.org/alpine/http://nl.alpinelinux.org/alpine/
http://uk.alpinelinux.org/alpine/
http://dl-2.alpinelinux.org/alpine/
http://dl-3.alpinelinux.org/alpine/
http://dl-4.alpinelinux.org/alpine/
http://dl-5.alpinelinux.org/alpine/
http://dl-8.alpinelinux.org/alpine/
http://mirror.yandex.ru/mirrors/alpine/
http://mirrors.gigenet.com/alpinelinux/
http://mirror1.hs-esslingen.de/pub/Mirrors/alpine/
http://mirror.leaseweb.com/alpine/
http://repository.fit.cvut.cz/mirrors/alpine/
http://alpine.mirror.far.fi/
http://alpine.mirror.wearetriple.com/
http://mirror.clarkson.edu/alpine/
http://linorg.usp.br/AlpineLinux/
http://ftp.yzu.edu.tw/Linux/alpine/
http://mirror.aarnet.edu.au/pub/alpine
http://mirror.csclub.uwaterloo.ca/alpine
http://ftp.acc.umu.se/mirror/alpinelinux.org
http://ftp.halifax.rwth-aachen.de/alpine
http://speglar.siminn.is/alpine
http://mirrors.dotsrc.org/alpine
http://ftp.tsukuba.wide.ad.jp/Linux/alpine
http://mirror.rise.ph/alpine
http://mirror.neostrada.nl/alpine/
清华TUNA镜像源 //mirror.tuna.tsinghua.edu.cn/alpine/
中科大镜像源 //mirrors.ustc.edu.cn/alpine/
阿里云镜像源 //mirrors.aliyun.com/alpine/
添加镜像地址
/etc/apk/repositories
文件中加入对应源地址就行了 一行一个地址
$ vi /etc/apk/repositories
# /media/cdrom/apks
http://mirrors.ustc.edu.cn/alpine/v3.10/main
http://mirrors.ustc.edu.cn/alpine/v3.10/community
相关资源
Alpine 官网 http://alpinelinux.org/
Alpine 官方仓库 https://github.com/alpinelinux
Alpine 官方镜像 https://hub.docker.com/_/alpine/
Alpine 官方镜像仓库 //github.com/gliderlabs/docker-alpine
千年的回眸
daocloud for Docker toolbox
Windows 7通过Docker toolbox配置镜像加速
在docker toolbox执行下面的命令进入VM bash
dockrer-machine ssh default
执行下面的命令修改profile文件:
sudo vi /var/lib/boot2docker/profile
打开文件之后 敲下i (insert)进入插入模式 然后执行
在–label provider=virtualbox的下一行添加
可以选择下面列出的加速地址之一
--registry-mirror http://aad0405c.m.daocloud.io
--registry-mirror http://f1361db2.m.daocloud.io
添加完成之后
按一下ESC 进入命令模式
按下shift(按住不放)
然后按下冒号
界面最后一行出现冒号后
在冒号后面输入wq保存退出
常用的镜像加速地址
国内的保存镜像的仓库 很快
http://aad0405c.m.daocloud.io
https://registry.docker-cn.com
http://hub-mirror.c.163.com
https://3laho3y3.mirror.aliyuncs.com
http://f1361db2.m.daocloud.io
https://mirror.ccs.tencentyun.com
敲exit退出 重启dockert-machine
docker-machine restart default
检查是否完成
查找Registry Mirrors是否存在刚刚添加的地址http://f1361db2.m.daocloud.io
存在表示成功
docker info
测试是否加速成功 (感受一下飞快的速度!)
docker pull centos