自勉,持续学习,docker入门

简介

记住重要的几点:

  1. Docker 是一个开源的应用容器引擎
  2. 诞生于 2013 年初,基于 Go 语言实现
  3. 独特的容器技术,避免了不同环境下的部署问题。
  4. 容器是完全使用沙箱机制,相互隔离
  5. 容器性能开销极低

一、 docker 的基本架构

在这里插入图片描述

  • 镜像(Image): Docker 镜像(Image),就相当于是 一个 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Contain er)的关系,就像是面向对象程序设计中的类和对象一 样,镜像是静态的定义,容器是镜像运行时的实例,我们可以把镜像理解成模板,而容器是一个个的复制品。一个镜像可以创建多个容器,每个容器的环境也是独立而统一的。
  • 仓库(Repository):仓库可看成一个代码控制中心, 用来保存镜像,可以类比成 Maven 仓库。

二、安装 docker

Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上,本演示我们基于CentOS 7 安装
Docker。
官网:https://www.docker.com

# 1、yum 包更新到最新 
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y 
yum install -y docker-ce

# *************** 以上操作,在镜像中都已经安装完成!****************************8
# 5、 查看docker版本,验证是否验证成功
docker -v

至此,我们 docker 就安装好勒, 我们可以学习一下 docker 的命令:

# 启动 docker 服务
systemctl start docker # systemctl 是 system ctrl 缩写
# 停止 docker 服务
systemctl stop docker
# 查看docker服务状态
systemctl status docker
# 开机启动docker服务
systemctl enable docker

三、 image 镜像

下载 Image 需要配置 Image 仓地址,采用默认仓下载速度较慢,这里我们采用阿里云的 Image 仓地址下载。

  1. 登陆阿里云账号,https://www.aliyun.com/
  2. 搜索栏搜索镜像
  3. 在这里插入图片描述
  4. 查看文件/etc/docker/daemon.json,确认文件已被修改
# 执行如下命令: 
cat /etc/docker/daemon.json

在这里插入图片描述

至此,我们的 Image 仓算是配好了,但是我们还没有下载镜像,在下载镜像之前,我们先学习一下docker 关于镜像的命令。

# 查看本地所有的镜像
docker images
docker images –q # 查看所用镜像的id

# 从网络中查找需要的镜像
docker search 镜像名称
eg:
docekr search redis

# 拉取镜像
docker pull 镜像名称
docker pull 镜像名:<version>
eg:
docker pull mysql:5.7

# 删除镜像
docker rmi 镜像id # 删除指定本地镜像
docker rmi `docker images -q` # 删除所有本地镜像

四、容器

上文说过,镜像和容器的关系可以理解成模板和复制品,现在模板有了,我们需要创建复制品(容器)。
安装之前,我们还是按例学习一下容器相关的命令:

# 查看容器
docker ps # 查看正在运行的容器
docker ps –a # 查看所有容器,包括正在运行和停止的容器

# 查看容器信息
docker inspect 容器名称或者容器id

#  创建并启动容器
docker run 参数
eg:
docker run -id --name=容器名 centos:7 #守护式创建:  创建容器后,不进入容器内部;   ---> 只要不手动停止,会一直在后台运行!
docker run -it --name=容器名 centos:7 #交互式创建:  创建容器后,直接进入容器内部;  ---> 如果退出容器,容器自动停止!
# 进入容器
docker exec 参数 # 退出容器,容器不会关闭
eg: 
docker exec -it mycentos2 /bin/bash

# 停止容器
docker stop 容器名称或者容器id

# 删除容器
docker rm 容器名称或者容器id
# 删除所有容器:
docker rm `docker ps -aq`

好啦, 命令学完了,我们开始部署容器吧。
我们还是以 MySQL 为例:

# 部署 
docker run -it  --name my_container centos:7

五、数据卷概念

在学习这个问题之前,我们需要先问几个问题:

  1. Docker 容器删除后,在容器中产生的数据还在吗?(会随之销毁 )
  2. Docker 容器和外部机器可以直接交换文件吗? (不可以,docker和外部机器是隔离的 )
  3. 容器之间想要进行数据交互?(通过数据卷或者宿主容器)

那我们如何理解数据卷这个概念呢?

  1. 数据卷是宿主机中的一个目录或文件
  2. 当容器目录和数据卷目录绑定后,对方的修改会立即同步,如图所示:在这里插入图片描述
  3. 一个数据卷可以被多个容器同时挂载
  4. 一个容器也可以被挂载多个数据卷

配置数据卷

创建启动容器时,使用 –v 参数 设置数据卷
docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
eg:
# 将宿主机 /root/data 目录和 /root/data_container 绑定,任意一边的修改都会同步到另一边。
docker run -it --name C1 -v /root/data:/root/data_container centos:7

配置数据卷容器

多个容器绑定一个数据卷,命令会比较多,关系撸起来也会比较复杂,可以考虑采用数据卷容器的方式,如图:
在这里插入图片描述
通过容器 c1 c2绑定数据卷容器 c3 ,再用 c3 绑定数据卷,如此便可以实现 c1 c2 甚至更多的容器数据同步,实现起来也比较简单。
步骤:

# 1.创建启动c3数据卷容器,使用 –v 参数 设置数据卷
docker run –it --name=c3 –v /volume centos:7 /bin/bash  # volume 是自定义的目录名,/bin/bash 是创建容器时的进入命令,可以不加。

# 2.创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷
docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值