一、基本概念
镜像:类似面向对象中的类,相当于一个模板。
容器:基于类创建的实例,就是依据镜像这个模板创建出来的实体
仓库:就好像软件包上传下载站,有各种软件的不同版本被上传供用户下载。
Docker版本:
Docker 划分为CE 和EE。CE 即社区版,EE 即企业版,强调安全,付费使用。
分层存储:
镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。
任何额外的东西应该在该层构建结束前清理掉。
二、安装部署
Docker 要求 CentOS 系统的内核版本高于 3.10 ,安装前先验证你的CentOS 版本是否支持 Docker 。
(曾用CentOS系统内核2.6.32安装Docker的血泪史,感兴趣可查看我另一篇WIKI分享:Centos 6.5安装Docker容器问题汇总)
- uname -r 命令查看你当前的内核版本。
- 执行sudo yum update,确保 yum 包更新到最新。
- 卸载旧版本:sudo yum remove docker docker-common docker-selinux docker-engine。
- 安装需要的软件包:sudo yum install -y yum-utils device-mapper-persistent-data lvm2。
- 设置yum源:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo。
- 查看所有仓库中所有docker版本,并选择特定版本安装:yum list docker-ce --showduplicates | sort -r。
- 安装docker:sudo yum install docker-ce。
- 启动并加入开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker - 验证安装是否成功:docker version
三、使用Docker
- 启动一次操作容器:docker run IMAGE_NAME [COMMAND] [ARG…]
一次操作容器在处理完操作后会立即关闭容器,例:docker run -i -t ubuntu /bin/bash
- 启动交互式容器:docker run -t -i –name=自定义名称 IMAGE_NAME /bin/bash
操作完一个命令后仍然可以继续,例:docker run -i -t ubuntu /bin/bash
- 查看容器:docker ps [-a] [-l]
列出正在运行的容器,例:docker ps
- 查看指定容器:docker inspect name | id
name指代具体的容器名称,id则是容器的唯一id标识,例:docker inspect haha
- 重新启动停止的容器:docker start [-i] 容器名
重新启动之前创建的容器,例:docker start -i haha
- 删除停止的容器:docker rm name | id
删除无效容器,例:docker rm haha
四、守护式容器
- 特点
- 能够长期运行。
- 没有交互式会话。
- 适合于运行应用程序和服务。
- 启动守护式容器
启动守护式容器,可以在后台为我们执行操作:docker run -d IMAGE_NAME [COMMAND] [ARG…]
例:docker run --name hiahia -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
- 查看容器日志
当守护式容器在后台运行时,我们可以利用docker的日志命令查看其输出:docker logs [-f] [-t] [–tail] IMAGE_NAME
- 查看容器内进程
对运行的容器查看其进程:docker top IMAGE_NAME
- 运行中容器启动新进程
Docker的理念是一个容器运行一个服务,但是往往需要对一个服务进行监控,所以也需要在已经运行服务的容器启动新的进程:docker exec [-d] [-i] [-t] IMAGE_NAME [COMMAND] [ARG…]
例:docker exec -i -t hiahia /bin/bash
- 停止守护式容器
发送信号停止容器:docker stop 容器名
强制停止:docker kill 容器名
五、镜像基本操作
- 列出镜像:docker images [OPTIONS] [REPOSITORY]
- 查看镜像:docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE]
- 删除镜像:docker rmi [OPTIONS] IMAGE [IMAGE]
- 查找镜像:docker search [OPTIONS] TEAM
- 拉取镜像:docker pull [OPTIONS] NAME [:TAG]
- 推送镜像:docker push NAME [:TAG]
Docker允许上传我们自己构建的镜像,需要注册DockerHub的账户。
- 构建镜像
构建Docker镜像,可以保存对容器的修改,并且再次使用。构建镜像提供了自定义镜像的能力,以软件的形式打包并分发服务及其运行环境。Docker中提供了两种方式来构建镜像:
1. 通过容器构建:docker commit
2. 通过Dockerfile:docker build
- 使用commit命令构建镜像
命令:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
参数:-a,–author=“”,指定镜像的作者信息
-m,–message=“”,提交信息
-p,–pause=true,commit时是否暂停容器
- 使用Dockerfile文件构建镜像 命令:docker build [OPTIONS] DockerFile_PATH | URL | -
参数:–force-rm=false
–no-cache=false
–pull=false
-q,quite=false,构建时不输出信息
–rm=true
-t,tag=“”,指定输出的镜像名称信息
六、镜像迁移
我们制作好的镜像,一般会迁移或分享给其他需要的人。Docker提供了几种将我们的镜像迁移、分享给其他人的方式。推荐镜像迁移应该直接使用Docker Registry,无论是直接使用Docker Hub还是使用内网私有Registry都可以。
- 两种迁移方式
- 上传Docker Hub
- 首先,需要在Docker Hub上申请注册一个帐号(人机验证时需要科学上网)。然后我们需要创建仓库,指定仓库名称。
- 在终端中登录你的Docker Hub账户,输入docker login,输入用户名密码即可登录成功。
- 查看需要上传的镜像,并将选择的镜像打上标签,同一镜像可以拥有不同的标签名,标签名需和Docker Hub上新建的仓库名称一致,否则上传失败。
- 利用push命令直接上传镜像
-
导出文件互传
-
Docker 还提供了 docker load 和 docker save 命令,用以将镜像保存为一个tar文件。比如这次我们将ubuntu:latest这个镜像保存为tar文件。
-
查看本地磁盘,即可看见名为ubuntu18.04的tar包。我们可以将其拷贝给其他PC,利用load命令重新导入
-
- 上传Docker Hub
七、使用模式