Docker Architecture(docker体系结构)
- Docker daemon 守护进程
- containers:容器
- images:镜像
- Docker client
- Docker registries 镜像仓库
Docker Images
- Docker镜像含有启动容器所需要的文件系统及其内容,因此其用于创建并启动docker容器
- 采用分层构建机制,最底层为bootfs,其之为rootfs
- bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源。
- rootfs:位于bootfs上,表现为docker容器的根文件系统。docker中rootfs由内核挂载为“只读”模式,而后通过“联合挂载”技术额外挂载一个“可写”层。
安装docker
依赖环境
- 64 bits CPU
- Linux Kernel 3.10+
Docker Daemon
- systemctl start docker.service
Docker Client
- docker [OPTIONS] COMMAND [arg…]
1 | 1.下载yum源 |
配置文件
- docker-ce:
- 配置文件:/etc/docker/daemon.json ,docker启动之前不存在可自行定义创建,启动之前就自动生成。
1
2
3
4
5
6
7
8
9{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
# 阿里云镜像
{
"registry-mirrors": ["https://6ucotgoh.mirror.aliyuncs.com"]
}
# systemctl daemon-reload
# systemcctl start docker
- 配置文件:/etc/docker/daemon.json ,docker启动之前不存在可自行定义创建,启动之前就自动生成。
容器相关命令
- docker image pull nginx:1.14-alpine : 下载镜像
- docker run –name web1 -d nginx:1.14-alpine :运行容器
- docker inspect web1 :查看容器信息
- docker container stop b1:停止容器
- docker kill b1:强制关闭容器
- docker rm b1:删除容器
- docker rmi busybox:删除镜像
- docker ps -a:查看容器状态
- docker exec -it redis1 /bin/sh:交互式进入容器,并执行/bin/sh
- docker logs web1:查看容器日志
- docker inspect mysql5.7 -f { {.Mounts} } :查看容器指定key的键值
如果不能自动补全docker命令,安装yum install -y bash-completion,然后退出当前终端重新连接。
Registry(repository and index)
- Repository
- 由某特定的docker镜像的所有迭代版本组成的镜像仓库。
- 一个Registry中可以存多个Repository
- Repository可分为“顶层仓库”和“用户仓库”,用户仓库名称格式为“用户名/仓库名”
- 每个仓库可以包含多个Tag(标签),每个标签对应一个镜像。
- Index
- 维护用户账户、镜像的校验以及公共命名空间的信息。
- 相当于为Registry提供了一个完成用户认证等功能的检索接口。
Docker Hub
本地dckerfile变动发送到github,github推送到dockerhub自动构建为镜像。
- Image Repositories:镜像仓库
- Automated Builds:自动构建,dockerfile
- Webhooks:触发构建
- Oraganizations:组织,创建工作组
- GitHub and Bitbucket Integration:整合github、bitbucket
1 | # 下载镜像仓库指定镜像 |
镜像生成方式
- Dockerfile
- 基于容器制作
- Docker Hub automated builds
基于容器制作
1 | 1、运行一个容器 |
阿里云docker镜像仓库
1 | 1、控制台开通镜像仓库服务(设置仓库密码) |
镜像分享
- 镜像仓库:通过push到镜像仓库,需要镜像的再pull到服务器。
- 镜像打包:打包相关镜像,再scp到其他服务器。
1
2
3
4
5
6# 镜像打包
docker save -o myimages.gz key1024/test:v0.1 key1024/test:v0.2
# copy镜像
scp myimages.gz node02:/data
# load镜像
docker load -i myimages.gz