docker 初识

参考:docker 官网docker 简介docker 教程

什么是 docker

  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

    docker优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker ,可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

  • 快速,一致地交付应用程序:Docker 允许开发人员使用提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。容器非常适合持续集成和持续交付( CI / CD )工作流程,请考虑以下示例方案:
  • 能够在同一硬件上运行更多工作负载:Docker 轻巧快速,它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。
  • 高度可移植、轻量级:轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

    Docker的应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

    docker架构

三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

    docker内部逻辑关系

  • Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

  • Docker 容器通过 Docker 镜像来创建。
  • 容器与镜像的关系类似于面向对象编程中的对象与类。

    docker架构图

    image.png

    docker 环境配置

配置阿里云 yum 源

新建 soft 目录

  1. mkdir -p /soft

使用xsheel远程连接软件上传 yum 源文件

  1. rz

image.png
清空缓存、重建缓存、列出所有包

  1. yum clean all
  2. yum makecache
  3. yum list

安装配置 docker

安装 docker 源

  1. curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

检查 docker 是否安装成功

  1. cd /lib/systemd/system
  2. ls docker.service

image.png

使用 docker

docker 的使用场景、对象广泛,先现选用部分常见对象使用操作。

docker操作 Mysql

查看docker本地镜像

  1. docker images

查看 mysql 可用镜像,拉取镜像到本地、安装 mysql 、并查看是否安装成功。

  1. docker search mysql
  2. docker pull mysql
  3. yum -y install mysql
  4. which mysql

image.png

检查本地 mysql 的3306端口是否被占用

  1. netstat -anlp | grep 3306 | grep LISTEN

启动 mysql 容器

  1. docker run -itd -p 3306:3306 --name mysql_server -e MYSQL_ROOT_PASSWORD=Java_W_M mysql

查看容器服务是否启动成功

  1. docker ps
  2. netstat -anlp | grep 3306 | grep LISTEN

image.png
image.png
交互式连接到 mysql_server 的 bash

  1. docker exec -it mysql_server bash
  2. mysql -uroot -pJava_W_M

image.png
查看容器中 Mysql 数据库的用户情况(此时无用户)

  1. use mysql;
  2. select user,host,authentication_string,plugin from user;

创建两种方式连接的用户,并授权

  1. 本地:create user 'demouser'@'localhost' identified with mysql_native_password by 'Java_W_M';
  2. 远程:create user 'demouser'@'%' identified with mysql_native_password by 'Java_W_M';
  3. grant all privileges on *.* to 'demouser'@'%' with grant option;
  4. grant all privileges on *.* to 'demouser'@'localhost' with grant option;

刷新权限列表,并再次查看数据库的用户情况(已有用户)

  1. flush privileges;
  2. use mysql;
  3. select user,host,authentication_string,plugin from user;

image.png
退出后,可直接通过新建用户连接 mysql

  1. mysql -udemouser -pJava_W_M;

可以修改 mysql 容器的配置文件来改变相关数值

  1. vim /backup/my.cnf
  1. [mysqld]
  2. pid-file = /var/run/mysqld/mysqld.pid
  3. socket = /var/run/mysqld/mysqld.sock
  4. datadir = /var/lib/mysql
  5. secure-file-priv= NULL
  6. port = 1306
  7. default-storage-engine = innodb
  8. innodb_file_per_table = on
  9. max_connections = 4096
  10. collation-server = utf8_general_ci
  11. character-set-server = utf8
  12. [mysql]
  13. default-character-set = utf8
  14. #!includedir /etc/mysql/conf.d/

docker 常用命令

  • 查看 docker 服务状态

    1. systemctl status docker
  • 查看 docker 信息

    1. docker info
  • 查看 docker 目录大小

    1. du -sh /var/lib/docker
  • 查看 docker 镜像

    1. docker images
  • 查看正在运行的 docker 服务;查看所有 docker 服务(包括已停止的)

    1. docker ps
    2. docker ps -a
  • 启动容器

    1. docker start a7e2eb3d6886
  • 查看容器端口映射

    1. docker port a7e2eb3d6886
  • 停止 docker 服务

    1. 通过namedocker stop mysql_server1
    2. 通过IDdocker stop 50d7be02365f
  • 删除 docker 服务

    1. 通过namedocker rm mysql_server1
    2. 通过IDdocker rm 50d7be02365f
  • 导出容器

    1. docker port a7e2eb3d6886