安装应用 Docker和Docker Compose

通过 Docker 化的 OTOBO 部署,您可以在几分钟内启动并运行您的个人 OTOBO 实例。在提供的 Docker 镜像集合中,已经包含了 OTOBO 的所有依赖项。

  • 服务 db:已将 MariaDB 设置为默认数据库。
  • 服务 elastic:为 OTOBO 强力搜索设置了 Elasticsearch。
  • 服务 redis:已启用 Redis 进行快速缓存。
  • 网络*服务:Gazelle 用作快速 Perl 网络服务器。
  • 服务 nginx:Nginx 用作支持 HTTPS 的可选反向代理。

我们认为,这种设置是安装 OTOBO 的理想环境。

需求

经过测试的所需软件最低版本,请参考下面列表:

  • Docker 19.03.08
  • DockerCompose 1.25.0
  • Git 2.25.1

Note

要得到所需的Ubuntu18.04最低版本,请按照https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-18-04和https://wwwdigitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-18-04中的说明进行操作。

可以使用标准系统工具来安装git,Docker和Docker Compose。这是在Ubuntu 20.04上安装的示例:

root> apt-get install git docker docker-compose curl
root> systemctl enable docker

请查看Git和Docker文档,得到更多步骤的说明。

安装

下面的介绍是在假设所有需要的系统都已经安装,并且你已经有了一个工作的Docker环境。我们假设用户**root**被用来和Docker互动,请注意针对一个生产环境,需要有一个专用用户作为Docker管理员。

1. Clone the otobo-docker repo

Docker映像最终将从https://hub.docker.com获取,但是需要从otobo-docker Github存储库中克隆一些设置和命令文件。请确保使用这些文件的合适版本,其中git标签必须对应OTOBO的版本,这里以OTOBO 10.0.4为例。

Note

克隆副本的位置并不重要,在介绍中我们选择 */opt/otobo-docker*作为工作目录。

docker_admin> cd /opt
docker_admin> git clone https://github.com/RotherOSS/otobo-docker.git --branch <BRANCH> --single-branch
docker_admin> ls otobo-docker    # just a sanity check, README.md should exist

2. Create an initial .env file

Docker Compose 配置文件 .env 是您管理 OTOBO 安装的主要界面。首先必须创建该文件,然后自行调整。为了简化这项工作,有几个示例文件可以作为起点。哪个示例文件最合适取决于您的使用情况。在大多数情况下,根据是否支持 TLS,可以在 .docker_compose_env_http.docker_compose_env_https 之间做出选择。其他文件适用于更特殊的情况。

.docker_compose_env_http
OTOBO 网络应用程序提供 HTTP。
.docker_compose_env_https
OTOBO 网络应用程序通过运行 Nginx 作为反向代理网络服务器来提供 HTTPS。
.docker_compose_env_https_custom_nginx
.docker_compose_env_https 类似,但支持自定义 Nginx 配置。
.docker_compose_env_https_kerberos
.docker_compose_env_https 类似,但提供了单点登录的设置示例。请注意,Kerberos 支持仍处于**实验阶段。
.docker_compose_env_http_selenium 和 .docker_compose_env_https_selenium
这些仅在激活 Selenium 测试时用于开发。

Note

使用 ls -a 列出隐藏的样本文件。

默认情况下,OTOBO在标准端口上提供, HTTPS的端口443和端口80。激活HTTPS后,OTOBO Web应用程序实际上始终使用HTTP运行。 HTTPS的支持通过另外的反向代理来实现,该代理通过nginx服务实现。

我们假定以下命令都支持HTTPS。

docker_admin> cd /opt/otobo-docker
docker_admin> cp -p .docker_compose_env_https .env # or .docker_compose_env_http for HTTP

3. Configure the password for the database admin user

调整*.env*文件中的以下数值:

OTOBO_DB_ROOT_PASSWORD

``OTOBO_DB_ROOT_PASSWORD``数据库管理员的密码可以自由选择,数据库管理员创建了数据库用户**otobo**和数据库模式**otobo**。

4. Set up a volume with SSL configuration for the nginx webproxy (optional)

如果OTOBO只能通过HTTP进行,这个步骤就可以跳过。

nginx需要SSL加密的证书和私钥。

Note

为了进行测试和开发,可以使用自签名证书。在一般情况下,必须使用注册证书。

参考<https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-in-ubuntu-18-04>`中的案例,如何创建自己签名的证书。

Note

在nginx中指定一个带有证书的CA链,需要将这个带有实际证书的CA链文件考入一个文件中去。

证书和私钥存储在一个卷中,以便以后Nginx使用,在任何情况下,都需要手动生成该卷,并且需要将证书和密钥复制到该卷:

docker_admin> docker volume create otobo_nginx_ssl
docker_admin> otobo_nginx_ssl_mp=$(docker volume inspect --format '{{ .Mountpoint }}' otobo_nginx_ssl)
docker_admin> echo $otobo_nginx_ssl_mp  # just a sanity check
docker_admin> cp /PathToYourSSLCert/ssl-cert.crt /PathToYourSSLCert/ssl-key.key $otobo_nginx_ssl_mp

需要在我们新创建的* .env *文件中设置复制文件的名称,例如。

OTOBO_NGINX_SSL_CERTIFICATE=/etc/nginx/ssl/ssl-cert.crt``和`OTOBO_NGINX_SSL_CERTIFICATE_KEY=/etc/nginx/ssl/ssl-key.key`

请仅调整文件名,因为路径* / etc / nginx / ssl / *在Docker映像中是硬编码的。

安装应用 Docker和Docker Compose

现在我们使用``docker-compose``启动Docker容器。默认情况下,将从https://hub.docker.com/u/rotheross获取Docker映像。

docker_admin> docker-compose up --detach

在使用HTTP的情况下,要验证六个或五个服务是否正在实际运行,请输入:

docker_admin> docker-compose ps
docker_admin> docker volume ls

6. Install and start OTOBO

在http://yourIPorFQDN/otobo/installer.pl中运行OTOBO安装程序。

Note

请使用新的MySQL数据库在安装程序中配置OTOBO。作为MySQL数据库的根密码,请使用您在* .env *文件的变量``OTOBO_DB_ROOT_PASSWORD''中配置的密码。请保持MySQL主机名的``db''值不变。

与OTOBO玩得开心吧!

Note

要在运行中的容器内切换到 OTOBO 目录,并像往常一样在命令行上工作,可以使用以下 Docker 命令:docker-compose exec web bash``。

附加技术信息

本节对隐含的内容提供了更多的技术见解。

Docker容器列表

容器otobo_web_1
内部端口5000上的OTOBO Web服务器。
容器otobo_daemon_1
OTOBO守护程序。 OTOBO守护程序已启动并定期检查。
容器otobo_db_1
在内部端口3306上运行数据库MariaDB。
容器otobo_elastic_1
在内部端口9200和9300上运行Elasticsearch。
容器otobo_redis_1
将Redis作为缓存服务运行。
可选容器otobo_nginx_1
运行nginx作为反向代理以提供HTTPS支持。

Docker卷概述

Docker卷是在主机上创建的,用于持久性数据。这些允许启动和停止服务而不会丢失数据。请记住,容器是临时的,只有卷中的数据是永久的。

otobo_opt_otobo
包含在 webdaemon 容器中的 /opt/otobo
otobo_mariadb_data
容器 **db**中包含 /var/lib/mysql
otobo_elasticsearch_data
容器`elastic`包含`/usr/share/elasticsearch/datal`。
otobo_redis_data
包含容器“ redis”的数据。
otobo_nginx_ssl
包含TLS文件,证书和私钥,必须手动初始化。

Docker环境变量

在说明中,我们只做了最基本的配置。但 .env 文件允许设置更多变量。以下是最重要的环境变量的简短列表。请注意,基本映像支持更多环境变量。

MariaDB设置

otobo_db_root_password
MariaDB 的根密码。运行服务 db 时需要此设置。

Elasticsearch设置

Elasticsearch需要在生产环境中进行一些设置。请阅读https://www.elastic.co/guide/zh-CN/elasticsearch/reference/7.8/docker.html#docker-prod-prerequisites了解详细信息。

OTOBO_Elasticsearch_ES_JAVA_OPTS
设置案例:* OTOBO_Elasticsearch_ES_JAVA_OPTS = -Xms512m -Xmx512m *,在生产环境中,请将该值提高为4G。

Webserver设置

otobo_web_http_port
设置以防HTTP端口偏离标准端口80。启用HTTPS时,HTTP端口将重定向到HTTPS。

nginx网络代理设置

这些设置在启用HTTPS时使用。

otobo_web_http_port
设置以防HTTP端口偏离标准端口80。将重定向到HTTPS。
otobo_web_https_port
设置以防HTTPS端口偏离标准端口443。
otobo_nginx_ssl_certificate
Nginx Webproxy的SSL证书。例如:* OTOBO_NGINX_SSL_CERTIFICATE = / etc / nginx / ssl / acme.crt *
otobo_nginx_ssl_certificate_key
Nginx Webproxy的SSL密钥。例如:* OTOBO_NGINX_SSL_CERTIFICATE_KEY = / etc / nginx / ssl / acme.key *

针对 Kerberos 的**Nginx 网络代理设置**

当单点登录使用 Kerberos 时,Nginx 将使用此设置。

otobo_nginx_kerberos_keytab
Kerberos keytab 文件。默认值为 /etc/krb5.keytab
otobo_nginx_kerberos_config
Kerberos 配置文件。默认值为 /etc/krb5.conf,通常由 krb5.conf.template 生成
otobo_nginx_kerberos_service_name
Kerberos 服务名称。目前还不清楚该设置实际用于何处。
otobo_nginx_kerberos_realm
Kerberos REALM。用于 /etc/krb5.conf
otobo_nginx_kerberos_kdc
Kerberos kdc / AD 控制器。用于 /etc/krb5.conf
otobo_nginx_kerberos_admin_server
Kerberos 管理服务器。用于 /etc/krb5.conf
otobo_nginx_kerberos_default_domain
Kerberos 默认域。用于 /etc/krb5.conf
nginx_envsubst_template_dir
提供自定义 Nginx 配置模板目录。提供额外的灵活性。

docker-compose设置

这些设置由docker-compose直接使用。

撰写项目名称
项目名称用作卷和容器的前缀。默认情况下,前缀设置为 otobo,因此容器名称为 otobo_web_1otobo_db_1。如果想在同一服务器上运行多个 OTOBO 实例,请更改此名称。
撰写路径分隔符
COMPOSE_FILE数值的分隔符
COMPOSE_FILE
使用* docker-compose / otobo-base.yml 作为基础,并添加所需的扩展文件。例如 docker-compose / otobo-override-http.yml docker-compose / otobo-override-https.yml *
otobo_image_otobo, otobo_image_otobo_elasticsearch, otobo_image_otobo_nginx, ...
用于指定替代 Docker 映像。用于测试本地构建或使用更新版本的映像。

进阶主题

Nginx网络代理的自定义配置

容器 otobo_nginx_1 通过将 Nginx 作为反向代理运行来提供 HTTPS 支持。容器中运行的 Docker 镜像由 Nginx 官方 Docker 镜像 https://hub.docker.com/_/nginx 和 Nginx 的 OTOBO 特定配置组成。

默认的 OTOBO 特定配置可在 /etc/nginx/template/otobo_nginx.conf.template 的 Docker 映像中找到。实际上,这只是最终配置的模板。Nginx 基本镜像会提供一个进程,用相应的环境变量替换模板中的宏。该进程在容器启动时运行。在默认模板文件中,使用了以下宏:

otobo_nginx_ssl_certificate
用于配置 SSL。
otobo_nginx_ssl_certificate_key
用于配置 SSL。
otobo_nginx_web_host
内部使用的 HTTP 主机。
otobo_nginx_web_port
内部使用的 HTTP 端口。

请参见步骤 4.,了解如何使用这种配置可能性来设置 SSL 证书。

Warning

只有OTOBO 10.0.4或更高版本支持以下方法。

如果标准宏不够用,还可以进一步定制。这可以通过用定制版本替换默认配置模板来实现。最佳做法是不要在运行的容器中简单更改配置。相反,我们首先要创建一个包含自定义配置的持久卷。然后,我们告诉 otobo_nginx_1 挂载新卷并使用自定义配置。

首先是生成新卷。在这些示例命令中,我们使用现有模板作为起点。

# stop the possibly running containers
docker_admin> cd /opt/otobo-docker
docker_admin> docker-compose down

# create a volume that is initially not connected to otobo_nginx_1
docker_admin> docker volume create otobo_nginx_custom_config

# find out where the new volume is located on the Docker host
docker_admin> otobo_nginx_custom_config_mp=$(docker volume inspect --format '{{ .Mountpoint }}' otobo_nginx_custom_config)
docker_admin> echo $otobo_nginx_custom_config_mp  # just a sanity check
docker_admin> ls $otobo_nginx_custom_config_mp    # another sanity check

# copy the default config into the new volume
docker_admin> docker create --name tmp-nginx-container rotheross/otobo-nginx-webproxy:latest-10_0  # or latest-10_1, use the appropriate label
docker_admin> docker cp tmp-nginx-container:/etc/nginx/templates/otobo_nginx.conf.template $otobo_nginx_custom_config_mp # might need 'sudo'
docker_admin> ls -l $otobo_nginx_custom_config_mp/otobo_nginx.conf.template # just checking, might need 'sudo'
docker_admin> docker rm tmp-nginx-container

# adapt the file $otobo_nginx_custom_config_mp/otobo_nginx.conf.template to your needs
docker_admin> vim $otobo_nginx_custom_config_mp/otobo_nginx.conf.template

Warning

调整后的Nginx配置通常包含指令** listen **,以明确Web服务器的端口。在OTOBO 10.0.3和OTOBO 10.0.4两个版本中,内部使用的端口有所变化。这个变化必须体现在调整后的nginx配置中。因此,对于10.0.3或更早版本,请使用端口80和443。对于OTOBO 10.0.4,请使用端口8080和8443。

设置卷之后,必须激活调整后的配置。新卷在 docker-compose/otobo-nginx-custom-config.yml 中设置。因此,必须将该文件添加到**COMPOSE_FILE**中。然后,必须引导 Nginx 使用新配置。具体方法是在环境中设置**NGINX_ENVSUBST_TEMPLATE_DIR**。为此,在*.env*文件中取消或添加以下行:

COMPOSE_FILE=docker-compose/otobo-base.yml:docker-compose/otobo-override-https.yml:docker-compose/otobo-nginx-custom-config.yml
NGINX_ENVSUBST_TEMPLATE_DIR=/etc/nginx/config/template-custom

更改后的Docker Compose配置可以通过以下方式进行检查:

docker_admin> docker-compose config | more

最后,可以再次启动容器:

docker_admin> docker-compose up --detach

另请参见https://hub.docker.com/_/nginx中的“在nginx配置中使用环境变量(1.19中的新功能)”部分。

在 Nginx 中使用 Kerberos 支持单点登录

简要说明

要启用 Kerberos 验证,请将 .env 文件 基于示例文件 .docker_compose_env_https_kerberos。这将激活 docker-compose/otobo-override-https-kerberos.yml 中的特殊配置。这个 Docker compose 配置文件会选择一个支持 Kerberos 的 Nginx 映像。它还会将一些特定于 Kerberos 的设置作为环境值传递给正在运行的 Nginx 容器。上面列出了这些设置。

通常,这些设置的值可以在 .env 文件中指定。这些设置的大部分值将用作模板 https://github.com/RotherOSS/otobo/blob/rel-10_1/scripts/nginx/kerberos/templates/krb5.conf.template 的替换值。替换在启动容器时进行。在运行中的容器中,/etc/krb5.conf 文件中将提供调整后的配置。

仍然可以提供用户专用的 /etc/krb5.conf 文件。这可以通过在容器中挂载一个覆盖 /etc/krb5.conf 的卷来实现。这可以通过在 .env 文件中设置 OTOBO_NGINX_KERBEROS_CONFIG,并激活 docker-compose/otobo-override-https-kerberos.yml 中的挂载指令来实现。

*/etc/krb5.keytab*总是针对特定安装,因此必须始终从主机系统加载。

** Kerberos SSO 安装教程**

文档:"so-kerberos

选择非标准端口

默认情况下,端口443和80分别为HTTPS和HTTP服务。在某些情况下,其他服务可能已经使用了这些端口中的一个或两个。在这些情况下,可以通过在* .env *文件中指定`OTOBO_WEB_HTTP_PORT`和`OTOBO_WEB_HTTPS_PORT`来覆盖默认端口。

跳过特定服务的启动

当前的 Docker compose 设置会启动五个服务,激活 HTTPS 后会启动六个服务。但在一些有效的使用案例中,并不需要其中的一个或多个服务。最典型的例子就是数据库不应作为 Docker 服务运行,而应作为外部数据库运行。遗憾的是,没有专门的 Docker compose 选项用于跳过特定服务。不过,"-scale "选项可被滥用于这一目的。因此,在安装外部数据库时,可以使用以下命令:

docker_admin> docker-compose up --detach --scale db=0

当然,也可以通过编辑 docker-compose/otobo-base.yml 文件并删除相关服务定义来实现同样的目标。

准备离线安装

请在能上网并安装了 docker 的系统上下载 `最新版本的 otobo-docker <https://doc.otobo.org/manual/installation/10.1/en/content/installation-docker.html#clone-the-otobo-docker-repo>`___。然后导航到以下文件夹 otobo-docker/docker-compose

cd otobo-docker/docker-compose

现在,你可以运行以下命令从特定文件下载所有 Docker 镜像,在我的例子中,我使用的是 otobo-base.yml

for i in $(cat otobo-base.yml| grep image:| cut -d":" -f3,4 | sed -e "s/-//1" -e"s/\}//g"); do docker pull $i; docker save $i -o $(echo $i|sed "s/\//-/g").docker; done

之后,镜像(.docker)就会出现在 docker-compose 文件夹中,并可以通过`SCP <https://en.wikipedia.org/wiki/Secure_copy_protocol>`__ 等方式上传到目标系统中。

在离线目标系统上,进入存放 docker 镜像的文件夹。然后输入以下命令,逐个导入它们。

在下面的示例中,我导入了 mariadb 映像:

docker load --input mariadb:10.5.docker

定制 OTOBO Docker Compose

与其编辑 docker-compose/ 下的文件并冒着用 otobo-docker 文件夹的 "下一次更新 <https://doc.otobo.org/manual/installation/10.1/en/content/updating-docker.html#updating-the-docker-compose-files>`_" 覆盖自己的选项的风险,不如创建一个额外的 YAML 文件,在其中用额外的选项覆盖特定的服务。

一个常见的例子是通过 3306 端口从外部访问数据库容器。为此,你可以创建一个额外的 docker compose 文件,其内容如下

$ cat custom_db.yml
services:
  db:
    ports:
      - "0.0.0.0:3306:3306"

现在,我们必须告诉 docker-compose 包含我们的新文件。例如,你必须将 YAML 文件添加到 .env 文件中的 COMPOSE_FILE 变量:

COMPOSE_FILE=docker-compose/otobo-base.yml:docker-compose/otobo-override-http.yml:custom_db.yml

现在,我们可以使用 docker-compose 来重新创建我们的容器

$ docker-compose stop # if otobo is running
$ docker-compose up -d

通过此程序,您可以自定义任何服务或卷。

定制 OTOBO Docker 映像

许多自定义操作都可以在外部卷 otobo_opt_otobo 中完成,该卷与 Docker 镜像中的 /opt/otobo 目录相对应。例如,本地 Perl 模块可以安装到 /opt/otobo/local。下面是一个安装不太有用的 CPAN 模块 "Acme::123 "的示例。

$ docker exec -it ${COMPOSE_PROJECT_NAME:=otobo}_web_1 bash
otobo@ce36ff89e637:~$ pwd
/opt/otobo
otobo@ce36ff89e637:~$ cpanm -l local Acme::123
--> Working on Acme::123
Fetching http://www.cpan.org/authors/id/N/NA/NATHANM/Acme-123-0.04.zip ... OK
Configuring Acme-123-0.04 ... OK
Building and testing Acme-123-0.04 ... OK
Successfully installed Acme-123-0.04
1 distribution installed
otobo@ce36ff89e637:~$

这种方法的好处是无需修改 Docker 镜像本身。

安装额外的 Debian 软件包比较麻烦。一种方法是创建自定义 Dockerfile 并使用 OTOBO 镜像作为基础镜像。另一种方法是直接从运行中的容器创建修改后的镜像。这可以通过 "docker commit "命令完成,https://docs.docker.com/engine/reference/commandline/commit/。有关该过程的详细介绍,请访问 https://phoenixnap.com/kb/how-to-commit-changes-to-docker-image

但后一种方法需要克服两个障碍。首先,映像 otobo 默认以 UID 1000 的用户 otobo 运行。问题是用户 otobo 不允许安装系统软件包。因此,解决方案的第一部分是在运行映像时通过"--用户 root "选项。然而,第二个障碍是默认的入口点脚本 /opt/otobo_install/entrypoint.sh 在以 root 身份调用时会立即退出。这一设计决定背后的原因是,应避免无意中以 root 的身份运行。因此,解决方案的第二部分是指定一个不同的入口点脚本,该脚本不关心调用者是谁。下面是一个命令示例,我们在其中为 otobo 添加幸运饼干:

如果我们还没有带标签的 OTOBO 图像,则调出该图像,并检查该图像是否已提供幸运饼干:

$ docker run rotheross/otobo:rel-10_0_10 /usr/games/fortune
/opt/otobo_install/entrypoint.sh: line 57: /usr/games/fortune: No such file or directory

将幸运饼干添加到运行原始 OTOBO 映像的命名容器中。这是以用户 root 的身份在交互会话中完成的:

$ docker run -it --user root --entrypoint /bin/bash --name otobo_orig rotheross/otobo:rel-10_0_10
root@50ac203409eb:/opt/otobo# apt update
root@50ac203409eb:/opt/otobo# apt install fortunes
root@50ac203409eb:/opt/otobo# exit
$ docker ps -a | head

从停止的容器中创建映像并为其命名。注意必须恢复默认用户和入口点脚本:

$ docker commit -c 'USER otobo'  -c 'ENTRYPOINT ["/opt/otobo_install/entrypoint.sh"]' otobo_orig otobo_with_fortune_cookies

最后,我们可以再检查一遍:

$ docker run otobo_with_fortune_cookies /usr/games/fortune
A platitude is simply a truth repeated till people get tired of hearing it.
                -- Stanley Baldwin

修改后的图像可以在 .env 文件中指定,然后用于娱乐和盈利。

创建本地镜像

Note

通常只有在开发过程中才需要在本地构建 Docker 镜像。其他用例包括安装时需要使用最新的基础镜像,或者必须在镜像中添加额外功能。

在本地创建Docker映像所需的文件是git存储库https://github.com/RotherOSS/otobo的一部分:

  • otobo.web.dockerfile
  • otobo.nginx.dockerfile
  • otobo.elasticsearch.dockerfile

实际创建图像的脚本是 bin/docker/build_docker_images.sh

docker_admin> cd /opt
docker_admin> git clone https://github.com/RotherOSS/otobo.git
docker_admin> # checkout the wanted branch. e.g. git checkout rel-10_0_11
docker_admin> cd otobo
docker_admin> # modify the docker files if necessary
docker_admin> bin/docker/build_docker_images.sh
docker_admin> docker image ls

本地构建的 Docker 映像会使用文件 RELEASE 中设置的版本标记为 local-<OTOBO_VERSION>

构建完本地镜像后,可以返回 docker-compose 目录。本地镜像是通过在 .env 中设置 OTOBO_IMAGE_OTOBO, OTOBO_IMAGE_OTOBO_ELASTICSEARCH, ``OTOBO_IMAGE_OTOBO_NGINX``来声明的。

自动安装

与通过 http://yourIPorFQDN/otobo/installer.pl 相比,我们可以走捷径。这对于在新安装的系统上运行测试套件非常有用。

Warning

docker-compose down -v 将清除所有之前的配置和数据。

docker_admin> docker-compose down -v
docker_admin> docker-compose up --detach
docker_admin> docker-compose stop daemon
docker_admin> docker-compose exec web bash\
-c "rm -f Kernel/Config/Files/ZZZAAuto.pm ; bin/docker/quick_setup.pl --db-password otobo_root"
docker_admin> docker-compose exec web bash\
-c "bin/docker/run_test_suite.sh"
.......
docker_admin> docker-compose start daemon

常用命令列表

** Docker **

  • docker system prune -a 系统清理(清除所有未使用的镜像、容器、卷和网络)
  • docker version 显示版本
  • docker build --tag otobo --file=otobo.web.Dockerfile . 创建一个镜像
  • ``docker run --publish 80:5000 otobo``运行新的镜像
  • docker run -it -v opt_otobo:/opt/otobo otobo bash 登陆新的镜像
  • 如果entrypoint.sh被破坏了,可以尝试一下 docker run -it -v opt_otobo:/opt/otobo --entrypoint bash otobo
  • docker ps 显示正在运行的镜像
  • docker images 显示可用的镜像
  • ``docker volume ls``列出卷名
  • docker volume inspect otobo_opt_otobo 检查一个卷
  • docker volume inspect --format '{{ .Mountpoint }}' otobo_nginx_ssl 获取卷挂载点
  • ``docker volume rm tmp_volume``清除一个卷
  • docker inspect <container> 检查一个容器
  • docker save --output otobo.tar otobo:latest-10_0 && tar -tvf otobo.tar`` 列出映像中的文件
  • docker exec -it nginx-server nginx -s reload 重新加载 nginx

docker-compose设置

  • ``docker-compose config``检查并显示相应配置
  • docker-compose ps 显示正在运行的容器
  • docker-compose exec nginx nginx -s reload`` 重新加载 nginx