最近买了个阿里云服务器,配置1核2g内存,学习够了。记录下过程。
1,服务器相关,请看下图,云服务器主要配置是安全组和密钥,前者是开放端口,后者可以用于远程连接(比如我windows系统通过putty远程连接linux主机)
2,服务器安装docker,pull tomcat和mysql镜像(如docker pull tomcat)
3,创建自定义网络,用于容器间的通信,命令如下:
docker network create --subnet 192.168.49.0/24 --gateway 192.168.49.1 network0
以上创建了一个新的网络network0,可以通过docker network ls查看原始的网络和创建的网络
4,使用mysql镜像创建并启动容器,命令如下:
docker run -d -p 3366:3306 --name mysql --net network0 --ip 192.168.49.10 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=blog hub.c.163.com/library/mysql
以上,-d表示后台运行,-p 3366:3306表示将容器的3306端口映射到服务器的3366端口(如果不与外界进行数据传输,感觉没必要),--name 后面是容器的名字,--net 指定容器使用的网络,--ip 指定容器所属ip,-e 设置环境变量,此处设置了mysql的密码和创建了一个数据库blog(不是必要),最后一串东西是mysql镜像的名字(此处无tag)
5,mysql容器启动后,如果要在mysql里设置数据库和表,需要先进入容器,命令为:
docker exec -it mysql /bin/bash
表示进入mysql容器并使用bash命令模式,然后可以正常操作如mysql -uroot -p回车输入刚才指定的密码,创建数据库和表。其实最好通过Dockerfile文件来实现,直接进入容器操作属于黑箱操作,因为这个操作对于别人来说是不可知的,自己可能都会忘,而Dockerfile必定是记录了镜像是如何构建的。我现在还不熟悉Dockerfile。而且应该使用Dockerfile代替commit创建镜像,总之Dockerfile才是正道。。。
6,使用tomcat镜像启动容器,命令如下:
docker run -d -p 8080:8080 --name tomcat --net network0 --ip 192.168.49.11 hub.c.163.com/library/tomcat
以上跟mysql容器的创建差不多,要注意的是需要通信的容器间其ip要处于同一网段,也就是ip前3个数字相同。
7,复制war包到tomcat容器内,命令如下:
docker cp app.war tomcat:/usr/local/tomcat/webapps
以上表示将当前目录下的app.war包,复制到名称为tomcat的容器的/usr/local/tomcat/webapps目录下。这样项目就部署好了。在第6步时可以使用-v命令将tomcat的webapps与主机某个目录进行挂载,如果不进行挂载,则会在主机/var/lib/docker/volumes/配置随机的一个挂载目录,容器销毁后此目录还是存在,久了会占内存吧。最好挂载指定目录,自己也好清理。
ps:
war包中mysql的配置:url里的ip为mysql容器创建时指定的ip,数据库和表对应容器中创建的数据库和表。
windows推荐使用winscp软件进行云服务器文件的上传和下载。
第7步之后访问网站可能不会立即响应,请耐心等待若干分钟后再试,项目部署对于服务器可能需要点时间。