对于想了解Centos7.6下使用docker方法安装stf的读者,本文将是一篇不可错过的文章,我们将详细介绍docker在centos7中安装,并且为您提供关于1.docker学习笔记之入门,doc
对于想了解Centos7.6 下使用 docker 方法安装 stf的读者,本文将是一篇不可错过的文章,我们将详细介绍docker在centos7中安装,并且为您提供关于1.docker 学习笔记之入门,docker 在 centos7 下的安装以及基础命令的使用、centos7 64bit 安装 docker 最新版教程(Centos7 下安装 Docker Engine)、CentOS7 下 离线安装Docker 和 Docker Compose、centos7 下使用 docker 安装 nginx的有价值信息。
本文目录一览:- Centos7.6 下使用 docker 方法安装 stf(docker在centos7中安装)
- 1.docker 学习笔记之入门,docker 在 centos7 下的安装以及基础命令的使用
- centos7 64bit 安装 docker 最新版教程(Centos7 下安装 Docker Engine)
- CentOS7 下 离线安装Docker 和 Docker Compose
- centos7 下使用 docker 安装 nginx
Centos7.6 下使用 docker 方法安装 stf(docker在centos7中安装)
使用 Docker 镜像安装
一,在 centos 上安装 Docker
很简单,直接 yum install docker 即可
开启 docker 服务
在 centos 中开启服务可以使用 systemctl start serviceName.service,比如开启 docker,systemctl start docker.service
拉取 docker 镜像文件
使用 docker 安装 STF 很简单,只需拉取以下 5 个镜像即可:
docker pull openstf/stf:latest
docker pull sorccu/adb:latest
docker pull rethinkdb:latest
docker pull openstf/ambassador:latest
docker pull nginx:latest
检查拉去下来的镜像
docker images
启动容器
先启动一个数据库
docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
再启动 adb service
docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
再启动 stf
docker run -d --name stf --net host openstf/stf stf local --public-ip 192.168.1.99
一定要注意启动顺序,STF 依赖 rethinkdb,所以要先启动 rethinkdb,启动完成后使用: docker ps -a 查看是否启动成功
如果未成功启动,可能是权限问题,加 –privileged=true 即可。
启动 rethinkdb
docker run -d --name rethinkdb --privileged=true -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 2048 --http-port 8090
启动 STF
docker run -d provider --name stf --privileged=true --net host openstf/stf stf local --public-ip 192.168.11.99
访问地址:http://192.168.1.99:7100
随便输入姓名和 QQ 号均可正常登录。
连接未安装 STF 的电脑上的设备
首先保证其他电脑可以和安装 STF 的系统通信,在未安装 STF 的电脑上暴露 adb 端口,建议采用默认端口:5037,
adb -a -P 5037 fork-server server
如果出现以下错误:
在任务管理器中关掉 adb.exe,重新运行上述命令。
如果出现下面报错,建议换成低版本 adb
reply fd for adb server to client communication not specified.
或者使用命令:adb nodaemon server -a

在 docker 中删除原来的 stf 镜像,重新运行 (15.2.23.38 是宿主机 IP,5037 是宿主机暴露的 adb 端口):
docker run -d --name stf --privileged=true --net host openstf/stf stf local --public-ip 15.2.23.203 --adb-host 15.2.23.38 --adb-port 5037 --allow-remote
备注:过程中可能用到的一些命令以及可能遇到的问题
1 docker start 容器名 启动某个容器
2 docker stop 容器名 停止某个容器
3 docker rm 容器名 删除某个容器
4 sudo ufw status 查看 ubuntu 的防火墙状态
5 过程中可能会无法 ping 虚拟机,改成桥接。同时关闭掉机器的防火墙(这个看自己,或者自己加规则,准许哪些 IP 访问)。
还不可以的话,配置一个跟主机相同 IP 段的 IP 地址
1.docker 学习笔记之入门,docker 在 centos7 下的安装以及基础命令的使用
1、更新update到最新的版本
yum update
2、卸载老版本docker
yum remove docker docker-common docker-selinux docker-engine
3、安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
4、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5、查看docker版本
yum list docker-ce --showduplicates|sort -r
6、安装docker
yum install docker-ce-18.03.1.ce -y #yum install docker-ce-3:20.10.9-3.el8
7、启动docker
systemctl start docker
8、加入开机自启
systemctl enable docker
9、配置国内镜像
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
Docker 包括三个基本概念:
镜像(Image)
容器(Container)
仓库(Repository)
如若以上操作 中出现错误
则强制安装此版本
yum install https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.4.3-3.1.el8.x86_64.rpm
1.启动
docker start 容器名
2.删除
docker rm 容器名
3.停止所容器
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
4.docker build -t 名称 .
Usage:docker build [OPTIONS] PATH | URL | -
OPTIONS:
-t ,--tag list #构建后的镜像名称
-f, --file string #指定Dockerfiile文件位置
示例:
1,docker build .
2,docker build -t redis:v1 .
3,docker build -t redis:v2 -f /path/Dockerfile /path
Dockerfile 快速入门指令
1.FROM 指定基础镜像
所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个redis镜像的容器,再进行修改一样,基础镜像是必须指定的。而 FROM 就是指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。
在 Docker Store 上有非常多的高质量的官方镜像,有可以直接拿来使用的服务类的镜像,如nginx 、 redis 、 mongo 、 mysql 、 httpd 、 php 、 tomcat 等;如果没有找到对应服务的镜像,官方镜像中还提供了一些更为基础的操作系统镜像,
如ubuntu 、 debian 、 centos、 alpine 等这些操作系统的软件库
2、RUN 执行命令
RUN 指令是用来执行命令行命令的。
格式:
RUN \<command\> (类似/bin/sh -cshell格式)
RUN ["executable", "param1", "param2"] (exec格式)
类似shell脚本风格的:
FROM alpine
RUN sed -i ''s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g'' /etc/apk/repositories
RUN apk add gcc g++ libc-dev wget vim openssl-dev make linux-headers
RUN mkdir -p /usr/src/redis
RUN cd /usr/src/redis
RUN wget -O redis-4.0.11.tar.gz "http://download.redis.io/releases/redis-4.0.11.tar.gz"
RUN tar -xzf redis-4.0.11.tar.gz -C /usr/src/redis
RUN cd /usr/src/redis/redis-4.0.11 && make && make PREFIX=/usr/local/redis install
之前说过,Dockerfile 中每一个指令都会建立一层, RUN 也不例外。每一个 RUN 的行为,就和刚才我们手工建立镜像的过程一样:新建立一层,在其上执行这些命令,执行结束后, commit这一层的修改,构成新的镜像。使用 Dockerfile 定制镜像
而上面的这种写法,创建了很多层镜像。这是完全没有意义的,而且很多运行时不需要的东西,都被装进了镜像里,比如编译环境、更新的软件包等等。结果就是产生非常臃肿、非常多层的镜像,不仅仅增加了构建部署的时间,也很容易出错。 这是很多初学
Docker 的人常犯的一个错误。Union FS是有最大层数限制的,比如 AUFS,曾经是最大不得超过 42 层,现在是不得超过 127 层。
导出容器
导出容器可以导出一个已经创建的容器到一个文件,不管容器处于什么状态,可以使用docker export 命令。 命令格式为:docker export [-o|--output[=""]] CONTATINER 其中可以通过-o来指定导出的tar文件名,也可以直接通过重定向来实现。
另一种格式为:docker export 容器 id/name > 文件名.tar
导入容器
导入的文件可以使用docker import 命令导入变成镜像,该命令的格式为:
docker import [-c|--change[=[]]] [-m|--message[=MESSAGE]] file|URL|-[REPOSITORY[:YAG]]
其中-c 选项可以在导入的同时执行对容器进行修改的Dockerfile指令(网络等修改)
另外 docker save&load 命令也可以导入一个镜像存储文件,但是跟 docker import 命令是有区别的
用 export&import 还是 save & load ?
export&import 和 save & load 是 docker 中的两组命令,我们先主要看看他们的区别:
类型 | 导出的对象 | 导出文件大小 | 是否可回滚到历史层 |
---|---|---|---|
export & import | 将容器导出 | 小 | 否 |
save & load | 用来将一个或者多个 image 打包 | 大 | 是 |
相对于文件大小来说,save方式导出的文件比export方式导出的文件大
正是因为save方式保存了镜像的历史和层(layer),使其可以层回滚,即回滚到之前的历史层,所以save方式导出的文件稍微大一些
反观export方式,在导出过程中丢失所有的历史,导致其不可以层回滚,导出的文件会小一些
可以通过 docker history 镜像名 看到层关系
3.2、容器网络
Docker 安装后,默认会创建下面三种网络类型
docker network ls
查看默认的网络
在启动容器时使用 --network bridge
指定网络类型
bridge:桥接网络
默认情况下启动的 Docker 容器,都是使用 bridge,Docker 安装时创建的桥接网络,每次 Docker 容器重启时,会按照顺序获取对应的 IP 地址,这个就导致重启下,Docker 的 IP 地址就变了
none:无指定网络 使用 --network=none ,docker
容器就不会分配局域网的 IP
host: 主机网络 使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。 例如,在容器中运行一个 Web 服务,监听 8080 端口,则主机的 8080 端口就会自动映射到容器中
3.3、 指定自定义网络
因为默认的网络不能制定固定的地址,所以我们将创建自定义网络,并指定网段(IP 可以理解为 4 组 8 个二进制组成的一段代码,然后右侧网段的 24 是指锁定前面 24 位,也就是说生成的 IP 会是 192.168.1.X,1-255):192.168.1.0/24 并命名为 mynetwork,指令如下:
docker network create --subnet=192.168.1.0/24 mynetwork
使用此 docker 镜像 创建容器
代码如下:
docker run -itd --name redis-master --net mynetwork -p 6380:6379 --ip 192.168.1.2 redis
参数说明: 具体可以参看一些文档
http://www.runoob.com/docker/docker-run-command.htmlhttp://www.dockerinfo.net/docker%E5%AE%B9%E5%99%A8-2
-d: 后台运行容器,并返回容器ID; -i: 以交互模式运行容器,通常与 -t 同时使用; -p: 端口映射,格式为:主机(宿主)端口:容器端口 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用; -V: 为容器挂载目录,比如 /usr/docker/data:/data 前者为数宿主机目录后者为容器内目录 --ip: 为容器制定一个固定的ip --net: 指定网络模式 这样,我们创建了2个容器,来一起查看下结果 docker ps -a 查看容器ip地址 docker network inspect mynetwork
docker build -t redis-test . #在文件夹中用默认的 Dockerfile 创建镜像
docker images #查看当前 docker 镜像
docker history 625dcdca8ecb #查看某个镜像的历史
docker ps -a #查看当前运行的容器
docker run -itd -p 8001:80 -v xxx1:xxx2 --name redis-master redis-test #使用镜像(redis-test)运行容器(redis-master) 宿主机 8001 端口映射到容器 80 端口 宿主机 xxx1 地址与容器 xxx2 地址共享(容器写入 xxx2 的数据同样会出现在宿主机的 xxx1 里)
docker rm 538265c49277 #移除容器
docker exec -it redis-master bash #进入容器 (如果出现:OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"bash\": executable file not found in $PATH": unknown ,那么就把 bash 改为 sh :docker exec -it redis-master sh)
docker stop $(docker ps -a -q) #停止全部容器(-q 返回容器 id)
docker rm $(docker ps -a -q) #移除所有容器
docker rmi $(docker images -q) #删除所有镜像
docker export f4092a93c312 > nginx-jzy.tar #docker export 容器 id > 文件名.tar 导出容器(镜像快照)
docker import nginx-jzy.tar nginx-jzy:v2 #使用镜像快照创建镜像,创建的镜像没有 history
docker run -itd --name nginx-jzy-v2 e70d288bc4ef bash #使用上面创建的镜像创建容器,这里必须要有 bash 或者其他可以被挂载的进程
docker save a68a3617e7dd > nginx-jzy-save.tar #保存镜像
docker rmi a68a3617e7dd #删除镜像,因为上面导出容器使用的是这个镜像,所以生成了一个依赖这个镜像的镜像 删除失败了(Error response from daemon: conflict: unable to delete a68a3617e7dd (cannot be forced) - image has dependent child images)
docker image inspect --format=''{{.RepoTags}} {{.Id}} {{.Parent}}'' $(docker image ls -q --filter since=a68a3617e7dd) #找出 from 这个镜像的子镜像([nginx-jzy:v2] sha256:e70d288bc4ef3f20015ca839653c1c1555ee7b2524e4085845348c7d990eb998)
docker rmi -f e70d288bc4ef #删除子镜像失败(Error response from daemon: conflict: unable to delete e70d288bc4ef (cannot be forced) - image is being used by running container be7eea6f8a9b)
docker stop be7eea6f8a9b #停止容器
docker rm be7eea6f8a9b #删除容器
docker rmi -f e70d288bc4ef #删除子镜像成功
docker rmi a68a3617e7dd #删除镜像成功
docker load < nginx-jzy-save.tar #读取保存的镜像文件(生成的镜像文件是有 history 的)
docker inspect imageid #查看镜像详情
docker network ls #查看网络列表
docker network inspect id1 #查看网络 id 为 id1 的信息
docker network create --subnet=192.168.1.0/24 redis-network #新增网络连接方式(增加网段)
docker run -itd --name redis-test2 --network=redis-network --ip 192.168.1.3 -p 6381:6379 -v /usr/docker/redis/conf/:/usr/src/redis/conf/redis #根据之前的 redis 镜像生成 redis-test2 容器 使用自定义的 redis-network 网络,指定 ip(必须在网段内),指定端口映射,指定共享文件夹
iptables -t nat -L -n #查看桥接网络
1. 为什么系统镜像那么小呢? 因为 docker 镜像在运行的时候直接使用 docker 宿主机器的 kernel,Linux 操作系统由内核空间和用户空间组成。
内核空间是 kernel,用户空间是 rootfs, 不同 Linux 发行版的区别主要是 rootfs. 比如 Ubuntu 14.04 使用 upstart 管理服务,apt 管理软件包; 而 CentOS 7 使用 systemd 和 yum。这些都是用户空间上的区别,Linux kernel 差别不大。所以 Docker 可以同时支持多种 Linux 镜像, 模拟出多种操作系统环境。容器共同使用镜像的内容(如果发生更改先复制镜像层到容器层然后再修改)
2. 镜像的文件如何存储的?
镜像文件是分层存储的,我们可以通过 docker history 命令查看到镜像的历史,也就是层
启动镜像的时候,一个新的可写层会加载到镜像的顶部。这一层通常称为 “容器层”, 之下是 “镜像层”。
容器层可以读写,容器所有发生文件变更写都发生在这一层。镜像层 read-only, 只允许读取。
Container 最上面是一个可写的容器层,以及若干只读的镜像层组成,Container 的数据就存放在这些层中,这样的分层结构最大的特性是 Copy-On-Write (写时复制):
新数据会直接存放在最上面的 Container 层。
修改现有的数据会先从 Image 层将数据复制到容器层,修改后的数据直接保存在 Container 层,Image 层保持不变。
3. 启动的容器会占用大量空间吗?
创建镜像的时候,分层可以让 docker 只保存我们添加和修改的部分内容。其他内容基于 base 镜像,不需要存储,读取 base 镜像即可。如此,当我们创建多个镜像的时候,所有的镜像共享 base 部分。节省了磁盘空间
docker 通过一个叫做 copy-on-write (CoW) 的策略来保证 base 镜像的安全性,以及更高的性能和空间利用率
简单的说,启动容器的时候,最上层容器层是可写层,之下的都是镜像层,只读层。
当容器需要读取文件的时候:从最上层镜像开始查找,往下找,找到文件后读取并放入内存,若已经在内存中了,直接使用。(即,同一台机器上运行的 docker 容器共享运行时相同的文件)。
当容器需要添加文件的时候:直接在最上面的容器层可写层添加文件,不会影响镜像层。
当容器需要修改文件的时候:从上往下层寻找文件,找到后,复制到容器可写层,然后,对容器来说,可以看到的是容器层的这个文件,看不到镜像层里的文件。容器在容器层修改这个文件。
当容器需要删除文件的时候:从上往下层寻找文件,找到后在容器中记录删除。即,并不会真正的删除文件,而是软删除。
综上,Docker 镜像通过分层实现了资源共享,通过 copy-on-write 实现了文件隔离。
centos7 64bit 安装 docker 最新版教程(Centos7 下安装 Docker Engine)
一。先决条件
首选需要一个 64 位操作系统和 3.10 或者更版本的内核。
查看当前内核版本:
?
1 2 |
$ uname -r 3.10.0-229.el7.x86_64 |
二.yum 安装 Docker Engine
安装 Docker Engine 有两种方式,我们先选择 yum 安装,并且 Docker 官方提供了 yum 源。
1. 使用普通用户 sudo 或者 root 登录到你的服务器,更新 yum,确保你的软件都是最新的
?
1 |
$ yum update |
2. 添加 Docker 的 yum 源
?
1 2 3 4 5 67 8 |
$ sudo tee /etc/yum.repos.d/docker.repo <<-''EOF'' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF |
3. 安装 Docker 软件包
?
1 |
$ yum install docker-engine |
4. 设置 Docker 服务开机自启
?
1 |
$ systemctl enable docker.service |
5. 启动 Docker 服务
?
1 |
$ systemctl start docker |
6. 验证 Docker 是否安装成功
?
1 |
$ docker run --rm hello-world |
至此:docker 最新版已经安装完成,下面我们进行生产环境镜像的创建,使用 dockerfile
dockerfile (白话其实就是一个脚本,把一个纯镜像按照所需应用或者环境每个操作集成到一个文件执行安装的过程,类似于 linux 的 shell.)
走世界自由行环境需求(tomcat+jdk)
#以下是我们采用纯净 centos,之后安装所需环境依赖的应用(tomcat+jdk)
FROM centos
#以下是我们声明的维护人或者叫做作者
MAINTAINER locutus "zoushijie"
# OS 环境配置
RUN yum install -y wget
# 安装 JDK
RUN mkdir /opt/jdk
RUN wget -P /opt/jdk/ http://zsj-linux.oss-cn-hangzhou.aliyuncs.com/yunwei/jdk-8u162-linux-x64.tar.gz
RUN tar -zxvf /opt/jdk/jdk-8u162-linux-x64.tar.gz -C /opt/jdk && rm -rf /opt/jdk/jdk-8u162-linux-x64.tar.gz
# 安装 tomcat
RUN mkdir /opt/tomcat
RUN wget -P /opt/tomcat http://45.77.240.64/apache-tomcat-8.0.47.tar.gz
RUN tar -zxvf /opt/tomcat/apache-tomcat-8.0.47.tar.gz -C /opt/tomcat && rm -rf /opt/tomcat/apache-tomcat-8.0.47.tar.gz
#设置环境变量
ENV JAVA_HOME /opt/jdk/jdk1.8.0_162
ENV CATALINA_HOME /opt/tomcat/apache-tomcat-8.0.47
ENV PATH $PATH:$JAVA_HOME/bin
ENV CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#打包项目并拷贝到 tomcat webapps 目录
RUN mkdir /opt/webapp
ADD ./ /opt/webapp
RUN cd /opt/webapp && cp /opt/webapp/war/eureka-server.war /opt/tomcat/apache-tomcat-8.0.47/webapps/
#开启内部服务端口
EXPOSE 8080
#启动 tomcat 服务器
CMD ["./opt/tomcat/apache-tomcat-8.0.47/bin/catalina.sh","run"] && tail -f /opt/tomcat/apache-tomcat-8.0.47/logs/catalina.out
此为没有修改默认目录容器,下面我们进行修改默认访问目录操作
查看正在运行的容器:docker ps -l
之后进入容器:docker exec -it dd46f73e366e /bin/bash
进入 tomcat 修改 server.xml 文件,添加对应微服务名称:<Context path=""docBase=" 微服务名称 "debug="0"reloadable="true" />
之后要保证容器运行的状态下退出交互界面:Ctrl+p+q,我们可以看到容器仍在运行,下面我们保存一下刚才修改的容器,并以微服务命名
docker commit dd4 eureka-server
查看新生成的镜像:出现了名为 eureka-server 的镜像
删除本地不用的镜像。docker rmi -f <镜像 id>,首先先停止运行中的容器,docker stop < 镜像 id>,停止运行中的容器,要从 docker ps 里查看 id. 不是在 docker images 里查看。
CentOS7 下 离线安装Docker 和 Docker Compose
GitHub地址:点击前往
Docker离线安装
1.docker的rpm安装包下载
- 下载地址:点击前往
- 下载版本:docker-ce-17.12.0.ce-1.el7.centos.x86_64.rpm
2.所需依赖包下载(8 + 1)
****九个依赖包均在上面的github里
前八个依赖包列表:
- audit-libs-python-2.8.5-4.el7.x86_64.rpm
- checkpolicy-2.5-8.el7.x86_64.rpm
- libcgroup-0.41-21.el7.x86_64.rpm
- libseccomp-2.3.1-3.el7.x86_64.rpm
- libsemanage-2.5-14.el7.x86_64.rpm
- policycoreutils-python-2.5-33.el7.x86_64.rpm
- python-IPy-0.75-6.el7.noarch.rpm
- setools-libs-3.3.8-4.el7.x86_64.rpm
最后一个依赖包
9. container-selinux-2.107-3.el7.noarch.rpm
3.安装
- 本文测试路径:
root/docker/rpm
- 把前8个依赖上传至
root/docker
路径下 - 把docker安装包和第9个依赖上传至
root/docker/rpm
路径下 - 上传成功后docker路径下的文件结构:
- 上传成功后rpm路径下的文件结构:
- 批量安装docker路径下的依赖包:
rpm -Uvh *.rpm --nodeps --force
- 安装 container-selinux-2.107-3.el7.noarch.rpm :
rpm -Uvh container-selinux-2.107-3.el7.noarch.rpm
- 安装docker:
rpm -Uvh docker-ce-17.12.0.ce-1.el7.centos.x86_64.rpm
- 启动 docker:
systemctl start docker
- 查看 docker版本:
docker -v
- 至此,docker安装成功
Docker Compose离线安装
1.下载 Linux 版本的 Docker Compose
- 下载地址:点击前往
- 文件名:docker-compose-Linux-x86_64
2.安装
- 将下载下来的“docker-compose-Linux-x86_64”文件上传至root目录下。
- 执行如下命令将其移动到 /usr/local/bin,并改名为“docker-compose”
sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
- 执行如下命令添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
- 使用
docker-compose -v
命令测试是否安装成功 - 至此,Docker Compose 安装成功。
centos7 下使用 docker 安装 nginx
需要环境 docker,此处不做介绍。
1. docker 拉取官方 nginx 镜像
docker pull nginx
2. 等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像。
[root@WSyHRQ171356 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 62f816a209e6 8 days ago 109MB
3. 创建目录 nginx/html、nginx/conf、nginx/logs, 用于存放后面静态页面、配置文件、日志文件的相关东西。
[root@WSyHRQ171356 /]# mkdir -p /nginx/html/ /nginx/conf/ /nginx/logs/
4. 创建配置文件 nginx.conf
[root@WSyHRQ171356 /]# vi /nginx/conf/nginx.conf
粘贴入如下内容:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name 127.0.0.1;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
5. 创建配置文件 mime.types
[root@WSyHRQ171356 /]# vi /nginx/conf/mime.types
粘贴入如下内容:
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;
text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;
image/png png;
image/svg+xml svg svgz;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/webp webp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
application/font-woff woff;
application/java-archive jar war ear;
application/json json;
application/mac-binhex40 hqx;
application/msword doc;
application/pdf pdf;
application/postscript ps eps ai;
application/rtf rtf;
application/vnd.apple.mpegurl m3u8;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/vnd.ms-excel xls;
application/vnd.ms-fontobject eot;
application/vnd.ms-powerpoint ppt;
application/vnd.oasis.opendocument.graphics odg;
application/vnd.oasis.opendocument.presentation odp;
application/vnd.oasis.opendocument.spreadsheet ods;
application/vnd.oasis.opendocument.text odt;
application/vnd.openxmlformats-officedocument.presentationml.presentation
pptx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xlsx;
application/vnd.openxmlformats-officedocument.wordprocessingml.document
docx;
application/vnd.wap.wmlc wmlc;
application/x-7z-compressed 7z;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-perl pl pm;
application/x-pilot prc pdb;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
application/x-xpinstall xpi;
application/xhtml+xml xhtml;
application/xspf+xml xspf;
application/zip zip;
application/octet-stream bin exe dll;
application/octet-stream deb;
application/octet-stream dmg;
application/octet-stream iso img;
application/octet-stream msi msp msm;
audio/midi mid midi kar;
audio/mpeg mp3;
audio/ogg ogg;
audio/x-m4a m4a;
audio/x-realaudio ra;
video/3gpp 3gpp 3gp;
video/mp2t ts;
video/mp4 mp4;
video/mpeg mpeg mpg;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-m4v m4v;
video/x-mng mng;
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
}
6. 新建静态页面文件 index.html 用于测试 nginx 启动状态:
[root@WSyHRQ171356 /]# vi /nginx/html/index.html
内容如下:
<html>
<h1>
Docker is very Good!
</h1>
</html>
7. 使用 nginx 镜像运行容器
[root@WSyHRQ171356 /]# docker run -d -p 80:80 --name nginx -v /nginx/html:/usr/share/nginx/html -v /nginx/conf:/etc/nginx -v /nginx/logs:/var/log/nginx nginx
命令说明:
-
-d: 后台运行容器
-
-p 80:80:将容器的 80 端口映射到主机的 80 端口
-
--name nginx:将容器命名为 nginx
-
-v /nginx/html:/usr/share/nginx/html:将主机中 /nginx/html 目录挂载到容器的 /usr/share/nginx/html 目录
-
-v /nginx/conf:/etc/nginx:将主机中 /nginx/conf 目录挂载到容器的 /etc/nginx 目录
-
-v /nginx/logs:/var/log/nginx:将主机中 /nginx/logs 目录挂载到容器的 /var/log/nginx 目录
8. 查看容器启动情况
[root@WSyHRQ171356 /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8892da7cdcfc nginx "nginx -g ''daemon of…" About an hour ago Up 39 minutes 0.0.0.0:80->80/tcp nginx
9. 通过浏览器访问如下,完成 nginx 安装
关于Centos7.6 下使用 docker 方法安装 stf和docker在centos7中安装的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于1.docker 学习笔记之入门,docker 在 centos7 下的安装以及基础命令的使用、centos7 64bit 安装 docker 最新版教程(Centos7 下安装 Docker Engine)、CentOS7 下 离线安装Docker 和 Docker Compose、centos7 下使用 docker 安装 nginx的相关知识,请在本站寻找。
本文标签: