【服务计算】应用容器化

这次作业要求改用mysql数据库,并且用docker容器化客户端,服务端,数据库

作业要求:应用容器化
项目地址:SimpleBlog

坑很多,慢慢说

0. 安装docker

由于CentOs的虚拟机不小心玩崩了,只能用windows来装docker,而且由于不是专业版,不能安装docker for windows,所以只能安装DockerToolbox

下载地址:https://docs.docker.com/toolbox/toolbox_install_windows/

安装过程默认就行了,不过要把virtualbox和git的安装点掉,不然会把本机的删掉重装……太毒了

安装好后点击快捷方式,会出现这个
在这里插入图片描述

点击浏览去git的安装目录下的bin文件夹里找到bash.exe就行了

然后可能会出现“VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path”这种错误

我通过修改toolbox安装目录下的start.sh

STEP="Looking for vboxmanage.exe"
if [ ! -z "$VBOX_MSI_INSTALL_PATH" ]; then
  VBOXMANAGE="{$VBOX_MSI_INSTALL_PATH}VBoxManage.exe"
else
  VBOXMANAGE="${VBOX_INSTALL_PATH}VBoxManage.exe"

{$VBOX_MSI_INSTALL_PATH}直接换成了本机这个环境变量的路径解决了

接着要安装Boot2Docker,不过会很慢,建议直接下载放进C:\Users\username\.docker\machine\cache\boot2docker.iso

下载地址:https://github.com/boot2docker/boot2docker/releases/download/v17.05.0-ce/boot2docker.iso

最后如果看到小鲸鱼,就大功告成了

再换一下源

换源指南:http://guide.daocloud.io/dcs/daocloud-9153151.html#docker-toolbox

常用命令

docker run/build build构建镜像,run运行镜像创建容器
docker images 查看所有镜像
docker ps [-a] 查看正在运行的容器,加上-a查看所有容器
docker stop/kill 安全停止/直接杀死正在运行的容器
docker rm/rmi rm移除容器,rmi移除镜像
docker network 网络相关命令
docker bash进入容器内部

中文文档:https://docs.docker-cn.com/

1. 配置mysql

获取mysql官方最新docker镜像
docker pull mysql/mysql-server:latest

运行mysql
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /mysql:/var/lib/mysql --network=mynet --name=mysql --rm mysql/mysql-server
-p:端口映射。将容器的3306端口映射到宿主机的3306端口。[宿主机]:[容器]
-e:设置环境变量。这里是设置root账号的密码为123456
-v:目录映射。将宿主机的/mysql目录映射到容器的/var/lib/mysql目录,这样容器就能直接使用宿主机的目录,而实现持久化。值得注意的是,docker是运行在Linux上的,在Windows中运行docker,实际上还是在Windows下先安装了一个Linux环境,然后在这个系统中运行的docker,所这里的宿主机指的是Linux虚拟机,在virtualbox里可以查看。
–name:将容器命名为mysql,否则会随机取一个名字,不太方便
–network:详见下面关于network的介绍
–rm:在容器停止运行后自动删除这个容器

可以使用docker images查看拉取的mysql/mysql-server镜像
使用docker ps看到正在运行的mysql容器
使用docker exec -it mysql bash进入mysql容器,并使用mysql -uroot -p命令进入数据库操作

接下来,因为mysql的root用户只允许localhost,即容器内授权登录,外网(其它容器或者宿主机)无法授权登录root用户,所以我们可以添加一个用户,允许外网登录它,赋予它操作某个数据库的权限。

select user,host from user;
如果看到root用户的host是localhost,就说明只能本机登录
如果新建的用户的host是%,就说明可以用任意ip登录

添加用户,并授权

create database test;
create user testuser identified by '123';
grant all on test.* to 'testuser'@'%';
flush privileges;

这是项目的mysql初始创建表

CREATE DATABASE `test`;

CREATE TABLE `test`.`Article` (
  `</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值