四时宝库

程序员的知识宝库

学会使用docker,通俗易懂教你了解docker容器原理

如果有一种技术,能让你把以前非常繁琐的下载、解压、编译、安装等步骤变得非常简单你会使用吗?我记得我刚刚接触Linux的时候,最让我头疼的就是软件安装,因为每次安装一些特定软件,我都要去解决它依赖包和库文件相关的问题,而且换一个环境,我需要把所有步骤都重新操作一遍,会做很多重复的工作。而我今天给大家分享的这款docker容器技术,就帮助我们解决了这些问题。

Docker 是在2013年发布的一款开源的应用容器引擎,是用Go 语言编写的。源代码托管在Github,我刚刚学习docker我就被它简洁而又强大的容器技术深深吸引了,因此为了阅读docker源码我还特意去学了go语言。Docker 公司起初是一家名为 dotCloud 服务提供商,2013年,dotCloud 的 PaaS 业务并不景气,公司为了寻找新的突破,于是将公司重命名为“Docker”,放弃dotCloud PaaS 平台,怀揣着“将 Docker 和容器技术推向全世界”的使命,开启了一段新的征程。

为什么要使用docker

假设用传统方式安装一个es,我们需要先去官网下载、解压、创建用户、修改配置文件和内核参数、启动等步骤,都需要你自己去做,也就是说你需要非常熟悉es安装流程要不然你是无法成功启动es服务。

而你使用docker容器技术以后,你只需要使用docker pull 命令指定你要安装es版本,然后使用docker run命令运行容器即可,如果你觉得执行两个步骤比较麻烦那你还可以直接使用docker run命令在运行的时候自动拉取镜像,这样我们就可以使用一条命令完成es安装,极大简化了安装步骤,这样一来我们安装的所有软件都不需要考虑操作系统兼容性问题了,而且你运行的所有服务都是docker容器管理的,也方便我们管理维护。每个服务之间都是相互独立的也就不存在配置文件冲突等问题。

docker运行原理

1.镜像构建

首先我们需要有一个docker镜像文件,比如我们要运行es就下载es镜像,如果运行redis只需要下载redis镜像,这个镜像文件通常是软件开发团队给我们提供好的,一般不需要我们自己制作,我们只需要下载使用即可,其实我们使用的docker镜像就是一个精简版的操作系统,底层就官方开发团队把所有繁琐复杂的流程都编写成了脚本文件,然后把这些脚本文件都封装打包到了这个操作系统,当我们使用构建命令的时候其实就就调用这些脚本文件执行以前我们手动执行的步骤,你可以理解为构建就相当于是传统方式软件安装步骤。


2.镜像拉取

比如我们需要拉取es镜像,你可以理解为我们就是把es官方团队安装打包好的一个es运行环境下载到你到你的docker容器中。

2.创建容器

当我们有了docker镜像以后我们就可以使用docker run命令运行容器,使用docker run命令的时候,docker就会帮我们去调用我们在构建镜像的时候封装好的启动脚本。

docker常用命令

查看docker版本

docker info

docker version

查看docker里面每个容器运行的资源消耗

docker stats

查看自己服务器中docker 镜像列表

docker images

查看docker中正在运行的容器

参数说明

-a :显示docker中运行的所有容器包含已退出的

docker ps 

拉取镜像

docker pull ${镜像名称}

docker pull ${镜像名称}:${标签}

例如:

docker pull zookeeper

docker pull wurstmeister/kafka

创建通信网络

docker network create ${网络名称}

查看网络

docker network ls
docker network inspect kafka_zk_net

创建容器

参数说明:

-i: 交互式操作。

-t: 终端。

ubuntu: ubuntu 镜像。

/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

-p 容器端口

-v 挂载卷 ,把容器数据挂着出来防止容器删除数据丢失

docker run --net=kafka_zk_net --name zookeeper -p 21810:2181 -d docker.io/zookeeper 

进入容器

docker exec -it ${容器id} /bin/bash

查看容器运行日志

docker logs -f ${容器id}

删除容器

docker rm -f ${容器id}

删除镜像

当前镜像没有被任何容器使用才可以删除

docker rmi -f ${容器id}

删除全部镜像

-a 意思为显示全部, -q 意思为只显示ID

docker rmi -f $(docker images -aq)


docker镜像导出

docker save 0fdf2b4c26d3 > redis.tar

docker镜像导入

docker load < aa.tar


登录docker镜像仓库

docker login

将本地镜像推送至远程 docker hub 仓库

由于推送到私有镜像仓库的镜像名必须符合“仓库IP:端口号/repository”的形式,因此需要按照要求修改镜像名称,具体操作指令如下

docker tag ubuntu:18.04 hub.xxx.com/common/ubuntu:18.04

推送镜像。要推送的本地镜像准备就绪后,就可以将其推送到私有镜像仓库了,具体操作指令如下:

docker push hub.xxx.com/common/ubuntu:18.04

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接