Docker
1、引言
1.1 环境不一致
开发环境和测试环境、生产环境不一致,导致运行结果不一样!
1.2 隔离性
在不同的系统中运行也会存在问题,Linux是一个多任务多用户的操作系统,
1.3 弹性伸缩
在项目运行高峰情况可能会出现一些其他问题
1.4 学习成本
不同的功能,需要不同的学习成本!
2、Docker介绍
Linux的虚拟化技术发展而来的一个容器化技术(LXC)
虚拟化技术在实际中会有资源限制问题
容器化技术在虚拟化之上发展而来的
Paas(平台及服务)-》Docker
Docker核心思想
- 集装箱:将“环境”进行打包
- 标准化:
- 运输的标准化
- 命令的标准化
- 提供了REST的API
- 隔离性:Docker运行在集装箱中的内容,是相互隔离的
- 中央仓库:注册中央,
- 镜像:集装箱 Image
- 容器:运行起来的镜像 Container
3、Docker的安装
3、Docker的安装
3.1 下载Docker的依赖环境
安装DOcker之前先需要将依赖环境环境全部下载,安装好!
- yum-utils
- device-mapper-persistent
- lvm2
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent lvm2
3.2 指定Docker的镜像
默认下载Docker是走国外的镜像,速度慢,我们建议设置成阿里云镜像,速度快点
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
3.3 安装Docker
采用yum方式安装
yum makacache fast
yum -y install docker-ce
[root@localhost ~]# yum makecache fast
[root@localhost ~]# yum -y install docker-ce
3.4 启动并测试
安装成功后需要手动启动,
systemctl start docker #启动docker
systemctl stop docker #停止
systemctl enable docker #开机自启
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]# docker run hello-world #测试运行一个hello-world镜像
[root@localhost ~]# docker pull daocloud.io/library/tomcat:8.5.15-jre8
8.5.15-jre8: Pulling from library/tomcat
be666fb3dd35: Pull complete
83be8b767650: Pull complete
ad7940329f07: Pull complete
6007b3fdd150: Pull complete
6de3789acb85: Pull complete
2c52f460633d: Pull complete
c4f88410d7df: Pull complete
acd0245e2750: Pull complete
ed136b3264ed: Pull complete
00a6dbe037a9: Pull complete
088df73547d8: Pull complete
d9d00342f8e2: Pull complete
a826056d1aca: Pull complete
6d792d98c98a: Pull complete
Digest: sha256:0400f5d82666cf5aef26a4beac7640f08f9c468e5ef32afb5f6aff46ea6f8561
Status: Downloaded newer image for daocloud.io/library/tomcat:8.5.15-jre8
daocloud.io/library/tomcat:8.5.15-jre8
4、Docker的中央库
在Docker中用来存储镜像的
- Docker官方的中央仓库:最全,但是下载速度慢
- https://hub.docker.com
- 国内镜像:网易蜂巢,daoCloud等等
- https://hub.daocloud.io/ (推荐使用)
- https://c.163yun.com/hub
- 一般在公司内部也会创建docker私服仓库,方便拉取镜像
#需要创建配置文件/etc/docker/daemon.json,并添加如下配置
{
"registry-mirrors": ["https://registry.docker-ce.com"],
"insecure-registries":["ip:port"]
}
#重启服务
systemctl daemon-reload
systemctl restart docker
5、Docker的镜像(images)操作[重点]
5.1 拉取镜像
从中央中将镜像(文件)下载到本地
- docker pull 镜像名称:版本
- daocloud.io/library/tomcat:9-jdk8-openjdk
[root@localhost ~]# docker pull daocloud.io/library/tomcat:8.5.15-jre8
5.2 查看本地镜像
查看本地已经下载了哪些镜像,镜像信息包括:镜像名称,版本,镜像ID,更新时间,大小
- docker images
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
daocloud.io/library/tomcat 8.5.15-jre8 b8dfe9ade316 3 years ago 334MB
5.3 删除镜像
docker rmi 镜像ID
[root@localhost ~]# docker rmi aa
Untagged: daocloud.io/library/mysql:5.7.4
Untagged: daocloud.io/library/mysql@sha256:0f3b5658a3fbdbb0283d004b09d326fe827b4139886253a9d51d74e51b9d6808
Deleted: sha256:aa5364eb3d851d4b1fe7f1b5c0a259cbe0d57e87f123d5ae317fbd985bd11fc4
Deleted: sha256:31078e8f536e2fc3915638e41e876c291155e98adbdef614a4dca503b5fa7d43
Deleted: sha256:d9be9ad130f657aed2837dfe01b4d5b82764c51c13962e63fc38bfef381254db
Deleted: sha256:e51fd7c9673669a9c76296e29138a0a6da7eb264e804295c7d9b3f7f05670f1b
Deleted: sha256:ef9333bcb153eee2b0bdf52c6a53c78da22c35deef24b3f43e412604e640c1f3
Deleted: sha256:a3837c37431a2b01578be4a509df04942ccbc287ef885aa6ab02852fd33dfec3
Deleted: sha256:f20d566f307a0107675dc15a9dc5cf827ae3281e4acb6397fb947e713a52d7e2
Deleted: sha256:60da8092846218a71b003b45a7ee553f974112110ffd98a2aa8de93f1a8c2ae1
Deleted: sha256:4c4578a383e11f5ae4b5db0d59e8a1762c184e4fbb54ca3b1ed516ec69c6f693
Deleted: sha256:090e078487b69bd1a30cb1479325367380cf3e69ba8c7a2ea08d1cce8f850b5c
Deleted: sha256:07d12a41728f039246bebc091e14965fee7c61e3958db62673a821bb6d16f4fc
Deleted: sha256:5c61ab866d05354a3bd41c7ccb9d7a799d8da37364fbd586d0b04cd114cfdfaf
Deleted: sha256:36478ba45f40d1a55ba81b3b4cc6fd6c63bab6816a725b1160f610bce4362d51
Deleted: sha256:ae692985325f1fddb9216161ad8f0466f464867988ca390567db794cbfcc2302
Deleted: sha256:8895c381a5d700c5d75b39d8adad98176909fec9bc9cf2ce41b652c8fe87b2e7
Deleted: sha256:29c8e213723f8a4698ffc0d8f33bd0012f9027d5e818f373fcf71459a8df3b7b
Deleted: sha256:7ed169984f83820967dec25d312b5e717e6e717e44b7a0157c187104eeea424e
Deleted: sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef
[root@localhost ~]#
5.4 镜像的导入和导出
有时候我们可以考虑使用导入和导出将镜像进行保存,这样就减少下载过程
1、导出:docker save -o 导出路径 镜像id
[root@localhost ~]# docker save -o /root/mytomcat b8 #将b8镜像导出到本地,名称为mytomcat
[root@localhost ~]# docker rmi b8
Error response from daemon: conflict: unable to delete b8dfe9ade316 (cannot be forced) - image is being used by running container 6e408f070d7c #因为容器正在运行
[root@localhost ~]# docker stop mytomcat #停止容器
mytomcat
[root@localhost ~]# docker ps #查看运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker rmi b8 #我们发现不能删除启动和停止容器的镜像
Error response from daemon: conflict: unable to delete b8dfe9ade316 (must be forced) - image is being used by stopped container 6e408f070d7c
[root@localhost ~]#
[root@localhost ~]# docker ps -a #查看所有的容器(包括已经停止的容器)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e408f070d7c b8 "catalina.sh run" 40 minutes ago Exited (143) About a minute ago mytomcat
[root@localhost ~]# docker rm mytomcat #删除容器
mytomcat
[root@localhost ~]# docker rmi b8
Untagged: daocloud.io/library/tomcat:8.5.15-jre8
Untagged: daocloud.io/library/tomcat@sha256:0400f5d82666cf5aef26a4beac7640f08f9c468e5ef32afb5f6aff46ea6f8561
Deleted: sha256:b8dfe9ade31661d865d11388245a3382365b197786ad6c0077f3567ac03bb570
Deleted: sha256:a31c4bd773fa4d1c1c56eb44d200d3be4bb4a0d31084fb7402db0b7e7e4d740f
Deleted: sha256:646254632b3dc6a3eca043c7bf952d252eec37508f42e115795b25b4bc420e24
Deleted: sha256:078c54c5eadc786663009fe4b1b30c793ef31be09a1218372c94f33893d68be0
Deleted: sha256:236865f1b823601f41a1ee16614aff5934c420f935a2f81815a61cd0a8d03fe0
Deleted: sha256:4877af8b2dbb41cf6ddbe506b3498a86197a0f24b24896d89af38db23777cf09
Deleted: sha256:932865e35aec27c1337325abf51889e82e34d1bad62fec4a010ce3d606ae0ea3
Deleted: sha256:78eaa1bf5ccdab00cce3ef3b34e3fb565d15329723e5b7f93bf60265826c55f8
Deleted: sha256:78367d8bfbdd186003a629384189a2203fd63e22a6f4bc5418a63a9f2581666a
Deleted: sha256:efbd63cd7dbd42723c240102d4228236da91690ba3b297df889ea218d23edebc
Deleted: sha256:fa186606764c107c5db39cc31d7faa724f743576e898c17b9c6147e450d9c370
Deleted: sha256:c8c3ca96eb5fb848ef062913ece0284563dac491320aab7c3e46cebba11acb39
Deleted: sha256:e4a93bc5ab2fe334eb93d265acce6aa0f190b71e9a08b75e6fe0fc4c8ed5cc7c
Deleted: sha256:0f7e33898490bdfec7fabce3b451f60361c7b5bc83c53ef1ab27a8b41969ff4c
Deleted: sha256:0d960f1d4fba2435d731fee5d1e68e25058bc1b22921bb95dbab98149548ce9e
[root@localhost ~]#
2、导入镜像
- docker load -i 镜像文件
[root@localhost ~]# docker load -i mytomcat
0d960f1d4fba: Loading layer 129.3MB/129.3MB
71ce2dc7f761: Loading layer 45.45MB/45.45MB
d1de89c613d4: Loading layer 1.226MB/1.226MB
32ceb20ee08e: Loading layer 3.584kB/3.584kB
d69122875478: Loading layer 3.584kB/3.584kB
1ae7b18f5354: Loading layer 1.536kB/1.536kB
0583af55a445: Loading layer 141.6MB/141.6MB
80bee1a65ead: Loading layer 425.5kB/425.5kB
156545607418: Loading layer 2.56kB/2.56kB
a56217ad4142: Loading layer 5.12kB/5.12kB
362ed0033c5c: Loading layer 7.57MB/7.57MB
990331df9550: Loading layer 134.1kB/134.1kB
1334a29f0bed: Loading layer 16.84MB/16.84MB
10ec38b51da1: Loading layer 2.048kB/2.048kB
Loaded image ID: sha256:b8dfe9ade31661d865d11388245a3382365b197786ad6c0077f3567ac03bb570
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> b8dfe9ade316 3 years ago 334MB
修改镜像名称:
docker tag 镜像id 新的镜像名:版本
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> b8dfe9ade316 3 years ago 334MB
[root@localhost ~]# docker tag b8 tomcat:8.0 #给本地库中镜像重新命名
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 8.0 b8dfe9ade316 3 years ago 334MB
6、容器(container)操作
6.1 运行容器
将镜像运行起来叫一个容器,如果在运行的过程中本地没有对应的镜像则会自动下载
- docker run 镜像标识:版本
- -d 后台运行
- -p 映射端口
[root@localhost ~]# docker run -d -p 8080:8080 --name mytomcat b8
6e408f070d7c3e546d4602c35ef8b70c99a4706e8bb4dc3c8384ec6235f7d18c
# -d :在容器后台执行
# -p :端口映射 宿主机端口:容器端口
# --name:启动容器的名称
6.2 查看容器
查看正在运行的容器
- docker ps
查看所有的运行包括已经停止的容器
- docker ps -a
- docker ps -qa #只显示容器的标识
6.3 查看容器日志
查看容器的日志目的是为了方便查看容器的运行过程
docker logs -f 容器id
-f:可以动态查看日志信息
6.4 进入容器内部
进入容器内部我可以直接对容器进行相关操作
- docker exec -it 容器Id/容器名称 bash
[root@localhost ~]# docker exec -it mytomcat bash
root@269f38bb36e8:/usr/local/tomcat# ls
6.5 复制内容到容器
将宿主机中的内容拷贝到容器内部
- docker cp 文件名称 容器Id:容器内部路径
[root@localhost ~]# docker cp timg.jpg b7:/usr/local/tomcat/webapps
6.6 容器的启停
启动容器、停止容器、删除容器
- docker run 创建容器
- docker start 容器id
- docker restart 容器id
- docker stop 容器id
- docker rm 容器id
[root@localhost ~]# docker stop b7 #停止容器
[root@localhost ~]# docker start b7# 启动容器
[root@localhost ~]# docker rm b7 #删除容器
[root@localhost ~]# docker rm $(docker ps -qa) #删除所有容器
7、Docker应用(重点)
实现SSM项目的Docker部署!
- tomcat容器
- mysql容器
- 拷贝项目到tomcat容器中
- 测试
7.1 Docker安装Tomcat
[root@localhost ~]# docker run -d -p 8080:8080 --name tomcat daocloud.io/library/tomcat:8.5.15-jre8
7.2 安装MySQL
建议参考官方说明进行容器安装
https://hub.daocloud.io/repos/fa51c1d6-9dc2-49d9-91ac-4bbfc24a1bda
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 daocloud.io/library/mysql:5.7.4
[root@localhost ~]# docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 daocloud.io/library/mysql:5.7.4
Unable to find image 'daocloud.io/library/mysql:5.7.4' locally
5.7.4: Pulling from library/mysql
a3ed95caeb02: Pull complete
a9816d489674: Pull complete
b1f7ef5cc072: Pull complete
c7110e7a9f56: Pull complete
d78d8ec4f800: Pull complete
52e42de90064: Pull complete
c8a5c40648db: Pull complete
c535209921b3: Pull complete
Digest: sha256:0f3b5658a3fbdbb0283d004b09d326fe827b4139886253a9d51d74e51b9d6808
Status: Downloaded newer image for daocloud.io/library/mysql:5.7.4
f04f0045c129bc95a3ae1fefc20f1b9608ba0694b04ba0695c4a76311830bd2e
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql (48774327e6fa04165eef426fb17ffa97bcb7ac245105330ef714d327170435c1): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use.
我们发现启动MySQL容器是出现了,端口被占用,原因是因为我们的宿主机中已经安装了一个mysql,它已经将3306端口提前占用了,所有我们不能再将3306端口分配给该容器了!
解决方案:
- 将宿主机上的mysql停止(建议)
- 重新修改容器的映射端口
[root@localhost ~]# systemctl stop mysqld #停止mysql服务
[root@localhost ~]# docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 daocloud.io/library/mysql:5.7.4
e02feb151320d9efda355b144a0d3dcad989f31e1d3ed90da85e16ac3347105a
7.3 部署项目
1.创建对应的数据库环境
2.将项目的相关内容修改成docker的环境内容
- 数据连接信息
- 路径
3.在maven中进行项目打包
mvn clean package
4.将生产后的war包上传到虚拟机中,然后将其拷贝到tomcat容器中
[root@localhost ~]# docker cp ssm.war tomcat:/usr/local/tomcat/webapps
5.修改项目名,将其改成ROOT,访问时可以不同带项目名了
#只要将war文件上传到tomcat容器中,会自动被解包,我们只需要将ssm文件名修改成ROOT
root@1f033c864f52:/usr/local/tomcat/webapps# mv ssm ROOT
通过浏览器测试项目的执行结果!完美的
8、数据卷
在我们 部署项目的时候需要拷贝war包到容器中,并且修改容器中项目的信息,不方便!
数据卷:在宿主机中和容器中建立一个目录的映射,可以方便的通过宿主机对应的目录进行文件操作,会自动反应到容器中去了, 这样就可以避免直接操作容器
8.1 创建数据卷
语法:docker volume create 数据卷名称
创建好一个数据卷之后,会自动生成一个对应的目录/var/lib/docker/volumes/数据集名称/_data
[root@localhost volumes]# docker volume create tomcat_volume #创建数据卷
tomcat_volume
[root@localhost volumes]# ll #/var/lib/docker/volumes
总用量 24
drwxr-xr-x. 3 root root 19 8月 12 16:25 3a636143e43a437d31b222671c0dc9a70a211546dae1764baf434a7c1ff0344f
drwxr-xr-x. 3 root root 19 8月 12 16:19 9bbdec606342853f8e4f381a4518f8ce7d9be2933d8494f98194752e5c3f4a24
-rw-------. 1 root root 32768 8月 12 17:12 metadata.db
drwxr-xr-x. 3 root root 19 8月 12 17:12 tomcat_volume
8.2 查看数据卷
通过[docker volume inspect 数据卷名称]查看数据卷的详细信息
[root@localhost _data]# docker volume inspect tomcat_volume
[
{
"CreatedAt": "2020-08-12T17:12:03+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/tomcat_volume/_data",
"Name": "tomcat_volume",
"Options": {},
"Scope": "local"
}
]
8.3 查看所有数据卷
docker volume ls
[root@localhost _data]# docker volume ls
DRIVER VOLUME NAME
local 3a636143e43a437d31b222671c0dc9a70a211546dae1764baf434a7c1ff0344f
local 9bbdec606342853f8e4f381a4518f8ce7d9be2933d8494f98194752e5c3f4a24
local tomcat_volume
8.4 删除数据卷
docker volume rm 数据卷名称
[root@localhost _data]# docker volume rm mysql_volume
mysql_volume
8.5 容器数据映射
映射有两种方式:
1、通过数据卷名称,启动容器后会自动将容器对应目录中的内容同步到数据卷中
docker run -v 数据卷名:容器内部目录 镜像id
2、通过具体路径设置
docker run -v 路径:容器内部目录 镜像id
采用第一个方式启动容器,并设置数据卷的映射!
[root@localhost _data]# docker run -d -p 8080:8080 --name tomcat -v tomcat_volume:/usr/local/tomcat/webapps b8
采用第二种方式启动容器(推荐使用这种,因为这个可以指定任意目录)
[root@localhost demo]# mkdir /opt/mytomcat_data
[root@localhost mytomcat_data]# docker run -d -p 8081:8080 --name yourtomcat -v /opt/mytomcat_data/:/usr/local/tomcat/webapps b8
b4766a5daabeedf4ff9d6843398072b037d60f3df59836537cab8182c24fa001
修改虚拟机中的ip地址
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
9、Dockerfile(了解)
我们之前用的mysql和tomcat镜像都是从中央库中下载的。这些镜像都是别人创建好之后上传上去的。
如果我们需要创建自定义镜像就需要一个Dockerfile文件,这个文件中都定义关于自定义镜像的相关信息!
9.1 Dockerfile文件的规范
from:指定当前镜像依赖的环境
copy:将当前指定的路径文件拷贝到自定义镜像中
workdir:声明镜像默认的工作目录
run:执行命令,可以编写多个
cmd:需要执行命令,在指定的workdir目录下开始执行
#比如:我们需要自己构造一个镜像,将当前目录下载ssm.war项目发布到一个tomcat容器中去
from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm.war /usr/local/tomcat/webapps
run mv ssm ROOT
9.2 通过Dockerfile文件构造镜像
docker build -t 镜像名称:版本
.
#docker build名称需要在Dockerfile文件所在的目录下去执行
[root@localhost ~]# docker build -t mytomcat:1.0.0 .
Sending build context to Docker daemon 16.98MB
Step 1/2 : from daocloud.io/library/tomcat
latest: Pulling from library/tomcat
d6ff36c9ec48: Pull complete
c958d65b3090: Pull complete
edaf0a6b092f: Pull complete
80931cf68816: Pull complete
bf04b6bbed0c: Pull complete
8bf847804f9e: Pull complete
fa776a6e7e37: Pull complete
586534165c2f: Pull complete
0f6d126a6962: Pull complete
9f3317edffb3: Pull complete
Digest: sha256:df8f09ffd52faac5314185d6d30f5f89dc1488913893e8ecd89d5173c3eb0cff
Status: Downloaded newer image for daocloud.io/library/tomcat:latest
---> 2ae23eb477aa
Step 2/2 : copy ssm.war /usr/local/tomcat/webapps
---> b1e679b433b5
Successfully built b1e679b433b5
Successfully tagged mytomcat:1.0.0
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat 1.0.0 b1e679b433b5 3 minutes ago 664MB
daocloud.io/library/tomcat latest 2ae23eb477aa 7 days ago 647MB
daocloud.io/library/tomcat 8.5.15-jre8 b8dfe9ade316 3 years ago 334MB
daocloud.io/library/mysql 5.7.4 aa5364eb3d85 5 years ago 252MB
10、Docker-compose(重点)
在之前创建容器时需要带有大量的参数配置,不利于使用,麻烦!而Docker-compose就非常方便管理我们的容器,而容器的一些信息只需要通过docker-compose.yml文件就可以进行维护了!
10.1 下载并安装Docker-compose
我们下载的docker-compose版本是1.24.1版本:docker-compose-Linux-x86_64
因为这个就是一个可以直接执行的命令文件
#修改文件名
[root@localhost ~]# mv docker-compose-Linux-x86_64 docker-compose
#修改文件的权限
[root@localhost ~]# chmod 777 docker-compose
#建议将该文件拷贝到/usr/local/bin目录中去
[root@localhost ~]# mv docker-compose /usr/local/bin/
#配置环境变量
[root@localhost bin]# vim /etc/profile
#添加如下内容:
[root@localhost bin]# source /etc/profile
#测试docker-compose命令
[root@localhost ~]# docker-compose
Define and run multi-container applications with Docker.
Usage:
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
docker-compose -h|--help
Options:
-f, --file FILE Specify an alternate compose file
(default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name
(default: directory name)
--verbose Show more output
10.2 Docker-compose管理容器
采用Docker-compose创建MySQL和tomcat容器!
采用yml格式提供具体的容器信息
version: "3.1"
services:
mysql:
restart: always # 随着docker的启动,而启动这个容器
image: daocloud.io/library/mysql:5.7.4 #指定镜像
container_name: mysql #指定容器名称
ports:
- 3306:3306 #指定端口号的映射
environment:
MYSQL_ROOT_PASSWORD: 123456 #指定mysqlroot用户的密码
TZ: Asia/shanghai
volumes:
- /opt/docker_tomcat/mysql_data:/var/lib/mysql #指定数据卷的映射
tomcat:
restart: always
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat
ports:
- 8080:8080
environment:
TZ: Asia/shanghai
volumes:
- /opt/docker_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
- /opt/docker_tomcat/tomcat_logs:/usr/local/tomcat/logs
10.3 通过Docker-compose命令构建容器
docker-compose up -d #根据docker-compose.yml文件构建容器
[root@localhost ~]# docker-compose up -d #注意在该命令执行的目录下需要存在docker-compose.yml文件
docker-compose down #关闭并删除容器
[root@localhost ~]# docker-compose down
docker-compose start|stop|restart 启动|停止|重启
docker-compose ps #查看哪些容器是由docker-compose进行管理的
docker-compose logs -f #查看日志