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架构图
docker 环境配置
配置阿里云 yum 源
新建 soft 目录
mkdir -p /soft
使用xsheel远程连接软件上传 yum 源文件
rz
清空缓存、重建缓存、列出所有包
yum clean all
yum makecache
yum list
安装配置 docker
安装 docker 源
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
检查 docker 是否安装成功
cd /lib/systemd/system
ls docker.service
使用 docker
docker 的使用场景、对象广泛,先现选用部分常见对象使用操作。
docker操作 Mysql
查看docker本地镜像
docker images
查看 mysql 可用镜像,拉取镜像到本地、安装 mysql 、并查看是否安装成功。
docker search mysql
docker pull mysql
yum -y install mysql
which mysql
检查本地 mysql 的3306端口是否被占用
netstat -anlp | grep 3306 | grep LISTEN
启动 mysql 容器
docker run -itd -p 3306:3306 --name mysql_server -e MYSQL_ROOT_PASSWORD=Java_W_M mysql
查看容器服务是否启动成功
docker ps
netstat -anlp | grep 3306 | grep LISTEN
交互式连接到 mysql_server 的 bash
docker exec -it mysql_server bash
mysql -uroot -pJava_W_M
查看容器中 Mysql 数据库的用户情况(此时无用户)
use mysql;
select user,host,authentication_string,plugin from user;
创建两种方式连接的用户,并授权
本地:create user 'demouser'@'localhost' identified with mysql_native_password by 'Java_W_M';
远程:create user 'demouser'@'%' identified with mysql_native_password by 'Java_W_M';
grant all privileges on *.* to 'demouser'@'%' with grant option;
grant all privileges on *.* to 'demouser'@'localhost' with grant option;
刷新权限列表,并再次查看数据库的用户情况(已有用户)
flush privileges;
use mysql;
select user,host,authentication_string,plugin from user;
退出后,可直接通过新建用户连接 mysql
mysql -udemouser -pJava_W_M;
可以修改 mysql 容器的配置文件来改变相关数值
vim /backup/my.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
port = 1306
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
[mysql]
default-character-set = utf8
#!includedir /etc/mysql/conf.d/
docker 常用命令
查看 docker 服务状态
systemctl status docker
查看 docker 信息
docker info
查看 docker 目录大小
du -sh /var/lib/docker
查看 docker 镜像
docker images
查看正在运行的 docker 服务;查看所有 docker 服务(包括已停止的)
docker ps
docker ps -a
启动容器
docker start a7e2eb3d6886
查看容器端口映射
docker port a7e2eb3d6886
停止 docker 服务
通过name:docker stop mysql_server1
通过ID:docker stop 50d7be02365f
删除 docker 服务
通过name:docker rm mysql_server1
通过ID:docker rm 50d7be02365f
导出容器
docker port a7e2eb3d6886