docker安装及镜像制作
一、安装docker1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过uname -r命令查看你当前的内核版本$ uname -r2、使用root权限登录 Centos。确保 yum 包更新到最新。$ sudo yum update3、卸载旧版本(如果安装过旧版本...
一、安装docker
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
uname -r
2、使用 root
权限登录 Centos。确保 yum 包更新到最新。
yum update
3、卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
7、安装docker
yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
yum install -y <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
8、启动并加入开机启动
systemctl start docker
systemctl enable docker
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
二、问题
1、因为之前已经安装过旧版本的docker,在安装的时候报错如下:
Transaction check error:
file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
2、卸载旧版本的包
$ sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
3、再次安装docker
$ sudo yum install docker-ce
三、制作镜像:
我们知道,要创建一个Docker容器,要先有Docker镜像,Docker镜像怎么创建的呢,一般有两种创建方式:
1. 根据基础镜像,生成新镜像
2. 使用Dockerfile生成镜像
在制作镜像之前,先看下怎么查找镜像
列出所有在主机上的镜像
docker images列出所有镜像
我主机上有两个镜像centos和ubuntu,我们在镜像列表中看到三个至关重要的东西。
- 镜像源,例如 ubuntu
- 镜像的标签(tags),例如 latest
- 镜像ID,每个镜像都有镜像ID
从DockerHub中查找镜像
DockerHub是远程镜像仓库,保存种各样的镜像,可以从DockerHub官网上搜索你想要的镜像
也可以在本机使用docker search 查找 DockerHub上的镜像
知道镜像的查找方式后,下来我们开始制作镜像
1. 根据基础镜像,生成新镜像
这种方式首先需要有一个基础镜像,可以通过docker pull命令,从DockerHub中先下载一个镜像,作为我们的基础镜像
下载时,如果没有指定tag,默认latest,使用docker images查看发现centos镜像已经下载下来了
下面开始基于镜像运行一个容器,修改容器内容,重新Commit生成新镜像
这里容器ID(9dc737402a4d)已经生成,并已进入到容器中,在运行的容器内创建一个text.txt的文件,然后exit退出容器
使用docker commit生成新镜像
这里我们指定了两个标识(flags) -m 和 -a 。-m 标识我们指定提交的信息,就像你提交一个版本控制。-a 标识允许对我们的更新来指定一个作者,最后用docker images查看镜像发现新镜像已经生成了
验证:
运行新镜像生成容器,到容器中查看是否存在刚才创建的text.txt文件
经验证后发现,在新生成的容器中,存在有刚创建的text.txt文件,说明新镜像已经生效
2. 使用Dockerfile生成镜像
使用 docker commit 命令能够能快速的创建一个新镜像,但是有点麻烦,并且在一个团队中也不能够轻易的共享它的开发过程。因此我们使用一个新的命令 docker build , 从零开始来创建一个新的镜像。我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
现在创建一个 Dockerfile,内容如下:
# This is a comment
FROM ubuntu:latest
MAINTAINER longwentao <longwentao@126.com>
RUN apt-get update && apt-get install -y ruby ruby-dev
RUN gem install sinatra
第一个指令 FROM 是告诉 Docker 使用的哪个镜像源,这里我们使用的是 Ubuntu:latest 基础镜像。
下一步,我们使用 MAINTAINER 指令来指定谁在维护这个新镜像。
最后,我们指定了两个 RUN 指令。 RUN 指令在镜像内执行一条命令,例如:安装一个包。这里我们更新了 APT 的缓存,并且安装 Ruby 和 RubyGems ,然后使用 gem 安装 Sinatra镜像
现在,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像
我们使用 docker build 命令并指定 -t 标识(flag)来标示属于 longwentao,镜像名称为 sinatra,标签是 v2。
docker build -t trwebocr:latest .
如果 Dockerfile 在我们当前目录下,我们可以使用 . 来指定 Dockerfile
我们可以看到构建过程,Docker 做的第一件事是通过上下文进行构建,基本上是目录的内容构建。这样做是因为 Docker 进程构建镜像是实时构建的,并且是需要本地的上下文来做这些工作的。(这里上下文是指Context)
下一步,Dockerfile 中的每一条命令都一步一步的被执行。我们会看到每一步都会创建一个新的容器,在容器内部运行指令并且提交更改,就像docker commit 一样。当所有的指令执行完成之后,我们会得到97feabe5d2ed 镜像,然后所有中间容器会被清除。
四、镜像上传下载:
首先需要注册自己的账号:
生成上传:
docker commit -a ="mayunkun" -m="test" 718d234d16e2 centos:java
docker tag centos:java yunkun666/images:java
docker push yunkun666/images:java
下载:
docker pull yunkun666/images:java
可使用以下命令查看:
docker images
删除镜像命令:
docker rmi [镜像ID] 例如:docker rmi 6bc91abfb263
或者:
docker rmi yunkun666/images:java
运行容器查看停止删除
docker ps -a
docker stop [容器ID]
docker start [容器ID]
docker rm [容器ID]
镜像手动上传
docker save aeert/test:latest -o test.tar
docker load -i test.tar
参考:
更多推荐
所有评论(0)