前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文了解Docker

一文了解Docker

作者头像
终身幼稚园
发布2020-05-18 18:07:41
5500
发布2020-05-18 18:07:41
举报
文章被收录于专栏:终身幼稚园终身幼稚园

一、前言

本文将介绍docker的基本概念,并通过在linux下安装Docker环境以及快速搭建一个测试环境为你演示一些常见操作和命令。

二、初识docker

2.1、什么是容器

官方解释:开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口 通俗解释: 容器就像存放东西的独立空间,例如一个盒子,你可以往里面放置你需要的东西,可以将盒子移放到任何你想要的地方,但它又和现实世界不同,它的移放相当于复制一份,原来的还是会存在的。

2.2、Docker的基本结构

从图中我们可以知道Docker是一个client-server的结构

1)客户端(client): 通过命令行与Docker的守护进程通信,类似于mysql的客户端工具

2)主机(Hosts): 一个称为docker daemon的守护进程,可以理解为MySQL的服务。它监听着客户端的请求,对Docker的镜像、容器进行管理。

3)仓库(Registry): Docker仓库用来集中保存镜像的地方,可以理解为代码控制中的代码仓库。就像PHP中的composer,远程维护着各种类,本地项目需要的时只需要执行相关命令就能获取所需的类。

4)镜像(Image): 用于创建 Docker 容器的模板。是一种轻量级的、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件。它包含运行某个软件所需要的所有的内容,包括代码、运行时、库、环境变量、配置文件等。例如我们想搭建一个lnmp(linux+nginx+mysql+php)web环境。我们就可以根据相应的镜像将它们组合打包成一个整体。任何镜像的创建会基于其他的父镜像,也就是说镜像是一层套一层,比如一个Nginx镜像,需要运行在CentOS/Ubuntu上,那我们的Nginx镜像就会基于CentOS/Ubuntu镜像创建。

5) 容器(Container): 是独立运行的一个或一组应用。可以通过Docker命令启动、开始、停止、删除。容器间相互隔离互不影响,但容器也是可以相互连接的。这里顺带说说容器跟镜像之间的关系,容器是镜像创建出来的,我们可以用代码中的类与实例去类比它们,镜像相当于类,而容器就是类的实例。

三、Linux下Docker CE(社区版)的安装

3.1、前提要求

Docker CE 支持以下版本的 Ubuntu 操作系统(需要 16.04 及以上版本): Cosmic 18.10 Bionic 18.04 (LTS) Xenial 16.04 (LTS) Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker。

查看操作系统版本

代码语言:javascript
复制
root@ubuntu:/home# lsb_release -a

查看系统内核

代码语言:javascript
复制
root@ubuntu:/home# uname -r

3.2、卸载旧版本

旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本(17版本以前):

代码语言:javascript
复制
$ sudo apt-get remove docker docker-engine docker.io

3.3、安装Docker CE

Docker自17.03版本开始分为两个版本Docker CE和Docker EE: Docker CE:Docker Community Edition,即Docker社区版 Docker EE:即Docker Enterprise Edition,即Docker企业版。

1)更新apt包

代码语言:javascript
复制
$ sudo apt-get update

2)apt源使用HTPPS传输

代码语言:javascript
复制
$ sudo apt-get install  apt-transport-https  ca-certificates curl gnupg-agent tware-properties-common

3)添加软件源的 GPG 密钥。(使用国内源,下载)

代码语言:javascript
复制
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

需要向 source.list 中添加 Docker 软件源

代码语言:javascript
复制
$ sudo add-apt-repository \
         "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
         $(lsb_release -cs) \
     stable"

更新 apt 软件包缓存,并安装 docker-ce:

代码语言:javascript
复制
$ sudo apt-get update
$ sudo apt-get install docker-ce

4)启动 Docker CE

代码语言:javascript
复制
$ sudo systemctl enable docker
$ sudo systemctl start docker

5)测试 Docker 是否安装正确

代码语言:javascript
复制
$ docker run hello-world

3.4、卸载Docker CE

卸载Docker的命令如下:

# 卸载Docker CE

代码语言:javascript
复制
sudo apt-get purge docker-ce

# 卸载Docker EE

代码语言:javascript
复制
sudo apt-get purge docker-ee

# 删除Docker镜像、容器、数据卷等文件

代码语言:javascript
复制
sudo rm -rf /var/lib/docker

四、Docker 安装 redis

4.1、镜像加速

Docker 默认是从官方镜像地址 Docker Hub 下下载镜像,由于服务器在国外的缘故,导致经常下载速度非常慢。为了提升镜像的下载速度,我们可以手动配置国内镜像加速器,让下载速度飚起来。

确认Docker客户端版本,推荐是 1.10.0+:

代码语言:javascript
复制
$ docker version

通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

代码语言:javascript
复制
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://507zhfjf.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

4.2、下载 Redis 镜像

首先拉取 Redis 镜像, 这里我选择的是 redis:alpine 轻量级镜像版本:

代码语言:javascript
复制
$ docker pull redis:alpine

查看镜像是否拉取成功

代码语言:javascript
复制
$ docker images

运行Redis容器

代码语言:javascript
复制
docker run -p 6378:6379 --name redis -v /home/docker/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data -d redis:alpine redis-server /etc/redis/redis.conf --appendonly yes

命令说明: --name redis :为容器指定一个名称 --p 6378 : 6379: 宿主主机的 6378 端口:容器的 6379 端口; -v /home/docker/redis/data:/data:将容器中的 /data 数据存储目录,挂载到宿主机中 /home/redis/data 目录下; -v /home/docker/redis/redis.conf:/etc/redis/redis.conf:将容器中 /etc/redis/redis.conf 配置文件,挂载到宿主机的 /home/docker/redis/redis.conf 文件上; -d: 后台运行容器,并返回容器ID; redis-server --appendonly yes:在容器执行 redis-server 启动命令,并打开 Redis 持久化配置。

查看运行的容器

代码语言:javascript
复制
$ docker ps
$ docker ps -a #查看所有包括停止的容器

连接刚刚创建的容器

代码语言:javascript
复制
$ docker inspect --format='{{.Name}} - {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)  #可以查看所有容器的ip

$ docker run -it redis:alpine redis-cli -h 172.17.0.2

4.3Docker容器的基本命令

  • 列表 docker ps(查看运行中的容器);
  • 启动 docker start container-name/container-id
  • 停止 docker stop container-name/container-id
  • 删除 docker rm container-id
  • 容器日志 docker logs container-name/container-id

参考

  • Docker文档:install Docker CE(https://docs.docker.com/install/linux/docker-ce/ubuntu/)
  • 一文教你如何通过 Docker 快速搭建各种测试环境(http://dockone.io/article/9120)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 终身幼稚园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、初识docker
  • 三、Linux下Docker CE(社区版)的安装
  • 四、Docker 安装 redis
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档