Docker(二)、linux环境Docker的部署以及构建镜像

一、docker部署

1、快速部署常用的命令:

1、表示从远程仓库抽取镜像:docker pull 镜像名<:tags>   
2、查看本地镜像:docker images 
3、创建容器,启动应用 : docker run 镜像名<:tags>
ps:如果镜像还没有被抽取,此时会先抽取镜像,然后安装到本地,启动镜像
4、查看正在运行中的容器:docker ps
5、删除容器, <-f>表示强制删除:docker rm <-f> 容器id
6、删除指定版本的镜像, <-f>表示 (即便存在对应容器) 强制删除:docker rmi <-f> 镜像名<:tags>

快速部署命令概览图:
在这里插入图片描述

1.1、demo-部署tomcat

下载默认版本(当前下载使用最多的版本): docker pull tomcat
查看有哪些本地镜像:docker images

下载指定版本[版本号从hub.docker.com 即docker中央仓库获取到的]:

docker pull tomcat:8.5.46-jdk8-openjdk 

docker 镜像仓库访问不了,可以参看阿里镜像:https://developer.aliyun.com/packageSearch?word=tomcat

创建对应容器,才能提供服务:docker run tomcat
启动成功后,可以看到端口8080,若想访问,需要做宿主机和容器的端口映射,操作如下:

docker run -p 8000:8080  -d tomcat

查看正在使用的容器:docker ps
删除容器:

docker stop 容器id
docker rm 容器ID

删除镜像:

docker rmi 镜像<:tags>

宿主机里有docker容器tomcat,tomcat默认端口8080,docker做了一个宿主机和容器的端口映射。外侧浏览器通过宿主机ip和端口8000访问tomcat
转发给内部8080端口。

1.2、tomcat容器内部结构

1.2.1、每个tomcat容器,都包含三个组件
  • 1、linux系统,提供最底层的linux命令,此操作系统只提供安装jdk最基本的安装环境,尺寸非常小【tomcat基本运行环境,绝大多数docker容器都内置了linux系统,进入到容器内部,直接进行linux操作就可以了】
  • 2、此基础上,docker 自动安装jdk1.8.0_222
  • 3、tomcat 【eg:Apache Tomcat/8.5.46 】
1.2.2、在容器内部执行命令

格式:docker exec [-it] 容器id

exec 在对应容器中执行命令
-it 采用交互方式执行命令

如果你想进入一个容器,在容器内部进行后续的操作:docker exec -it 容器ID /bin/bash

ps: /bin/bash :开启一个接收后续命令的终端

demo:
获取容器ID:docker ps
进入容器内部:docker exec -it 45ce1a4ba159 /bin/bash
可执行的linux命令有许多,eg:
查看操作系统版本:cat /proc/version
查看jdk版本:java -version
退出容器,回到宿主机:exit

在宿主机,查看linux 镜像和容器默认存放路径:/var/lib/镜像名
cd /var/lib/docker
可以看到,镜像存放在image路径下,容器存放在containers路径下

1.3、容器生命周期

想多了解一些的小伙伴可以看看这块,非运维小伙伴不做重点掌握:

图中4个椭圆:stopped,running ,pause ,deleted 为容器的4个状态
箭头上的文本均为命令,熟悉这些命令,可以有效协助运维小伙伴排查问题。
在这里插入图片描述

二、Dockerfile构建镜像

1、docker是通过Dockerfile构建镜像的,Dockerfile用来做镜像描述,是一个包含用于 组合镜像命令 的可执行脚本,是一个无后缀的文件
2、docker通过读取Dockerfile中的指令按步自动生成镜像
3、构建镜像

docker build -t 机构/镜像名<:tags> Dockerfile目录(
可以是绝对路径也可以是相对路径)

1、demo-Dockerfile自动部署Tomcat 应用

构建一个自定义镜像,在原有tomcat安装完基础上自动将名为docker-web的应用发布到镜像中,任何拿到自定义镜像中之要执行run就可以访问docker-web应用

STEP1 、Dockerfile内容:

红色字体部分即为Dockerfile内容,

tips:此文件无后缀哈

  • #设置基准镜像
    FROM tomcat:latest
  • #本镜像由哪个人/机构维护。没有执行功能,只是一个说明性信息
    MAINTAINER wq.com
  • #切换工作目录。 webapps不存在则创建,参看web容器内部文件环境看,默认 /usr/local/tomcat ,而所有web应用都放在webapps目录下WORKDIR
    /usr/local/tomcat/webapps
  • #ADD表示复制。将镜像文件复制到镜像指定目录下。docker-web:指dockerfile同级目录下的文件夹,./docker-web:指webapps目录下的文件,若此目录不存在则创建;
    ADD docker-web ./docker-web

STEP2、新建一个web应用first-dockerfile(小白可),进行构建

本地新建文件夹first-dockerfile,在里面创建文件夹docker-web,然后进入,创建index.html ,编辑内容:<h1>docker首页</h1>
在文件夹下,创建Dockerfile,不带后缀,将上面Dockerfile内容拷贝到本文件

在/usr下创建images 文件夹,用来存放镜像,上传first-dockerfile文件夹

文件层级:
在这里插入图片描述

执行构建命令:
切换到/usr/image/first-dockerfile/目录下,【点 表示当前目录,即/usr/image/first-dockerfile/】,执行命令:
docker build -t wq.com/mywebapp:1.0.0 .

执行docker images 可以看到刚才的应用

STEP3、在命令行执行如下命令

启动容器:docker run -p -d 8001:8080 wq.com/mywebapp:1.0.0
在浏览器访问 宿主机IP:8001/docker-web/index.html

可查看正在运行的容器:docker ps
进入到容器内部:docker exec -it 容器ID /bin/bash
直接进入到 /usr/local/tomcat/webapps 目录下,可以看到有docker-web目录文件夹

2、部署redis镜像

  • 拉取redis镜像:docker pull redis

  • 查看镜像是否构建:
    docker images

  • 启动容器:
    docker run -p 6000:6379 -d redis

  • 查看运行的容器
    docker ps

  • 查看端口6000是否被监听,做了宿主机和容器内部的端口映netstat tulpn

  • 进入redis容器内部:
    docker exec -it 容器ID /bin/bash

  • 查看容器元数据:docker inspect 容器ID

  • 查看容器日志,后期构建自己的应用,如果报错可以通过此命令查看报错情况:docker logs

监控容器内部进程状态
docker topdocker stats 可以看到是每个docker容器进程的资源占用情况,根据输出的容器ID,查对应应用:docker ps

  • 可以在容器内部执行:
    redis-cli
    exit

猜你喜欢

转载自blog.csdn.net/qq_17033579/article/details/133249048