栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker基础(1-4章节)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker基础(1-4章节)

1、 Centos7 安装 Docker 1.1 yum进行安装
  安装命令如下:
  yum install -y docker
  安装如图所示:

1.2 查看是否安装成功
  查看是否安装成功
  yum list installed | grep docker
  查询结果如图所示:

1.3 启动docker
  启动dcker
  systemctl start docker
  启动如图所示:

1.4 查看是否启动成功
  查看docker 启动状态
  systemctl status docker
  查看状态如图所示:

2、 Docker 的核心概念 2.1 Docker的镜像(images)
  镜像的定义:一个镜像就代表一个软件,通俗点说比如MySQL是一个软件,
  他在docker中就是一个镜像,镜像就是相当于一个软件的安装包。
2.2 Docker的容器 (container)
  容器定义:一个容器就代表一个服务,通俗点说比如通过一个镜像安装包将MySQL
  安装了起来并提供了一些服务,这个服务就叫做容器。一个镜像可以启动多个容器。
2.3 Docker的仓库 (repository)
  仓库定义:仓库是用来存储所有的docker镜像的具体位置。仓库分为两种,
  第一种是远程仓库,第二种是本地仓库。远程仓库是docker官方在全球
  范围内维护的唯一的一个仓库。本地仓库是我们自己的镜像存储在本地的镜像。
2.4 镜像、容器、仓库之间的关系

2.5 Docker 镜像查询地址
   https://hub.docker.com/
   备注:镜像中含有以下标识表示为官方镜像。

2.6 Docker 配置镜像加速服务
  # 进入阿里云官网控制台搜索容器与镜像服务,找到镜像加速器查看配置文档。
  # 修改配置文件
  vim /etc/docker/daemon.json
  # 写入以下配置
  {
      "registry-mirrors":[
          "https://3pmzliym.mirror.aliyuncs.com"
      ]
  }
  # 执行更新文件命令
  sudo systemctl daemon-reload 
  sudo systemctl restart docker
2.7 查看Docker镜像下载地址
  # 查看Docker镜像下载地址(查看docker信息)
  docker info
  # 备注:以下圈起来的就是docker镜像下载地址

3、 Docker 基础使用 3.1 Docker镜像下载
  # 下载docker镜像
  docker pull mysql:5.7
  mysql是镜像名字,5.7是镜像的版本号
3.2 重命名镜像
  # 查看现有镜像
  docker images
  # 重命名镜像
  docker tag docker.io/mysql:5.7 mysql:5.7

3.3 docker 删除镜像
  # 删除镜像(两种方式均可)
  docker rmi docker.io/mysql:5.7
  docker image rm docker.io/mysql:5.7
3.4 启动MySQL镜像
  # 启动镜像
  docker run -itd --name mysql -p 8206:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
3.5 查看镜像启动状态
  # 查看镜像启动状态
  docker ps
  # 查看容器信息
  docker container ls

3.6 进入MySQL数据库
   # 进入docker 环境
   docker exec -it mysql /bin/bash
   # 使用数据库客户端
   mysql -u root -h localhost -p123456
3.7 Docker的基础命令 3.7.1 将tar包导入成镜像
  # 将tar包导入成镜像
  docker load -i 导入tar的镜像文件名称
3.7.2 搜索镜像命令
# 搜索MySQL镜像
docker search mysql

3.7.3 停止容器运行
  # 停止容器运行
  docker stop 7f9d31bc1f59

3.7.4 删除容器
  # 删除容器 7f9d31bc1f59 是容器id 
  docker rm 7f9d31bc1f59

3.7.5 查看容器运行日志
  # 查看容器运行日志
  docker logs c377ef3ca2f1
  # 查看实时的日志
  docker logs -f c377ef3ca2f1
  # 查看实时的日志并加时间戳
  docker logs -tf c377ef3ca2f1
  # 查看最后多少条日志
  docker logs --tail 100 c377ef3ca2f1

3.7.6 查看容器内的进程
  # 查看容器内的进程
  docker top c377ef3ca2f1

3.7.7 宿主机进入容器
  # 从宿主机进入到容器内部 bash是容器内部的命令行
  docker exec -it c377ef3ca2f1 bash
  # 退出容器
  exit


3.7.8 操作系统与容器的文件交互
  # 操作系统与容器的文件交互
  # 从容器复制文件到操作系统
  docker cp c377ef3ca2f1:容器内的资源路径 操作系统中的路径
  # 从操作系统复制文件到容器
  docker cp 操作系统中的文件路径 容器id:容器内的资源路径
3.7.9 查看容器内部的细节
  # 查看容器内部的细节
  docker inspect c377ef3ca2f1

3.7.10 Docker的数据卷 (Volume)
  # 数据卷作用:实现宿主机系统和容器之间的文件共享。
  # 数据卷的使用:在启动容器之前指定数据卷的映射关系
  # -v 是数据卷的缩写
  # 自定义数据卷
  docker run -itd --name mysql -v 宿主机的目录:容器中的目录 -p 8206:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
  # 自动数据卷
  # 这个aa表示的是数据卷的名字没有回默认的创建(在docker的默认目录之下)同时会将容器中的目录结构和文件映射到aa之下。
  docker run -itd --name mysql -v aa:容器中的目录 -p 8206:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
3.7.11 将运行的容器打包成一个自己的镜像
  # 将运行的容器打包成一个自己的镜像
  docker commit -m "描述信息" -a "作者信息" 容器id 镜像名称:版本号

3.7.12 将镜像备份到另一台机器上
  # 将镜像备份到另一台机器上 -o表示保存到哪个文件中
  docker save 镜像名称:版本号 -o 文件名称

3.8 Docker 的网络通信 3.8.1 docker 网络通信的作用
  docker运行外部访问容器或者通过容器互联的方式来提供网络服务。以此来达到容器之间相互通信的需求。
3.8.2 docker 网络通信的基础 3.8.2.1 docker虚拟网桥的创建
  当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge网桥,
  可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。当创建一个 Docker 容器的时候,
  同时会创建了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。
  这对接口一端在容器内,即 eth0;另一端在本地并被挂载到 docker0 网桥,名称以 veth 开头
  (例如 vethAQI2QT)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。
  Docker 就创建了在主机和所有容器之间一个 虚拟共享网络。

  网桥使用注意点:一般在使用docker网桥bridge实现容器与容器之间通信的时候都是站在
  应用角度对容器进行的通信。这样所有的通信请求都会经过docker0网桥来进行通信。
  这样会加大网桥的压力,所以每个容器都可以创建自己的一个网络。
3.8.2.2 docker创建自定义网桥
  # 创建自定义网桥命令
  docker network create bridge_name 
  # 启动容器指定网桥
  docker run -itd --network bridge_name --name mysql -p 8206:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
  # 删除网桥
  docker network rm bridge_name
3.8.2.3 docker 网络通信相关命令
  # 查询目前有的网桥
  docker network ls
  # 查看网桥信息
  docker inspect bridge_name
  # 删除未使用的网桥
  docker network prune
  # 查看端口映射配置
  docker port fa 80
3.8.2.4 docker容器访问外部网络
  # 容器要想访问外部网络,需要本地系统的转发支持。在Linux 系统中,检查转发是否打开。
  # 查看转发是否打开(如果是0则是没有开启转发,需要手动打开)
  # 如果在启动 Docker 服务的时候设定 --ip-forward=true, Docker 就会自动设定系统的 ip_forward 参数为 1
  sysctl net.ipv4.ip_forward
  net.ipv4.ip_forward = 1
  # 打开转发
  sysctl -w net.ipv4.ip_forward=1
3.8.2.5 docker容器之间的访问 3.8.2.5.1 容器之间通信的条件
  容器之间能否能够进行通信需要两个条件:
  容器的网络拓扑是否已经相互关联。默认情况下,所有容器都会被连接到docker0网桥上。
  本地系统的防火墙软件-- iptables 是否允许通过。
3.8.2.5.2 容器之间的访问端口
  默认情况下,不同容器之间是允许网络互通的。如果为了安全考虑可以在/etc/docker/daemon.json
  文件下配置{"icc": false}来禁止容器之间相互通信。如果想要指定端口之间的通信那么
  可以通过--link=CONTAINER_NAME:ALIAS 选项来访问容器的开放端口。
  执行命令 sudo iptables -nL可以查看iptables的规则。

3.8.2.5.3 映射容器端口到宿主机
容器所有到外部网络的连接,源地址都会被 NAT 成本地系统的 IP 地址。
这是使用 iptables 的源地址伪装操作实现的。查看主机的 NAT 规则。
sudo iptables -t nat -nL

3.9 Docker 的数据卷(Volume) 3.9.1 数据卷的作用
数据卷的导读:我们将镜像启动的时候就会变成容器,比如MySQL,需要进行存储数据,
那么这些数据就会存储在容器中,一旦我们删除这个容器从,MySQL之前持久化的数据
就会一并被删除掉,显然这不是我们想要的,那么我们就会想怎么能够删除容器而不删除数据。
那么就可以使用数据卷。
数据卷的作用:将容器和宿主机的磁盘进行一个映射,将容器中的数据文件映射到宿主机的磁盘中,
也可以将宿主机的文件映射到容器之中,最终达到宿主机和容器之间的数据共享的结果。
3.9.2 数据卷的特点
  数据卷可以在容器之间互相共享和重用
  对数据卷的修改会立刻生效影响到容器的数据
  对数据卷的更新修改不会影响到镜像
  数据卷会一直存在,即使容器被删除
3.9.3 数据卷的操作
  # 自定义数据卷
  docker run -v 宿主机的路径:容器的路径
  # 自动创建数据卷
  docker run -v 数据卷名称(自己起的):容器内路径
  # 查看数据卷
  docker volume ls
  # 查看数据卷的细节
  docker volume inspect 卷名
  # 删除数据卷
  docker volume rm 数据卷名称(id)
  # 删除未使用的数据卷
  docker volume prune
  # 创建数据卷
  dockcer volume create 数据卷名称

4、 Docker的镜像原理
  镜像是一直轻量级的、可独立执行的软件包。它具有以下特性,包含这个软件运行的所有的代码包括
  运行时的库和环境变量,配置文件等。他是一个联合的文件系统(unionFS)这是分层的,并且高性能
  的文件系统,他支持文件的多层叠加。unionFS是docker镜像的基础,镜像可以通过分层来继承。那
  么镜像为什么需要采用分层结构,原因其实很简单为了资源的共享。如果不能够进行资源共享那么
  docker的一些公共的基础镜像就会很大占用资源空间。

欢迎关注我的微信公众号,更多内容将在微信公众号中发布:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880665.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号