欢迎大家关注我的以下主页,尤其是今日头条!!!谢谢🙏🙏🙏
csdn:雷园的csdn博客
个人博客:雷园的个人博客
简书:雷园的简书
今日头条:来自底层程序员的仰望
Docker的安装、镜像拉取以及启动第一个Tomcat镜像
开头说几句
- 上一章节中,我们简单的介绍的Dockerfile、Docker镜像、Docker容器。
- 在这一节当中,我们来说一下Docker在各个系统版本中的安装以及应用。
- 后面我们还会提到外网端口映射等等有趣的知识点,希望大家多多支持哦!
正式开始
在这一章节中我们将介绍以下内容
- Linux下Docker的安装。
- MacOS下Docker的安装。
- Windows下Docker的安装。
- 拉取第一个实用镜像——Tomcat镜像。
- 通过Docker启动第一个Web项目。
- 最后说一下日志以及项目挂载。
- 这里小小的透露一下,下一章我们来说一下Docker占用空间特别大如何快速解决?
Linus下Docker的安装
CentOS、Ubuntu安装
-
首先切换到root用户,不然没权限安装以及卸载软件。
$ su root # 或者 $ sudo -i # 反正有很多种方式切换到root,大家自行抉择
-
先别管以前装没装过,直接卸载一波。
# CentOS $ yum -y remove docker docker-engine docker.io # Ubuntu $ sudo apt-get remove docker docker-engine docker.io
-
这里我们就不说复杂的apt、yum安装了,针对这两个Linux发行版,官方推出了安装脚本。
-
以下脚本安装方式随是官方推出,但同样不建议大家用于生产环境。
-
下载安装脚本:
$ curl -fsSL get.docker.com -o get-docker.sh
-
执行安装脚本
$ sh get-docker.sh # 国内访问安装源很慢,建议大家使用如下命令使用阿里源进行安装 $ sh get-docker.sh --mirror Aliyun
-
启动Docker服务并将其加入到开机启动
# 以下为两种服务启动方式,根据不同Linux发行版自行选择 # systemctl服务启动并加入开机启动 $ systemctl start docker $ systemctl enable docker # service服务启动方式 $ service docker start $ chkconfig docker on
-
只有
root
用户和docker
组的用户才可以访问 Docker。出于安全考虑,Linux系统上不会直接使用root
用户。所以我们需要创建docker用户组并将需要使用docker服务的用户添加到组内。# 创建用户组 $ groupadd docker # 添加用户到组内 $ usermod -aG docker User
-
需要关闭终端重新登录然后尝试使用User使用调用Docker服务。
MacOS下Docker的安装
-
系统要求:Docker For Mac 要求系统最低版本为 macOS Sierra 10.12。
-
如果你的Mac安装了Homebrew,那可以直接在终端进行安装。
$ brew cask install docker
-
可惜啊,我没有安装这个玩意,所以我选择了使用客户端进行安装。
-
需要手动下载安装包,地址这里就不给大家贴出来了,大家自行去Docker HUB官方下载一下吧。
-
下载好之后打开
.dmg
文件,将Docker图标拖入到Applications中即可完成安装。 -
后面的操作就都是界面操作了,高端操作就靠大家自己摸索了。
Windows下Docker的安装
- 系统要求:Docker For Windows要求系统版本必须为Windows10以及且必须为 64 位非家庭版,建议大家使用企业版或者专业版,虽然伟大的网友们出了Win7的安装方式,但是我这里不做推荐,实在太麻烦了,不如换个系统。
- 系统服务要求:Windows中必须开启 Hyper-V 虚拟化服务。否则Docker服务正常启动。
- 同样去Docker HUB官方下载Windows安装包。
- 使用方式无他,启动后使用命令提示符(windows终端)使用就可以。
这里额外说一下镜像加速的问题
Linux下镜像加速
-
在
/etc/docker/daemon.json
中写入如下内容(如果文件不存在请新建该文件){ "registry-mirrors": [ "https://dockerhub.azk8s.cn", "https://reg-mirror.qiniu.com" ] }
-
请注意json格式正确,否则服务将无法正常启动
-
重启服务
# systemctl重启 $ systemctl restart docker # service重启 $ service docker restart
Windows,MacOS下镜像加速
-
Docker服务启动之后,任务栏中会有对应图标。
-
右键选择
Settings
,然后选择Docker Engine
,同样修改JSON文件,修改完后保存并重启服务即可。{ "registry-mirrors": [ "https://dockerhub.azk8s.cn", "https://reg-mirror.qiniu.com" ] }
拉取第一个实用镜像——Tomcat镜像
-
个人最常用的web容器就是Tomcat,所以今天我们的第一个镜像就以Tomcat为例,简单的说一下镜像的拉取等操作。
-
这里我们以Linux版本为例,其实所有的版本均相同。
-
首先我们去docker hub中查看镜像版本,并选择自己需要的版本。
-
通过如上步骤找到自己需要的版本并复制pull语句。
-
在Docker中执行pull命令
docker pull tomcat:jdk8-adoptopenjdk-openj9
。
通过Docker启动第一个Web项目并实现项目挂载以及日志挂载
-
上面呢我们说了拉取Tomcat镜像,那接下来我们就说一下如何通过这个镜像运行我们自己的Web服务。
-
首先我们准备一个打包好的HelloWorld.war,这是我们写的一个最最简单的Web应用,源码我就不贴出来了。
-
接下来就是启动我们的镜像了,这里需要注意了!!!
-
一般来说我们tomcat使用的端口默认是8080,如果有特殊需求会去改动,但是镜像中默认只有8080。
-
而且Docker容器与宿主机是相对隔离的,所以容器内的端口我们从外部是无法访问的。
-
所以我们需要对端口进行映射,也就是使用
-p 宿主机端口:容器端口
参数对容器端口进行映射,这样我们才能通过宿主机的IP地址对容器内的服务进行访问。 -
其次我们的HelloWorld.war实在镜像外的,镜像内没有,那我们如何将其放入容器内呢,有两种办法。
-
第一种就是先启动容器,后将HelloWorld.war复制到容器当中实现热加载或着对容器进行重启。
# 1. 启动tomcat容器,这里我们将容器的8080端口映射到宿主机的8080端口 $ docker run -d -p 8080:8080 --name tomcat tomcat:jdk8-adoptopenjdk-openj9 # 2. 查看容器ID,第一列即为容器ID $ docker ps # 3. 复制HelloWorld.war到运行的容器当中 $ docker cp ./HelloWorld.war 容器ID:/usr/local/tomcat/webapps/
-
第二种就是在启动镜像的同时将HelloWorld.war挂载到
/usr/local/tomcat/webapps/
目录中。$ docker run -d -p 8080:8080 -v ./HelloWorld.war:/usr/local/tomcat/webapps/ --name tomcat tomcat:jdk8-adoptopenjdk-openj9
-
同理我们一般会将日志文件挂载到宿主机以便查看、排障以及日志切割。这里我们就不细说了只需要挂载容器中
/usr/local/tomcat/logs/
目录到宿主机即可。
最后说两句
- Docker的应用远不止于此,希望大家持续关注,多多支持。
- 后面我们还有很多要说的,编排啊集群等等。
- 如果大家有什么问题可以私信我,一定回复大家。
- 最后感谢各位的持续关注!!!我们下一章见。