因为一些原因,接触到了docker,经过一番研究,总算是有了一些自己的看法,有什么不对的地方,希望多多指教。
废话不多说,首先我这里使用的虚拟机安装的是ubuntu16.04版本,其他版本应该也可以。
当初在学习时查了很多资料,也看了很多同仁的博客,参考了https://blog.csdn.net/WANTED_Shanks/article/details/79815022 的内容,他做的是centos 7 版的,有很多共通之处;
一.Ubuntu 16.04 安装 Docker
1.选择国内的云服务商,这里选择阿里云为例
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
2.安装所需要的包
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
3.添加使用 HTTPS 传输的软件包以及 CA 证书
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
4.添加GPG密钥
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
5.添加软件源
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
6.添加成功后更新软件包缓存
sudo apt-get update
7.安装docker
sudo apt-get install docker-engine
8.启动 docker
sudo systemctl enable docker
sudo systemctl start docker
2.我们选择第一个下载即可拉取镜像 docker pull tomcat
3.参照拉取tomcat镜像的方法拉取mysql镜像
挂载启动mysql镜像:docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456-v /usr/mysql_data:/var/lib/mysql -d mysql
注: --name:给容器取一个别名为mysql
-p:映射端口号,将mysql的端口号3306映射为3306
-e: MYSQL_ROOT_PASSWORD:设置root密码为123456
-v:使用/usr/mysql_data挂载mysql数据文件,保存数据库数据
-d:后台运行容器,并返回容器ID
mysql:镜像名称 可使用docker images查看所有镜像:
使用docker ps 查看正在运行的容器:
5.现在可以通过windows上的数据库图形化管理工具,连接测试mysql
这里的ip地址为vm中ubuntu的ip地址,密码为启动mysql时,设置的密码。然后就可以在windows桌面进行mysql的数据库创建。
6.使用Dockerfile构建自己的docker镜像
修改web项目的数据库连接信息,将ip信息改为我们启动mysql容器时取的别名,改好,打成war包 这一点很关键容易搞错
对比之前我们在javaweb中连接数据库的写法 jdbc:mysql://localhost:3306/test
修改完成之后,将这个javaweb项目打成war包,在ubuntu系统中新建一个文件夹,将war包放入其中,
再在当前文件夹下创建一个Dockerfile 文档 在其中写入
from tomcat
COPY sushe.war /usr/local/tomcat/webapps
保存退出。
查看生成的镜像
8.启动sushe镜像:
docker run -d -p 8888:8080 --name fbm --link mysql:docker eaf2d687d1d3
注:--link:tomcat容器与msyql容器简历连接,mysql为启动mysql容器时取的别名,docker为建立连接的连接名
eaf2d687d1d3 为sushe镜像的image id
再放一遍图
mysql为启动mysql容器时取的别名
docker为建立连接的连接名
最后测试一下
测试数据库输入账号密码
登录成功,部署完毕
在部署过程中,肯定会有很多问题,有时候虽然在本机上运行的没问题,可是打包上传之后就出了错。
所以我们可以用 docker logs tomcat 查看日志信息。