尝试使用docker,配置java。网上关于docker的描述教程很多,本次主要使用docker配置一个简单的javaweb应用。
1. 安装
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
#可选:本地电脑上使用非root用户访问docker:
sudo groupadd docker
sudo gpasswd -a ${USER} docker
#注销用户一下
sudo service docker restart
ps:如果出现:sudo unable to resolve host,则把命令中的所有sudo去除,无伤大雅。
2. 阿里云镜像加速
如果使用docker官方的资源链接将会非常非常慢,建议国内使用阿里云镜像加速。阿里云官方指导方法。
如果不小心添加了docker官方的软件源,可以到目录:/etc/apt/sources.list.d/下进行注释,或添加软件源。
3. 本地镜像制作
#拉取tomcat和mysql镜像
docker pull tomcat
docker pull mysql
#在war包目录下编写Dockerfile内容
from tomcat
MAINTAINER tomlao 1026022953@qq.com
COPY dockertest.war /usr/local/tomcat/webapps
#from tomcat从tomcat镜像构建新的镜像
#tomlao是你的名字,1026022953@qq.com是你的邮箱
#COPY从当前目录下拷贝war包到镜像中的tomcat的webapps目录,一般由docker自动完成,不要手动干预
#建立镜像且命名为dockertest,在当前目录下有Dockerfile和war包
docker build -t dockertest .
#创建mysql容器(相当于镜像实例化)
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mymysql mysql
#-d后台运行
#-p 3306:3306端口映射,端口需要使用前关闭本地的mysql,或可以自己设置探索一下其他端口。
有这个非docker容器(本地电脑)也可以访问容器内的数据库。
#-e MYSQL_ROOT_PASSWORD=123456连接数据库密码
#--name mymysql别名
#为数据库添加内容
docker exec -it mymysql bash
#进入数据库容器的命令行模式
mysql -uroot -p123456
#创建数据库,自己写自己的
create database xxx;
use database xxx;
#运行javaweb容器
docker run -it -p 8080:8080 --link mymysql:db dockertest
#-i表示以“交互模式”运行容器
#-t:表示容器启动后会进入其命令行
#-p端口映射
#--link mymysql:db其中mymysql是mysql容器的别名,db是别名,
web程序访问mysq数据可以通过其访问,例如jdbc:mysql://db:3306/dockertest?user=root&password=123456&characterEncoding=utf-8
#dockertest为web项目的镜像
#运行后提交新的镜像,保存其内容,并命名
docker commit xxxdockerID dockername
#
值得注意的截图
这里我偷懒,直接在idea输出的war包目录下做Dockerfile,生成镜像。这样我每次修改了代码,需要先build一下war包,然后再docker build -t dockertest . 生成镜像。
其他docker常用命令
#列出所有镜像
docker images
#参考正在运行的容器
docker ps
#停止容器
docker kill xxx
docker stop xxx
#停止所有容器
docker stop $(docker ps -a -q)
#删除所有container
docker rm $(docker ps -a -q)
#删除所有镜像
docker rmi $(docker images -q)
#查看docker占用
docker system df
#用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。
docker system prune
#删除所有关闭的容器
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
#删除所有dangling镜像(即无tag的镜像):
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
#删除所有dangling数据卷(即无用的volume):
docker volume rm $(docker volume ls -qf dangling=true)
#更多清理见下面的链接