Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
菜鸟教程--docker的优点
前言
这是对一个linux作业完成过程的记录,要求如下
- 在dockers上搭建tomcat服务器,放置一个你之前的war包,并验证成功,截图附带mac地址。
- 在云服务上搭建私有仓库,将服务器制作成镜像,然后再你们第三方的系统(本机,虚拟机,云服务器都可以)上安装docker,并拉取你自身的镜像,验证成功,截图附带mac地址
本身并不复杂,可以说相当简单和入门,但在环境上有点问题,比如第二个环境要求在云服务器上搭建私有库,并使用第三方的系统,拉取私有库镜像并验证成功,总所周知,公网服务器的流量和速度是非常宝贵的,一般的1M小水管服务器的速度实在是难以支撑拉取一个几百M的镜像文件
所以第三方系统这个条件先直接跳过了
若你使用的是虚拟机,那更加好办了,多开虚拟机就可以解决,反正内网速度可一点都不用担心,就是对电脑的硬件有小小的要求。
不过本人使用的是云服务器环境,大致过程是一致的,只是云服务器要多出一点操作而已。
前置要求
- 虚拟机或者云服务器有一个即可
- 一个用于tomcat的war包
安装Docker
若你是虚拟机,请点击这里跳转到安装部分
连接服务器
假设你已经用各种方式购买了一台centos的云服务器,现在我们需要连接上它,才能进行各种各样的操作,而虚拟机直接开机就行。
下载&安装FinalShell
fainalshell是一个SSH工具(非限制,有其他替代工具一样可行),这里用于操作云服务器和上传文件至云服务器
下载链接:http://www.hostbuf.com/downloads/finalshell_install.exe
安装过程就不进行演示
使用 FinalShell 连接云服务器
打开FinalShell操作


最后点击确定即可
不知道ip和密码的话,进入你所在的云服务商的控制台界面,查看服务器详细信息,这里以阿里云为例:

确认后


最后显示这样连接部分就完成了!

我这里密码输错了一次
我这里密码输错了一次
之后的部分的截图演示我就只放代码部分了
安装
在安装前使用
su
命令在获取root权限,需要输入root密码
Docker安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh

这样就安装成功了,之后输出下面那个命令即可启动docker
service docker start
Docker换源
由于Docker默认拉取的是国外源的镜像仓库,所以我们需要换成国内源保存拉取速度
配置文件位于/etc/docker/daemon.json,若是不存在,请自行创建(vim命令可直接创建),使用
vim /etc/docker/daemon.json
来打开这个json文件,将以下内容覆盖进去
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
提示:按i键进入insert模式修改内容后,按Esc进入命令行输入:wq保存
关于如何使用vim来写入和保存文件,详情可以百度,也可以看这里→https://www.runoob.com/linux/linux-vim.html
修改完成后使用
service docker restart
对docker进行重启
至此完成Docker的所有安装和前置工作
完成要求1:部署一个tomcat
首先需要一个tomcat镜像才能进行操作,输入下面的命令进行拉取tomcat镜像:
docker pull tomcat
拉取需要一点时间,耐心等待完成
然后用这个tomcat镜像启动一个容器:
docker run -d -p 8080:8080 --name mytomcat tomcat
解释下这条命令的含义
- docker run tomcat:启动一个以tomcat为镜像的容器
- -d:后台运行
- -p 8080:8080 :将容器的8080端口开放到宿主机的8080端口上,以便访问
- --name mytoncat :将容器命名为mytomcat

返回了一串字符就是成功启动了
拿出你准备好的war包

注意拖拽时的目录!不然你会找不到文件

拖拽后无需任何操作即上传成功
然后需要把war包放入容器中tomcat的webapps文件夹内:
docker cp test.war mytomcat:/usr/local/tomcat/webapps
这个命令是指,将test.war这个文件复制进名为mytomcat的容器的 /usr/local/tomcat/webapps 路径内,此命令没有任何输出即为成功
最后使用此重启容器:
docker restart mytomcat
至此,若你使用的是虚拟机,部署环节就结束了,可以使用游览器进行验证。
但云服务器还需要一个操作,那就是打开服务器的8080端口


演示为阿里云,其他云服务商大致相同
访问连接验证你的成果吧!连接为ip:8080/war项目

这只是个以前上课的小例子
这只是个以前上课的小例子
完成要求2:部署私有库
我们在拉取镜像的时候,其实是在拉取公共镜像库里的镜像,当我们需要对自己的项目进行打包上传时,直接上传公共仓库显然不太合适,于是Docker允许我们在本地搭建一个私有仓库,这里使用registry
拉取registry镜像:
docker pull registry:2
运行一个registry容器:
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
此时你可以访问ip:5000/v2进行验证,但云服务器不要忘记打开端口,这里就不演示
要求是将自己的容器打包成镜像上传,于是先要将要求1中运行的mytomcat容器打包为镜像:
docker commit mytomcat mytomcat:v1
使用docker image ls进行验证,得到输出
[root@iZwz ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat v1 eaa2d1ecc9f4 6 seconds ago 680MB
tomcat latest 24207ccc9cce 4 days ago 680MB
registry 2 b8604a3fe854 4 weeks ago 26.2MB
可以看到mytomcat:v1已经存在了,这个时候我们要对这个镜像进行tag标识要推送到私有库的镜像:
docker tag mytomcat:v1 localhost:5000/mytomcat:v1
继续使用ls查看镜像,可以看到已经多出了一个localhost开头的镜像:
[root@iZwz91gvv1j6jku0ez9hmkZ ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat v1 eaa2d1ecc9f4 41 minutes ago 680MB
localhost:5000/mytomcat v1 eaa2d1ecc9f4 41 minutes ago 680MB
tomcat latest 24207ccc9cce 4 days ago 680MB
registry 2 b8604a3fe854 4 weeks ago 26.2MB
接下来将这个你打包好的镜像推送到私有库内:
docker push localhost:5000/mytomcat:v1
等待推送完成:
[root@iZwz91gvv1j6jku0ez9hmkZ ~]# docker push localhost:5000/mytomcat:v1
The push refers to repository [localhost:5000/mytomcat]
8096205ddd5d: Pushed
0a62582891d7: Pushed
516aad68a0ec: Pushed
f79d29235239: Pushed
5c81f9330d99: Pushed
927f9fcef4cf: Pushed
a81f1846a0d2: Pushed
3b441d7cb46b: Pushed
d3710de04cb3: Pushed
91f7336bbfff: Pushed
e2e8c39e0f77: Pushed
v1: digest: sha256:027b4b6270ba0c0667c1966dc1c372be3fbc1ed279e21bd5883879b009a9693b size: 2632
推送部分大功告成!!
然后我们进行拉取私有库的操作
先将localhost的本地镜像删除(这里并不会删除私有库内的镜像):
docker image rm localhost:5000/mytomcat:v1
然后重新从私有库拉取:
docker pull localhost:5000/mytomcat:v1
进行 docker image ls 操作查看下是否拉取成功:
[root@iZwz91gvv1j6jku0ez9hmkZ ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat v1 eaa2d1ecc9f4 47 minutes ago 680MB
localhost:5000/mytomcat v1 eaa2d1ecc9f4 47 minutes ago 680MB
tomcat latest 24207ccc9cce 4 days ago 680MB
registry 2 b8604a3fe854 4 weeks ago 26.2MB
恭喜完成!
