回顾:
简介
Docker是一个开源的应用容器引擎;是一个轻量级容器技术;
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;类似ghost系统的原理.
核心概念
1) 安装linux系统(自行百度)
2) 在linux系统上安装docker
① 检查内核版本(3.10及以上), 使用命令uname -r查看
② 安装docker yum install docker
查看版本:
③ 启动docker systemctl start docker
如果无法启动, 则进入/etc/sysconfig/目录下, 编辑selinux文件, 将selinux的属性值改为disabled.
④ 查询命令(如 docker search mysql)
⑤ 下载镜像(docker pull <镜像名称[可以是全名, 也可以是简称, 如: 全名[docker.io/mysql], 简称[mysql]]>)
⑥ 指定下载镜像的版本(默认是最新版[latest]): docker pull <镜像名称>:<版本名称>
⑦ 查询docker镜像(docker images)
⑧ 删除指定镜像(docker rmi <镜像id>)
容器操作
流程: 明确所需镜像 ==> 运行镜像 ==> 产生对应容器(软件本身, 如tomcat)
搜索镜像: docker search tomcat
拉取镜像: docker pull tomcat(默认是最新版)
启动容器: docker run --name <自定义容器名称, 如: mytomcat> -d[表示后台运行] <镜像名称>[可加版本号]
docker run --name mytomcat -d tomcat:latest
查看运行中/所有的镜像(软件): docker ps / docker ps -a
停止运行中的容器: docker stop <运行中的容器id>
当知道容器id时, 启动该容器也可以使用命令docker start <容器id>
删除容器, docker rm <容器id>
外部访问tomcat的docker容器(做端口映射)
命令: docker run --name <自定义容器名称> -d -p <虚拟机端口>:<要映射到tomcat中的端口> <tomcat镜像名称>
例: 将虚拟机的8888端口映射给tomcat的8080端口, 这样外部就能通过8888端口访问tomcat的8080端口
访问: ip:8888 在此之前需要关闭linux的防火墙
查看容器日志: docker logs <容器id>
一个镜像可以启动多个容器
更多命令: https://docs.docker.com/engine/reference/commandline/docker/
安装启动mysql
安装镜像, 参照上文, 启动镜像, 参照官方文档
docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=<自定义密码> -d mysql
-p: 做端口映射
-e: 指定root账户的密码
-d: 后台运行
连接测试:
ps: 如果连接不成功报2059错误码, 请参考解决方案: https://blog.csdn.net/u013274055/article/details/83794340
步骤:
① 查询具体mysql容器id: docker ps -a
② 连接mysql的docker容器: docker exec -it [指定容器id] bash
③ 连接mysql: mysql -u root -p
④ 修改加密方式为mysql_native_password, 密码为root: alter user 'root'@'%' identified with mysql_native_password by 'root'
⑤ 执行命令使权限配置项立即生效: flush privileges
其他的高级操作
官方文档说明:
释义:
docker run --name [自定义mysql名称] -e MYSQL_ROOT_PASSWORD=[自定义root账户的密码] -d mysql:[指定版本, 默认最新版本] --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci (红色部分是指定编码为utf-8)
docker run --name mysql_name -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
意为指定mysql的编码为utf-8
docker run --name [自定义名称] -v [自定义文件夹]:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=[自定义root账户的密码] -d mysql:[指定版本]
docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
意为把主机的[指定文件夹]挂载到 mysql的docker容器的/etc/mysql/conf.d文件夹里面, 这样以后就只需要把mysql的配置文件放到自定义的文件夹里面即可(docker容器会跟mysql原来的配置文件进行融合)