在Centos 7搭建Docker环境_centos docker 部署 tar,2024年最新国内一线互联网公司面试题汇总

{ “registry-mirrors”: [“https://1qlarpb7.mirror.aliyuncs.com”] }
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

四、下载镜像到本地

1、下载镜像到本地

[root@localhost ~]# docker pull ubuntu

  • 1

docker-pull

2、查看本地镜像

[root@localhost ~]# docker images ubuntu

  • 1

docker-images

3、运行一个Docker容器:docker run -it

[root@localhost ~]# docker run -it ubuntu

  • 1

docker-run
注意上图:本地有镜像文件,不会远程下载镜像文件。 
并且我们看到了 bash 提示符。在 docker 命令中我们使用了 “-i 捕获标准输入输出”和 “-t 分配一个终端或控制台”选项。 
若要断开与容器的连接,则输入 exit。

[root@cd05639b3f5c /]# cat /etc/issue
Ubuntu 16.04.2 LTS \n \l
[root@cd05639b3f5c /]# exit
exit
[root@localhost ~]#

  • 1
  • 2
  • 3
  • 4
  • 5

4、搜索镜像文件

[root@localhost ~]# docker search ubuntu
[root@localhost ~]# docker search fedora

  • 1
  • 2

5、查看当前正在运行容器

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c7cdf5c1359 ubuntu “/bin/bash” 4 seconds ago Up 3 seconds focused_ritchie focused_ritchie

  • 1
  • 2
  • 3

五、制作Docker镜像

1、使用 Dockerfile 来创建镜像

  • Dockerfile基本语法:

    • FROM

      • FROM指定一个基础镜像, 一般情况下一个可用的 Dockerfile一定是
      • FROM 为第一个指令。至于image则可以是任何合理存在的image镜像。
      • FROM 一定是首个非注释指令 Dockerfile.
      • FROM 可以在一个 Dockerfile 中出现多次,以便于创建混合的images。 如果没有指定 tag ,latest 将会被指定为要使用的基础镜像版本。
    • MAINTAINER

      • 这里是用于指定镜像制作者的信息
    • RUN

      • RUN命令将在当前image中执行任意合法命令并提交执行结果。命令执行提交后,就会自动执行Dockerfile中的下一个指令。
      • 层级 RUN 指令和生成提交是符合Docker核心理念的做法。它允许像版本控制那样,在任意一个点,对image 镜像进行定制化构建。
      • RUN 指令缓存不会在下个命令执行时自动失效。比如 RUN yum dist-upgrade -y 的缓存就可能被用于下一个指令. –no-cache 标志可以被用于强制取消缓存使用。
    • ENV

      • ENV指令可以用于为docker容器设置环境变量
      • ENV设置的环境变量,可以使用 docker inspect命令来查看。同时还可以使用docker run –env =来修改环境变量。
    • USER

      • USER 用来切换运行属主身份的。Docker 默认是使用 root,但若不需要,建议切换使用者身分,毕竟 root 权限太大了,使用上有安全的风险。
    • WORKDIR

      • WORKDIR 用来切换工作目录的。Docker 默认的工作目录是/,只有 RUN 能执行 cd 命令切换目录,而且还只作用在当下下的 RUN,也就是说每一个 RUN 都是独立进行的。如果想让其他指令在指定的目录下执行,就得靠 WORKDIR。WORKDIR 动作的目录改变是持久的,不用每个指令前都使用一次 WORKDIR。
    • COPY

      • COPY 将文件从路径 复制添加到容器内部路径 。
      • 必须是想对于源文件夹的一个文件或目录,也可以是一个远程的url, 是目标容器中的绝对路径。
      • 所有的新文件和文件夹都会创建UID 和 GID 。事实上如果 是一个远程文件URL,那么目标文件的权限将会是600。
    • ADD

      • ADD 将文件从路径 复制添加到容器内部路径 。
      • 必须是想对于源文件夹的一个文件或目录,也可以是一个远程的url。 是目标容器中的绝对路径。
      • 所有的新文件和文件夹都会创建UID 和 GID。事实上如果 是一个远程文件URL,那么目标文件的权限将会是600。
    • VOLUME

      • 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
    • EXPOSE

      • EXPOSE 指令指定在docker允许时指定的端口进行转发。
    • CMD

      • Dockerfile.中只能有一个CMD指令。 如果你指定了多个,那么最后个CMD指令是生效的。
      • CMD指令的主要作用是提供默认的执行容器。这些默认值可以包括可执行文件,也可以省略可执行文件。 当
      • 你使用shell或exec格式时, CMD 会自动执行这个命令。
    • ONBUILD

      • ONBUILD 的作用就是让指令延迟執行,延迟到下一个使用 FROM 的 Dockerfile 在建立 image 时执行,只限延迟一次。
      • ONBUILD 的使用情景是在建立镜像时取得最新的源码 (搭配 RUN) 与限定系统框架。
    • ARG

      • ARG是Docker1.9 版本才新加入的指令。
      • ARG 定义的变量只在建立 image 时有效,建立完成后变量就失效消失
    • LABEL

      • 定义一个 image 标签 Owner,并赋值,其值为变量 Name 的值。(LABEL Owner=$Name )
    • ENTRYPOINT

      • 定义一个 image 标签 Owner,并赋值,其值为变量 Name 的值。(LABEL 
        Owner=$Name ) ENTRYPOINT
      • 是指定 Docker image 运行成 instance (也就是 Docker container) 
        时,要执行的命令或者文件。

2、创建SSH+supervisor+jdk+Tomcat的Dockerfile文件

这里是注释

设置继承自哪个镜像

FROM centos

下面是一些创建者的基本信息

MAINTAINER birdben(529784162@qq.com)

注意这里要更改系统的时区设置,因为在 web 应用中经常会用到时区这个系统变量,默认的 CentOS会让你的应用程序发生不可思议的效果哦

ENV DEBIAN_FRONTEND noninteractive

#一次性安装wget,curl,ssh server等必备软件
RUN yum install -y wget curl openssh-server net-tools
RUN mkdir -p /var/run/sshd

将sshd的UsePAM参数设置成no

RUN sed -i ‘s/UsePAM yes/UsePAM no/g’ /etc/ssh/sshd_config

添加测试用户admin,密码admin,并且将此用户添加到sudoers里

RUN echo “root:123456” | chpasswd
RUN echo “root ALL=(ALL) ALL” >> /etc/sudoers

下面这两句比较特殊,在centos6上必须要有,否则创建出来的容器sshd不能登录

RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

#Tomcat jdk
ADD apache-tomcat-8.0.30.tar.gz /usr/local/src/
COPY jdk-8u60-linux-x64.rpm /usr/local/src/
WORKDIR /usr/local/src/
RUN rpm -ivh jdk-8u60-linux-x64.rpm
ENV JAVA_HOME /usr/java/jdk1.8.0_60
ENV PATH P A T H : PATH: PATH:JAVA_HOME/bin
ENV CLASSPATH .: J A V A H O M E / j r e / l i b / r t . j a r : JAVA_HOME/jre/lib/rt.jar: JAVAHOME/jre/lib/rt.jar:JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
RUN java -version
RUN mkdir -p /usr/local/tools
RUN cp -r apache-tomcat-8.0.30 /usr/local/tools/tomcat8_8080

安装supervisor工具

RUN yum -y install python-setuptools
RUN easy_install supervisor
RUN mkdir -p /etc/supervisor/

添加 supervisord 的配置文件,并复制配置文件到对应目录下面。(supervisord.conf文件和Dockerfile文件在同一路径)

COPY supervisord.conf /etc/supervisor/

#容器需要开放SSH 22端口 tomcat 8080端口
EXPOSE 22 8080

#set ENV
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8

执行supervisord来同时执行多个命令,使用 supervisord 的可执行路径启动服务。

#CMD [“/usr/sbin/sshd”, “-D”]
CMD supervisord -c /etc/supervisor/supervisord.conf

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

3、supervisor工具的conf文档内容

配置文件包含目录和进程

第一段 supervsord 配置软件本身,使用 nodaemon 参数来运行。

第二段 supervsordctl 工具

第三段包含要控制的 2 个服务。每一段包含一个服务的目录和启动这个服务的命令

[unix_http_server]
file=/var/run/supervisor.sock

[supervisord]
nodaemon=true

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

[program:sshd]
command=/usr/sbin/sshd -D

[program:tomcat]
command=/usr/local/tools/tomcat8_8080/bin/catalina.sh run

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

3、使用docker build来生成镜像

$ docker build -t=“centos123” . 注意最后面有个点要加(取当前的Dockerfile)

参数:

-t 标记来添加 tag,指定新的镜像的用户和镜像名称信息。

“.” 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径。

[root@localhost new_folder]# docker build -t=“centos123” .
Sending build context to Docker daemon 342.5 MB
Step 1 : FROM centos
—> 36540f359ca3
Step 2 : MAINTAINER birdben(529784162@qq.com)
—> Using cache
—> 197e01a4f053
Step 3 : ENV DEBIAN_FRONTEND noninteractive
—> Using cache
—> 743b76abc782
Step 4 : RUN yum install -y wget curl openssh-server net-tools
—> Using cache
—> 8daee18af33e
Step 5 : RUN mkdir -p /var/run/sshd
—> Using cache
—> 5a62518cda45
Step 6 : RUN sed -i ‘s/UsePAM yes/UsePAM no/g’ /etc/ssh/sshd_config
—> Using cache
—> 7b33c0510935
Step 7 : RUN echo “root:123456” | chpasswd
—> Using cache
—> 45a6233b175e
Step 8 : RUN echo “root ALL=(ALL) ALL” >> /etc/sudoers
—> Using cache
—> dea0d0325701
Step 9 : RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
—> Using cache
—> 5bd60eed1f88
Step 10 : RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
—> Using cache
—> 7be95fb001a2
Step 11 : ADD apache-tomcat-8.0.30.tar.gz /usr/local/src/
—> Using cache
—> 83380c2b51f8
Step 12 : COPY jdk-8u60-linux-x64.rpm /usr/local/src/
—> Using cache
—> 88a492d401b3
Step 13 : WORKDIR /usr/local/src/
—> Using cache
—> 85b0fd5b8a22
Step 14 : RUN rpm -ivh jdk-8u60-linux-x64.rpm
—> Using cache
—> a85a57a52b3c
Step 15 : ENV JAVA_HOME /usr/java/jdk1.8.0_60
—> Using cache
—> 549bfbbd003a
Step 16 : ENV PATH P A T H : PATH: PATH:JAVA_HOME/bin
—> Using cache
—> 35ddc3e8c65a
Step 17 : ENV CLASSPATH .: J A V A H O M E / j r e / l i b / r t . j a r : JAVA_HOME/jre/lib/rt.jar: JAVAHOME/jre/lib/rt.jar:JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
—> Using cache
—> 4484a67de021
Step 18 : RUN java -version
—> Using cache
—> 84b732ef5772
Step 19 : RUN mkdir -p /usr/local/tools
—> Using cache
—> e0d6dd066315
Step 20 : RUN cp -r apache-tomcat-8.0.30 /usr/local/tools/tomcat8_8080
—> Using cache
—> a4e7267a5eb9
Step 21 : RUN yum -y install python-setuptools

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

vjHXWQj4-1713021464160)]
[外链图片转存中…(img-5nJIlLet-1713021464160)]
[外链图片转存中…(img-3xxIfqfb-1713021464161)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-ZDpBHKSZ-1713021464161)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值