docker快速入门

为什么用docker,docker的好处

更高效的利用系统资源

不需要进行硬件虚拟以及运行完整操作系统等额外开销

更快速的启动时间

直接运行于宿主内核,无需启动完整的操作系统, 相比虚拟机更快启动

运行环境一致

不会再出现 「这段代码在我机器上没问题啊」 这类问题

持续交付和部署

开发人员通过 Dockerfile 来进行镜像构建, 可以结合 持续集成(Continuous Integration) 系统进行集成测试
运维人员在生产环境中快速部署该镜像,可以持续部署(Continuous Delivery/Deployment) 系统进行自动部署

平台迁移方便

docker 可以多平台运行, 保证我们的应用可以轻松迁移到其他平台

微服务

可以提供微服务

安装

(Redhat/Fedora/Centos)

设置yum源为阿里

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装 Docker Engine-Community

yum install docker-ce docker-ce-cli

安装后查看docker版本

 docker -v

启动docker

systemctl start docker

运行 hello-world检测

运行 hello-world映像来验证是否正确安装了 Docker Engine-Community

docker run hello-world

概念

镜像

可以类比操作系统镜像,本质是一个 root 文件系统
容器运行时所需的程序、库、资源、配置等文件
运行时准备的一些配置参数(如匿名卷、环境变量、用户等)
分层存储, 基于Union FS 技术, 方便复用和定制
在构建镜像的时,每一层尽量只包含该层需要添加的东西,在该层构建结束前清理掉所有额外的文件

容器

容器是镜像运行时的实体,可以被创建、启动、停止、删除、暂停
每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为 容器存储层
持久存储: 启动时候绑定 Volume

仓库

类比 npm registry, 官网 Registry: https://hub.docker.com
可以使用 Docker 官方提供的 Docker Registry 来部署私有 Registry

Docker 服务端

一个守护进程, 管理容器以及响应 Docker 客户端的请求

Docker 客户端

一个命令行工具, 用户通过它与 Docker 服务端交互, 来操纵和查看容器

Docker 仓库

类似于 Github 上的一个个项目一样
仓库下可以有很多镜像, 类似同一个 Git 项目的不同 Tag 一样, Docker 仓库下的不同镜像是靠 tag 来区分的

Docker 顶层仓库

顶层仓库是由 Docker 公司和选定的能提供优质基础镜像的厂商管理
用户通常基于这些基础镜像构建自己的镜像

命令

容器

创建

docker run
基于镜像创建新容器,并运行命令
使用
创建和启动容器, 并运行指定命令: docker run ubuntu ls
创建一个具有交互 Shell 的容器: docker run -it ubuntu bash
指定主机名: docker run -h mwumli ubuntu hostname
指定容器名: docker run –name mwumli ubuntu ls
自动重启容器, 最多 5 次: docker run –restart-on-failure:5 -d ubuntu command
容器退出后自动删除: docker run –rm ubuntu ls
设置工作目录
docker run -w /usr/local ubuntu pwd
后台运行一个容器: docker run -d ubuntu /bin/sh -c “while true; do echo hello,world!; sleep 1; done”
数据共享
容器和宿主机
docker run -v /host-dir:/container-dir -v container-dir ubuntu touch share.txt
容器之间
docker run -it –volumes-from container debian /bin/bash
link 互联
docker run –rm –link redis:db -it ubuntu bash

启动

docker start
启动一个已停止的容器

重新启动

docker restart
停止运行中的容器,然后重新启动

列举

docker ps
列出所有运行状态的容器
docker ps
列出所有容器
docker ps -a
列举所有已退出的容器ID
docker ps –filter=”status=exited” –format=”{{.ID}}”

停止

docker stop
本质是使用 docker kill 发送 SIGTERM 信号

暂停/取消暂停

docker pause
docker unpause

杀死

docker kill
默认发送 SIGKILL 信号,可以指定其他信号

删除

docker rm
删除所有已停止的容器: docker rm $(docker ps -a -q –filter=”status=exited”)

日志

docker logs

内部进程

docker top

运行新进程

docker exec

docker rundocker exec的区别可以参考 https://www.fffmo.com/1392.html#ftoc-heading-6

信息

docker inspect
获取实例日志路径: docker inspect –format='{{.LogPath}}’ $INSTANCE_ID
获取实例IP地址: docker inspect –format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ $INSTANCE_ID
获取实例镜像名: docker inspect –format='{{.Config.Image}}’ $INSTANCE_ID
列出端口映射
docker port

导出

docker export
将容器的文件系统保存为一个 tar 包

导入

docker import
将 docker export 导出的 tar 包导入为一个镜像

提交

docker commit

docker常用命令可以参考docker常用命令 docker快速上手

镜像

删除

docker rmi

列举

docker images

导出

docker save
保存一个或多个镜像到一个 tar 包

导入

docker load
导入一个 docker save 保存 tar 包, tar 包中包含的镜像就被还原到当前 docker 镜像列表

拉取

docker pull

推送

docker push

volume

docker volume

docker volume create
docker volume rm
docker volume prune
docker volume ls
docker volume inspect

network

docker network

docker network create
docker network rm
docker network ls
docker network connect
docker network disconnect
docker network prune

审查 docker 对象

docker inspect

镜像构建

docker commit

docker build

准备构建指令 Dockerfile

指定基础镜像: From ubuntu:14.04
触发器: ONBUILD [instruction]
设置元信息: LABEL author=MwumLi email=”mwumli@hotmail.com”
设置环境变量: ENV refreshed 2019-09-22
指定卷: VOLUME /opt/data
指定运行用户: USER partick
复制文件到镜像中: ADD 或 COPY
运行命令: RUN apt-get update
暴露端口: EXPOSE 80
设置工作目录: WORKDIR /tmp
设置入口点: ENTRYPOINT [“s3cmd”]
设置启动命令: CMD echo ‘docker setup’
忽略 .dockerignore
剔除不需要作为上下文传递给 Docker 引擎的. 加快构建速度
构建: 执行构建命令
基于构建缓存可以加快重新构建镜像速度

私有 Registry

docker pull/push 需要在镜像 tag 前指定私有 registry 地址, 因此需要使用 docker tag 命令对镜像标签进行重新标记

Docker 远程 API

通过调用 docker 远程 API 可以开发一些基于 docker 的自定义应用,比如 docker web 终端

多 CPU 架构支持

延伸阅读:docker容器生态系统 技术栈

赞(1) 打赏
特别声明:除特殊标注,本站文章均为原创,遵循CC BY-NC 3.0,转载请注明出处。三伏磨 » docker快速入门

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏