2021-05-02

Docker入门与应用实战

一.Docker的概述

等同于Linux系统上的虚拟机

Docker:                                                             

  • 仅包含应用和应用支撑环境
  • 应用直接运行于宿主机的内核
  • 大小MB级别,秒级启动

传统虚拟机(如Windows系统上的VMware虚拟机):

  • 包含虚拟硬件+完整操作系统
  • 再运行应用和应用支撑环境
  • 应用运行于虚拟出来的操作系统上
  • 大小GB级别,启动一个OS的时间

二.Docker的仓库,镜像,和容器

仓库:是一个集中存储和分发镜像的服务站。

Docker容器分为公有仓库(官方维护地址:https://hub.docker.com/)和私有仓库(一般通过公司局域网建立,存放从公有仓库下载并改进的镜像)

镜像:用于创建Docker容器的模板,可理解为应用的安装包或者面向对象程序设计中的类。

容器:可理解为安装后的应用或者类的实例

一个Docker Registry中可以包含多个仓库;每个仓库可以包含多个标签;每个标签对应一个镜像

registry.aliyuncs.com/some namespace/hello-word:latest
镜像中心域名(公有仓库的下载地)      命名中心(镜像分类)      名称(镜像名称)       版本

三.Docker的安装(centOS)

1.CE版本:免费社区版;分为Edge版本(每个月发布)和Stable版本(每个季度发行)

2.EE版本:收费企业版;Stable版本(每个季度发行,从17.03开始)

安装Docker:

  1. Docker CE版本支持64位版本CentOS7,使用官方的安装脚本安装 命令:curl -fsSL https://get.docker.com/ | sh
  2. 备选安装方式:yum -y install docker  (Docker软件包和依赖包在默认的CentOS-Extras软件源中,版本较老)

启动Docker服务:

  1. 命令:systemctl start docker
  2. 开机自启动命令:systemctl enable docker
  3. 取消开机自启动:systemctl disable docker

查看验证Docker的安装和启动状态:docker version

  • Client
  • Server

四.Doceker的用户管理

默认时,docker命令会使用Unix socket与Docker引擎通讯;而只有root用户和docker组的用户才可以访问Docker引擎的Unix socket;其他用户在操作docker命令时会受到权限限制

解决方案一:用root登录(不安全)

解决方案二:将普通用户(要使用docker命令的用户)添加docker用户组(推荐)

1、sudo : 可以让普通用户临时获得root用户的权限,来新建docker用户组

2、普通用户并没有使用sudo的权限

3、先要让root用户把普通用户加入到sudoers的授权文件中

4、sudoers的文件居然是只读的,先解决这个问题

5、用root用户的权限给sudoers文件赋予写权限:chmod u+w /etc/sudoers  

6、在sudoers文件中,添加:普通用户名 ALL=(ALL) ALL 

7、现在普通用户就可以使用sudo的命令了。
添加docker用户组:sudo groupadd docker  
向docker用户组中添加用户:sudo usermod -G docker 普通用户名 

8、重新登录linux,以后普通用户操作docker的命令将不再需要添加sudo的命令了

五.镜像的操作

  • 镜像加速:Docker获取镜像时,默认使用Docker Hub拉去镜像,国内访问会相对困难。可以更改配置文件去访问国内的镜像站点。
  1. 添加:/etc/docker/daemon.json文件
  2. 文件内容:
                        "registry-mirrors": [
                        "https://registry.docker-cn.com"
                         ]
                       }
  3. 重启服务:systemctl daemon-reload(重新加载daemon文件)                  systemctl restart docker(重启docker)
  • 查找镜像命令:docker search 镜像
  • 拉取(下载)镜像命令:docker pull 镜像名(:版本号)
  • 列出本机下载的所有镜像:docker images

六.容器的操作

容器运行分两种
(1)交互式运行(通过it参数分配的伪终端,会进入到容器内部)
docker run -it webdevops/php-apache-dev /bin/bash
exit退出容器
(2)守护式运行(在后台运行)
docker run -d webdevops/php-apache-dev

  • 运行容器:docker run 镜像名
  • 查看容器运行状态:docker ps -a(Up/Exited代表正在运行/停止的容器)
  • 重启容器:docker container start 容器ID
                      docker container restart 容器ID
    (将一个运行态的容器终止,然后再重新启动它)
  •  进入已运行的容器内部:docker exec -it 容器ID前四位 /bin/bash
  • 删除已停止的容器:docker container rm 容器ID

七.Docker的帮助

命令:docker command --help

八.Doceker的实践案例

  • 测试镜像是否已安装成功(Docker的hello-world项目):docker run hello-world
  • 如何寻找容器(服务器)的发布目录(站点配置):一般在etc目录下cd进入下载软件,查看conf配置文件,寻找DocumentRoot路径
  • 容器端口映射和目录挂载(目录映射和数据卷)

命令:docker run -d -p 8082:80 -v /home/51testing/webtest:/app webdevops/php-apache-dev

· -p 8082:80   将主机中的8082端口映射到容器中的80端口
· -v /home/51testing/webtest:/app
  将主机中的/home/51testing/webtest和容器中的/app(发布目录)做对接,实现数据共享(容器中的目录必须为空,否则主机目录中的内容将覆盖容器的目录

数据卷:是一个可供一个或者多个容器容器使用的特色目录
       特性:1.可以在容器之间共享和重用;2.对数据卷的修改会立马生效;3.对数据卷的更新,不会影响到镜像;4.被设计用于持久化数据的,它的生命周期独立于容器
       创建数据卷:docker volume create 数据卷名
       查看数据卷:docker volume inspect 数据卷名                 (此命令可以查看到数据卷映射到宿主机的目录)
       查看所有的数据卷:docker volume ls
       删除数据卷:docker volume rm 数据卷
       清理无主的数据卷:docker volume prune 
       挂载数据卷:docker run -d -p 8083:80 --mount source=lampvol,target=/var/www/html --name mylamp nickistre/centos-lamp
   --mount source=myvol  指定要挂载的数据卷是哪一个
   ,target=/var/www/html  要把数据卷挂到容器的发布目录下
   --name  给容器起一个好记忆的名字

容器互联(将多个不同的容器放在同一个网络内)
创建:docker network create 自定义网络名
查看:docker network inspect 自定义网络
互联:docker run -it --network=自定义网络名 镜像名 

例子:docker run -it --network=mynet --name box1 busybox sh
           --network=mynet 将新建的容器加入到mynet的网络中
—————————————————————————————————————————————————————————————————————————————————
最终目的:使用docker进行服务器的部署

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值