资讯专栏INFORMATION COLUMN

容器docker基本使用详细手册

IT那活儿 / 1276人阅读
容器docker基本使用详细手册
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

准备工作及安装

1.1 根据官方文档建议使用Centos7及以上版本

https://docs.docker.com/engine/install/centos/

1.2 更新yum到最新版本

1.3 卸载旧版本和依赖(一般用于重新安装Docker)
上图是未安装过docker的运行结果。

1.4 安装存储库

1)安装docker需要的工具包

2)建立docker仓库(官方提供的公共仓库)
1.5 安装docker引擎
1.6 配置docker的images镜像加速(使用国内仓库,这里使用的是阿里云)

我们可以通过修改daemon.json 文件添加其它的仓库地址,进行镜像上传和下载。

修改此配置文件一定要先重启daemon文件、重启docker。

1.7 运行docker

设置开机自启。

1.8 测试

测试成功! 

Docker的基本命令使用

2.1 docker images

可以查看现有的镜像上面的参数分别是:

镜像名、镜像标签、镜像id、镜像创建时间、镜像大小。

2.2 docker ps

上面的参数分别是:

容器ID、镜像ID、启动容器的命令、容器创建时间、容器状态、容器端口信息、容器名字。

docker ps -a 会显示所有的容器包括没有运行的容器或者已经停止的容器。

2.3 docker run

由上图可知docker run 后面接镜像ID 或者 镜像名:镜像标签。

其他参数:

  • -d参数使容器后台启动,会输出容器的长ID。

  • -p参数指定虚拟机对容器的端口的映射(虚拟机端口:容器端口)。

  • --name参数指定容器的名字,不指定名字系统会随机指定名字。

  • -P参数随机指定虚拟机端口映射。

  • -it参数这其实是两个参数分别是-i,-t但在实际使用情况下是一起使用的,表示直接启动容器并进入(进入容器中一般是)。

2.4 docker exec

tomcat是容器名称,填写容器ID也是可以的。

进入后台启动的容器或者正在运行的容器。

2.5 docker attach

可以看到容器启动命令的终端。

2.6 docker rm /docker rmi

  • docker rm 删除容器;

  • docker rmi 删除镜像。

两者后面一般接需要删除的容器或者镜像的ID,删除镜像可以接镜像名:镜像标签。

docker rm -v $(docker ps -aq -f status=exited)

直接删除所有状态为exited的容器。

docker rmi -v $(docker images -aq )
直接删除所有的镜像。

当出现如下报错时,是指还有镜像与要删除的镜像有关联,无法删除。

docker image inspect --format={{.RepoTags}} {{.Id}} {{.Parent}} $(docker image ls -q --filter since=c69ebce270d4)

这样回输出镜像名称:镜像标签,和两个长ID前面为父镜像ID,后面为子镜像ID。

docker stop /docker start/docker restart/docker pause/docker unpause

2.7 docker stop /docker start/docker restart/docker pause/docker unpause

分别是停止容器,启动容器,重启容器,暂停容器,开启容器。

docker restart 是先执行docker stop 在执行docker start。

--restart=always意味着无论容器因何种原因退出(包括正常退出),就立即重启。该参数的形式还可以是--restart=on-failure:3,意思是如果启动进程退出代码非0,则重启容器,最多重启3次。(使用方式和--name一样)

制作镜像(以tomcat为例)

镜像制作有两种方式分别是docker commit 和docker build。我们下面所涉及的是通过Dockerfile来制作镜像。

以tomcat9.0.67版本的包为例子制作镜像。

3.1 Dockerfile文件

Dockerfile文件是docker build 定制镜像的基础。

docker build -f xxx -t yyy:1.0 .

最后的 . 表示会调用当前目录的包。

  • -f 参数是指定Dockerfile的路径(如果是在当前目录下不需要指定;如果是在当前目录下且文件名非Dockerfile,需要指定文件)

  • -t 参数是指将制作好的镜像命名和标签(如果不写标签,标签将为latest)

不过在从网上的公共库中下载的镜像的标签为latest是指最新版本。

FROM 已centos:7为基础,制作镜像。

ADD 将jdk,tomcat 包放在/usr/local下,ADD会直接解压包。

COPY 和ADD用法一样。

COPY和ADD都是复制文件到镜像中,他们区别在于,如果ADD指定的文件是归档文件将会解压出来。

  • RUN 运行容器指定的命令,一般是下载一些必要的包,和一些基本的操作;

  • USER tomcat 这个是指将会以tomcat用户运行,不会是root用户,前提有这个用户

  • ENV 配置环境变量;

  • WORKDIR 设置工作目录;

  • EXPOSE 设置暴露的端口,要与tomcat设置的端口一致;

  • CMD 容器启动使的命令;

  • ENTRYPOINT 容器启动时的命令;

  • Dockerfile里面可以有多个CMD和ENTRYPOINT命令,但是都是只有最后一个生效;CMD会被docker run后面的参数替换;CMD或docker run之后的参数会被当做参数传递给ENTRYPOINT。

在制作镜像的时候尽量少一些命令,每一个RUN、ENV等都会使镜像的层数增加,这是不符合镜像的原则。

3.2 准备好需要的包

3.3 改包的名字(防止在使用镜像的时候暴露版本)

记住不能直接改压缩包的名字,否则解压出来的还是原来压缩包的名字。

3.4 更改配置文件

(更改配置文件的要求要根据基线的要求)

1)修改端口

修改server.xml 文件:

这里包含了两部分,第一部分是HTTP访问页面的配置:

  • port 是HTTP访问的端口;

  • maxHttpHeaderSize是HTTP请求和响应头的最大量,以字节为单位;

  • maxThreads是tomcat启动的最大线程数;

  • minSpareThreads当连接器第一次启协创建线程的数目,确保至少有这么多的空闲线程可用;

  • maxSpareThreads允许存在空闲线程的最大数目;

  • enableLookups是否反查域名,若设为true, 则支持域名解析,可把 ip 地址解析为主机名;

  • acceptCount 当所有的可能处理的线程都正在使用时,在队列中排队请求的最大数目,队列已满,任何接收到的请求都会被拒绝;

  • connectionTimeout设置连接的超时值,以毫秒为单位;

  • disableUploadTimeout允许Servlet容器,正在执行使用一个较长的连接超时值,以使Servlet有较长的时间来完成它的执行;

  • redirectPort在需要基于安全通道的场合,把客户请求转发到基于SSL的端口。

第二部分是HTTPS访问的设置:
  • port是HTTPS访问的端口,与第一部分的redirectPort相同;

  • maxThreads是tomcat启动的最大线程数;

  • SSLEnabled启用HTTPS;

  • scheme设置协议的名字,SSL连接器设为”https”;

  • secure在SSL连接器可将其设置为true;

  • clientAuth设置是否对客户端进行HTTPS认证;

  • sslProtocol要使用的SSL协议;

  • keystoreFile存储了服务器HTTPS证书的keystore文件的位置;

  • keystorePass用于访问指定keystore文件的密码。

将pattern和resloveHosts参数改成上述值。会在tomcat启动之后在logs文件下生成的日志会如下格式:

2)修改web.xml文件

修改结果如上,表示当 WEB 目录中没有默认首页如 index.html,index.jsp 等文件时,不会列出目录内容。

修改结果如上,表示禁用非法HTTP方法例如PUT、DELETE等。

添加如上字段,表示强制HTTP转HTTPS访问页面。

添加如上字段,表示tomcat的页面重定向,目录是tomcat目录下的/webapps/ROOT。

3)修改tomcat自带的版本信息

首先进入tomcat目录下的lib目录,找到改 catalina.jar。

将其解压:

修改成如下:

再将修改的文件打包到jar包里:

删除解压出来的文件:

如上是tomcat修改了版本之后日志的输出。

4)禁用manager 权限

将tomcat目录下的webapps目录除了ROOT目录全部删除。

进入ROOT目录,并删除全部文件和目录。

创建如下文件:

  • error.jsp是错误重定向的页面;

  • index.html 是当无其他应用运行时的访问页面。

5)证书的制作

首先我们的证书是通过jdk制作的,所以需要保证我们的虚拟机有jdk环境否则无法运行命令。

添加jdk环境:

使环境生效,并测试是否成功。

证书制作:

为了方便这里的所有的口令都是一致的,而且这里的文件没有指定目录,将会在当前目录下生成。



本文作者:彭刚朝(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129101.html

相关文章

  • Docker入门(一)

    摘要:作者麦冬白鲸鱼是什么入门教程容器是与系统其他部分隔离开的一系列进程,运行这些进程所需的所有文件都由另一个镜像提供,从开发到测试再到生产的整个过程中,容器都具有可移植性和一致性。快速容器的启动和创建无需启动,可以实现秒级甚至毫秒级的启动。 作者: 麦冬 白鲸鱼 docker 是什么 Docker 入门教程 Docker容器是与系统其他部分隔离开的一系列进程,运行这些进程所需的所有文件都由...

    zebrayoung 评论0 收藏0
  • 可能是把Docker的概念讲的最清楚的一篇文章

    摘要:由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。设计时,就充分利用的技术,将其设计为分层存储的架构。镜像实际是由多层文件系统联合组成。分层存储的特征还使得镜像的复用定制变的更为容易。前面讲过镜像使用的是分层存储,容器也是如此。 本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令。 阅读本文大概需要15分...

    Jochen 评论0 收藏0
  • Docker在开发、测试中的应用

    摘要:对测试的影响让单元测试运行的更顺畅单元测试驱动开发是一个很好的应用程序开发方式,单元测试往往也是和代码一起被提交到代码仓库中。但是很多单元测试通常依赖于很多其他服务,而这些服务的标准化配置往往是一个难点,如数据库的搭建防火墙的配置等。 传统的软件开发、测试、运维需要三个团队在三个不同的环境中进行,而三个环境的不同引发了很多的问题。如:工作内容的重复;开发环境中可运行的程序在测试和运维环...

    mating 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<