1、docker基础及安装,镜像操作
docker基础 docker architecture: docker client:docker build、docker pull、docker run docker_host:docker deamon:containers+images docker registry: docker objects: images、containers、networks、volumes、plugins 镜像:静态的 容器:动态,生命周期 1、docker安装和使用 1、Centos Extras Repo 2、Docker-CE 下载:https://download.docker.com 仓库配置文件:https://download.docker.com/linux/centos/docker-ce.repo 使用docker-ce版本:repo安装 wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo [docker-ce-stable] name=Docker CE Stable - $basearch baseurl=https://download.docker.com/linux/centos/7/$basearch/stable enabled=1 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg 将文件docker-ce.repo中"https://download.docker.com"的修改为https://mirrors.tuna. .edu.cn/docker-ce # yun install docker-ce # vi /etc/docker/deamon.json { "registry-mirrors": ["https://registry.docker-cn.com"] } # systemctl start docker.service Dcoker组件: docker程序环境: 环境配置文件: /etc/sysconfig/docker-network /etc/sysconfig/docker-storage /etc/sysconfig/docker Unit File: /usr/lib/systemd/system/docker.service Docker Registry配置文件: /etc/containers/registries.conf Docker-ce: 配置文件:/etc/docker/deamon.json vi /etc/docker/deamon.json { "registry-mirrors": ["https://registry.docker-cn.com"] } 注册阿里云账号,专用加速器获取地址: https://cr.console.aliyun.com/#/accelerator Docker镜像加速: docker cn 阿里云加速器 中国科技大学 { "registry-mirrors": ["https://registry.docker-cn.com"] } docker常用命令: docker version:查看docker版本 docker info:查看docker详细信息 docker search:搜索镜像 docker pull 镜像名:拉取镜像到本地 docker images:列出镜像 docker image ls/docker image ls --no-trunc [镜像名]:查看镜像详细信息 docker create: create a new container docker start 容器名:启动容器 docker run 容器名:直接创建容器并运行 docker attach:attach to a running container docker ps:docker container ls:列出所有已经运行的容器 docker ps -a:列出所有的容器 docker logs 容器名:在外部查看容器的日志 docker restart: docker stop: docker kill 容器名:强制停止 docker rm:删除(已经停止的)容器 docker rmi [镜像名]/docker image rm [镜像名]:删除镜像 docker pause 容器名:暂停容器 docker unpause 容器名: # docker run --name 容器名 -it busybox:latest ---创建运行并进入容器 # docker inspect 容器名 ---查看该容器的详细信息 # docker start -i -a 容器名 ---启动并进入容器 # docker run --name nginx1 -d nginx:1.14-alpine ---若镜像nginx:1.14-alpine不存在,会自动拉取到本地;-d表示在后台运行 # docker run --name rediskvstor -d redis:4-alpine # docker exec -it 容器名 /bin/sh 2、docker images镜像 2.1 docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动docker容器。 采用分层构建机制,最底层为bootfs,其次为rootfs: bootfs:用于系统引导的文件系统,包括bootloader和kernerl,容器启动完成后会被卸载以节约内存资源; rootfs:位于bootfs之上,表现为docker容器的根文件系统; 传统模式中,系统启动时,内核挂在rootfs时首先会将其挂载为“只读”模式,完整性自检完成后将其重新挂在为读写模式; docker中,rootfs由内核挂载为“只读”模式,而后通过“联合挂载”技术额外挂载一个“可写”层。 2.2 docker image layer 位于下层的镜像称为父镜像(partent image),最底层的称为基础镜像; 最上层为“可读写”层,其下的均为“只读”层; 2.3 aufs advanced mult-layered unification filesystem:高级多层统一文件系统; 用于linux文件系统实现联合挂载; docker最初是由aufs作为容器文件系统层;另还有overlayfs,从3.18版本开始合并到Linux内核; docker的分层镜像除了aufs,还支持btrfs、devicemapper和vfs等; 在Ubuntu系统,docker默认为aufs;在centos上,用的是devicemapper; devicemapper: 是Linux2.6内核中支持逻辑卷管理的通用设备映射机制,为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构 overlayfs:(overlay2) docker image layer: 位于下层的镜像成为父镜像(parent image),最底层的成为基础镜像(base image), 最上层为“可读写”层,其下均为“只读”层 (kernel)bootfs -->base image(centos) -->image1(nginx1)--> image2(redis)--> container(writable) 2.4 docker registry 启动容器时,docker deamon 会试图从本地获取相关镜像;本地镜像不存在时,将从registry中下载该镜像并保存到本地; docker registry分类: registry用于保存docker镜像,包括镜像的层次结构和原数据; 可自建registry,或使用官方的docker hub; 分类: sponsor registry :第三方的registry,供客户和docker社区使用; mirror registry:第三方的registry,只让客户使用; vendor registry:由发布docker镜像的供应商提供的registry; private registry:通过设有防火墙和额外的安全层的私有实体提供的registry; repository: 由某特定的docker镜像的所有的迭代版本组成的镜像仓库; 一个registry中可以存在多个repository:repository可分为“顶级仓库”和”用户仓库“;用户仓库命名格式为“用户名/仓库名”;每个仓库可以包含多个tag(标签),每个标签对应一个镜像; index: 维护用户账号、镜像的校验以及公共命名空间信息;相当于为registry提供了一个完成用户认证等功能的检索接口; # docker pull <registry>[<:port>/[<namespace>/]<name>:<tag> # docker pull quay.io/coreos/flannel:v0.10.0-amb64 3、镜像的相关操作 3.1 镜像的生成途径: dockerfile;基于容器制作;docker hub automated builds 基于容器制作镜像: # docker commit --help options: -p:制作镜像时暂停容器 -a: --author string eg:-a "mageedu <mageeud.com>" -c: --change list :apply dockerfile instruction to the created image # docker commit [options] container [repository[:tag]] # docker commit -p web1 3.2 为镜像设置标签: # docker image ls ---查看刚制作的镜像,没打标签 # docker tag source_image[:tag] target_image[:tag] ---打标签 # docker tag 38baa835d452 mageedu/httpd:v0.1 # docker tag mageedu/httpd:v0.1 mageedu/httpd:latest ---重新打标签 3.3 推送镜像到docker hub: 将镜像推送到docker hub的前提是要有docker hub账号,且镜像的标签格式为:“$docker_user_id/image_name" 若要先登录: # docker log -u username -p passwd # docker push image_name[:tag] 3.4 镜像导入导出: docker save:镜像导出 docker save [options] image_name1 image_name2 ... options: -o --output string # docker save -o myimage.gz image1 image2 docker load: # docker load [options] options: -i --input string -q --quiet # docker load -i myimage.gz