二、Docker的快速部署及常用指令
Docker是容器化平台
- Docker是提供应用打包,部署和运行应用的容器化平台
Docker体系结构
客户端通过REST API发送请求指令给服务端,请求方式是http协议,兼容性和扩展性很好。
c/s架构,服务器和客户端可以不用安装在一台电脑,客户端通过发送请求可以管理多台服务器,服务端复制镜像的拉取和执行。
容器与镜像
- 镜像:镜像是只读的文件,提供了运行程序完整的软件资源和硬件要求,是应用程序的“集装箱”(windows系统镜像)
- 容器:是镜像的实例,由Docker负责创建,容器之间彼此隔离。(安装好的动态windows实例)
Docker执行流程
- Client:发送命令
- DOCKER_HOST:接收并处理命令
- Registry:注册中心提供镜像的下载
Docker的常用命令
- docker pull 镜像名<:tags>:从远程仓库拉取镜像,tags代表镜像的版本,不指定默认拉取最新版本
- docker images :查看本地存在的镜像
- docker run 镜像名<:tags>:创建容器,启动应用。如果本地没有指定镜像,docker会先去远程仓库拉取默认版本镜像,然后执行。
- docker ps:查看正在运行中的镜像
- docker rm <-f> 容器id:删除容器。如果容器正常运行,需要加-f,可以进行强制删除。
- docker rmi <-f> 镜像名<:tags>:删除镜像。加上<:tags>,删除指定版本的镜像。<-f>指定镜像已存在创建好的容器,也直接删除。
Docker宿主与容器通信
实现外部访问,需要将docker容器的端口与宿主机的端口进行映射。客户端可以不关注容器内部实现,只进行对应端口访问。
创建Tomcat容器
1.拉取tomcat镜像:docker pull tomcat
2.查看本地存在的镜像:docker images
3.创建tomcat容器,并启动:docker run -p 8000:8080 -d tomcat
- -p 8000:8080:表示将容器的8080端口映射到宿主机的8000端口
- -d:表示后台运行
4.查看应用端口号:netstat -tulpn
5.查看运行中的容器信息:docker ps
6.访问tomcat:访问失败
7.查看虚拟机防火墙设置:
-
查看防火墙状态:service firewalls status
-
关闭防火墙: systemctl stop firewalld.service
-
禁止防火墙开机启动: systemctl disable firewalld.service
-
启动docker: systemctl start docker
-
重启docker: systemctl restart docker
-
开启防火墙可用:systemctl enable firewalld.service
-
开启防火墙:systemctl start firewalld.service
8.关闭防火墙后,浏览器访问tomcat:
9.进入服务器内部:docker exec -it 5ddbee06ad1e /bin/bash
10.进入webapps目录,查看无内容,复制webapps.dist目录下内容到webapps目录:cp -r webapps.dist/. webapps
11.浏览器访问tomcat:
12.删除容器:docker rm d49bbb726ce4
建议先停止容器运行,再删除容器。如果想强制删除,加上-f参数,容易出现其他问题。
13.删除镜像:docker rmi hello-world
如果此镜像有正在运行的容器,建议先暂停容器,然后删除容器,最后删除镜像。-f 强制删除,容易产生意料之外的问题。
tomcat容器内部结构
容器内部底层是一个mini的linux操作系统,只保证最基本的功能,占用资源非常小。
在容器中执行命令
-
进入容器:docker exec -it 5ddbee06ad1e /bin/bash
格式:docker exec [-it] 容器id 命令
exec : 表示在对应容器中执行命令
-it :采用交互式方式执行命令
5ddbee06ad1e :容器id
/bin/bash :开启接收命令的终端窗口 -
查看系统版本:cat /proc/version
-
查看java版本:java -version
-
退出容器:exit
-
Docker在宿主机中的目录:cd /var/lib/docker
容器的生命周期
- 创建容器:docker create tomcat
docker ps:查看正在运行的容器
docker ps -a :查看所有容器
-
启动容器:docker start 62688ff10d4b
-
挂起容器:docker pause 62688ff10d4b
-
恢复运行:docker unpause 62688ff10d4b
-
暂停(退出)容器:docker stop 62688ff10d4b
- 重新启动容器:docker start 62688ff10d4b
- kill容器:docker kill 26c0fe766785
- 删除容器:docker rm -f 62688ff10d4b
- 容器内存溢出:kill容器,检查是否重启:是返回start状态,否变为stop状态。
Docker常用地址
- 远程仓库地址:https://hub.docker.com/