一、安装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 Hub

生成上传:

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

参考:

Centos7上安装docker - 风止雨歇 - 博客园

如何制作Docker镜像_longwentao1999的博客-CSDN博客_dockerfile制作镜像

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐