了解了Docker的作用之后,不是很能体会Docker的实际作用。先结合小例子实战一下,才会对Docker容器的真正的理解(主要是和之前运维的工作方式做对比),最后就是将之前goWeb项目部署体会一下。
1.Docker的安装(Centos版本)
1.使用yum安装
执行以下命令安装依赖包:
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
鉴于国内网络问题,强烈建议使用国内源,官网源请在注释中查看。
执行下面的命令添加yum
软件源:
$ sudo yum-config-manager \
--add-repo \
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 官方源
# $ sudo yum-config-manager \
# --add-repo \
# https://download.docker.com/linux/centos/docker-ce.repo
2.安装Docker CE
Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition
,缩写为 CE)和企业版(Enterprise Edition
,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面的介绍都针对社区版。更新yum
软件源缓存,并安装docker-ce
。
$ sudo yum makecache fast
$ sudo yum install docker-ce
3.验证是否安装成功
安装完成后,运行下面的命令,验证是否安装成功。
$ docker version
# 或者
$ docker info
4.配置Docker服务
Docker需要用户具有sudo
权限,为了避免每次命令都输入sudo
,可以把用户加入Docker用户组(官方文档)。
sudo usermod -aG docker $USER
Docker 是服务器----客户端架构。命令行运行docker
命令的时候,需要本机有 Docker 服务。如果这项服务没有启动,可以用下面的命令启动(官方文档)。(如上图所示,Docker daemon
没有启动)。
sudo systemctl start docker.service
2.Docker项目实例
下面,我们通过最简单的 image 文件"hello world",感受一下 Docker。
需要说明的是,国内连接 Docker 的官方仓库很慢,还会断线,需要将默认仓库改成国内的镜像网站,具体的修改方法在下一篇文章的第一节。有需要的朋友,可以先看一下。首先,运行下面的命令,将image
文件从仓库抓取到本地。
$ docker image pull library/hello-world
上面代码中,docker image pull
是抓取 image 文件的命令。library/hello-world
是 image 文件在仓库里面的位置,其中library
是 image 文件所在的组,hello-world
是 image 文件的名字。
由于 Docker 官方提供的 image 文件,都放在library
组里面,所以它的是默认组,可以省略。因此,上面的命令可以写成下面这样。
$ docker image pull hello-world
抓取成功以后,就可以在本机看到这个image文件了。
$ docker image ls
现在,运行这个image文件。
$ docker container run hello-world
docker container run
命令会从image
文件,生成一个正在运行的容器实例。
注意,docker container run
命令具有自动抓取 image 文件的功能。如果发现本地没有指定的 image 文件,就会从仓库自动抓取。因此,前面的docker image pull
命令并不是必需的步骤。
如果运行成功,你会在屏幕上读到下面的输出。
出现这段提示以后,hello world
就会停止运行,容器自动终止。(还可以看看Docker容器运行的步骤)。
3.使用Docker镜像
Docker运行容器前需要本地存在对应的镜像,如果镜像没保存在本地,Docker会尝试先从默认镜像仓库下载(默认使用Docker Hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。
1.获取镜像
镜像是运行容器的前提。可以直接使用docker pull命令直接从Docker Hub镜像源来下载镜像。
docker pull Name[:Tag]
其中,Name是镜像仓库的名称(用来区分镜像),Tag是镜像标签(往往用来表示版本的信息)。通常情况下,描述一个镜像需要包括“名称+标签”信息。
2.查看镜像
使用docker image
命令可以列出本地主机上已有镜像的基本信息。
在列出的信息中,可以看出一下几个字段信息。
-
REPOSITORY
:来自哪个仓库; -
TAG
:镜像的标签信息; -
IMAGE ID
:镜像的ID; -
CREATED
:创建的时间; -
SIZE
:镜像大小,优秀的镜像往往体积都比较小。
其中镜像的ID信息十分重要,它唯一标识了镜像。在使用镜像ID的时候,一般可以使用该ID的前若干个字符组成的区分串替代完整的ID。
使用tag命令添加镜像标签
docker tag hello-world:latest myhello-world:latest
使用inspect命令查看详细信息
使用docker inspect
命令可以获取该镜像的详细信息,包括制作者、适应架构、各层的数字摘要等
使用history命令查看镜像历史
既然镜像文件由多个层组成,那么怎么知道各个层的内容具体是什么呢?这时候可以使用history子命令,该命令将列出各层的创建信息。
3.搜索镜像
使用docker search
命令可以搜索远端仓库中共享的镜像,默认搜索官方仓库中的镜像。
docker search
--automated=true|false:仅显示自动创建的镜像,默认为否
--no-trunc=true|false:输出信息不截断显示,默认为否
-s,--stars=X:指定仅显示评价为指定星级以上的镜像,默认为0,即输出所有的镜像。
4.删除镜像
使用docker rmi
命令可以删除镜像,命令格式为:
docker rmi IMAGE[IMAGE...]
#其中IMAGE可以为标签或ID
当同一个镜像拥有多个标签的时候,
docker rmi
命令指示删除该镜像多个标签中中的指定标签而已,并不影响镜像文件。
5.创建镜像
创建镜像的方法主要有三种:
1、基于已有镜像容器创建;
该方法使用是使用docker commit命令。命令格式为:
docker commit [OPTIONS] CONTAINER [REPOSITORY [:TAG]]
-a,--author="":作者信息
-c,--change=[]:提交的时候执行Dockerfile指令
-m,--message="":提交信息
-p,pause=true:提交时暂停容器运行
2、基于本地模板导入;
用户也可以直接从一个操作系统模板文件导入另一镜像,主要使用docker import命令。格式如下:
docker import [OPTIONS] file|URL -[REPOSITORY [:TAG]]
3、基于Dockerfile
创建。
下一个博客再讲。
6.存入和载入镜像
用户可以使用docker save
和docker load
命令来存出和载入镜像。
7.上传镜像
可以使用docker push
命令上传镜像到仓库,默认上传到Docker Hub官方仓库。命令格式为:
docker push Name[:Tag] |[REGISTRY_HOST [:REGISTRY_PORT]/]NAME [:TAG]
参考资料
https://yeasy.gitbooks.io/docker_practice/install/centos.html
http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
https://docs.docker.com/install/linux/docker-ce/centos/#install-using-the-repository