Docker 3. 示例

Docker 实例 部分。

简单示例 运行一些容器

注: 只是简单示例,生产环境建议把数据库持久化数据映射到容器外部 !!!

具体可在 https://hub.docker.com/ 直接搜索并查看官方文档!

MySQL Docker 容器运行

1
docker run -itd --name mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
1
docker run -itd --name mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v mysql57_data:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower_case_table_names=1

解释

  • run 运行
  • -itd 组合命令:
    • -i 以交互模式运行容器,通常与 -t 同时使用;
    • -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • -d 后台运行容器,并返回容器 ID;
  • –name mysql5731 为容器指定一个(独一无二)名字叫 mysql5731
  • -p 3306:3306 映射容器服务的 3306 端口到宿主机的 3306 端口。外部可以直接通过 宿主机 ip:3306 访问到 Mysql 的服务。(:左边是宿主机端口 , :右边是容器服务端口)
  • -e MYSQL_ROOT_PASSWORD=123456   设置 MySQL 服务 root 用户的密码为 123456
  • mysql:5.7.31 需要启动的 镜像名称:版本号

Postgres Docker 容器运行

1
docker run -itd --name postgres13 -p 5432:5432 -e POSTGRES_PASSWORD=123456 postgres:13
1
docker run -itd --name postgres13 -p 5432:5432 -e POSTGRES_PASSWORD=123456 -e PGDATA=/var/lib/postgresql/data/pgdata -v postgres13_data:/var/lib/postgresql/data postgres:13

解释

  • –name postgres123 为容器指定一个(独一无二)名字叫 postgres123
  • -p 5432:5432 映射容器服务的 5432 端口到宿主机的 5432 端口。外部可以直接通过 宿主机 ip:5432 访问到 Postgres 的服务。(:左边是宿主机端口 , :右边是容器服务端口)  (宿主机端口号独一无二)
  • -e POSTGRES_PASSWORD=123456   设置 Postgres 服务 root 用户的密码为 123456
  • postgres:12.3 需要启动的 镜像名称:版本号

Oracle Docker 容器运行

1
docker run -itd --name oraclexe11g -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true oracleinanutshell/oracle-xe-11g

解释

  • –name oraclexe11g 为容器指定一个(独一无二)名字叫 oraclexe11g
  • -e ORACLE_ALLOW_REMOTE=true   开启远程访问
  • oracleinanutshell/oracle-xe-11g 需要启动的 镜像名称:版本号 注: 无冒号时默认启动 latest 版本!

Redis Docker 容器运行

1
docker run -itd --name redis6 -p 6379:6379 redis:6

解释

  • –name redis606 为容器指定一个(独一无二)名字叫 redis606
  • -p 5432:5432 映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过 宿主机 ip:6379 访问到 Redis 的服务。(:左边是宿主机端口 , :右边是容器服务端口)  (宿主机端口号独一无二)
  • redis:6.0.6 需要启动的 镜像名称:版本号

Cache / IRIS Docker 容器运行

1
docker run -itd --name iriscommunity2020202110 -p 52773:52773 -p 51773:51773  store/intersystems/iris-community:2020.2.0.211.0

解释

  • –name iriscommunity2020202110 为容器指定一个(独一无二)名字叫 iriscommunity2020202110
  • -p 52773:52773 映射容器服务的 52773 端口到宿主机的 52773 端口。外部可以直接通过 宿主机 ip:52773 访问到 Cache / IRIS 的服务。(:左边是宿主机端口 , :右边是容器服务端口)  (宿主机端口号独一无二)
  • -p 51773:51773 映射容器服务的 51773 端口到宿主机的 51773 端口。外部可以直接通过 宿主机 ip:51773 访问到 Cache / IRIS 的服务。(:左边是宿主机端口 , :右边是容器服务端口)  (宿主机端口号独一无二)
  • store/intersystems/iris-community:2020.2.0.211.0   需要启动的 镜像名称:版本号

使用方法

两种方式生成 Docker image

1 使用现有的 Docker Container 进行 Commit 操作获取 image

2 使用 Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#基础镜像
FROM ubuntu:18.04
#维护者
MAINTAINER "Josway"
#复制文件并解压
ADD jre/server-jre-8u261-linux-x64.tar.gz /root/jre/
#复制文件
COPY target/visualization-0.0.1-SNAPSHOT.jar /root/webapps/
#环境变量设置
ENV JAVA_HOME=/root/jre/jdk1.8.0_261
ENV CLASSPATH=$JAVA_HOME/bin
ENV PATH=.:$JAVA_HOME/bin:$PATH
#暴露端口
EXPOSE 8080
#容器启动命令
#CMD ["java","-version"]
#入口点
#ENTRYPOINT ["java","-jar","/root/webapps/drools-0.0.1-SNAPSHOT.jar","--spring.config.location=/root/config/application.properties"]
ENTRYPOINT ["java","-jar","/root/webapps/visualization-0.0.1-SNAPSHOT.jar"]

实例

部署 ISCP

方式 1 直接使用 dockerhub 现成的 tomcat 镜像

1
docker run -it --name iscptest1 -p 9091:8080 -v /home/josway/iscp/:/usr/local/tomcat/webapps/iscp/ tomcat:7.0.105-jdk8-openjdk

方式 2 自己 build 镜像,通过 Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#基础镜像
FROM centos:7
#维护者
MAINTAINER "Josway"
#更新索引 安装软件 nano wget
#RUN yum update
#RUN yum install nano wget -y
#添加添加软件
ADD server-jre-8u261-linux-x64.tar.gz /root/java/jre/
ADD apache-tomcat-7.0.105.tar.gz /root/java/
ADD iscp.tar /root/java/apache-tomcat-7.0.105/webapps/
#环境变量设置
ENV JAVA_HOME=/root/java/jre/jdk1.8.0_261
ENV CLASSPATH=$JAVA_HOME/bin
ENV PATH=.:$JAVA_HOME/bin:$PATH
#容器启动后执行
CMD ["sh","/root/java/apache-tomcat-7.0.105/bin/catalina.sh","run"]
1
docker build -t iscp:1.0 . && docker run --name iscptest2 -p 9092:8080 --privileged iscp:1.0

实例

dockerfile-ensemble.png

参考
https://community.intersystems.com/post/containerization-cach%C3%A9
https://github.com/zrml/ccontainermain

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
FROM centos:7

MAINTAINER "Josway"

# update OS + dependencies & run Caché silent instal
RUN yum -y update \
&& yum -y install which tar hostname net-tools wget \
&& yum -y clean all \
&& ln -sf /etc/locatime /usr/share/zoneinfo/Europe/Prague

ARG password="sys"
ARG cache=ensemble-2016.2.3.904.11-lnxrhx64

ENV TMP_INSTALL_DIR=/tmp/distrib

# vars for Caché silent install
ENV ISC_PACKAGE_INSTANCENAME="ENSEMBLE" \
ISC_PACKAGE_INSTALLDIR="/opt/ensemble/" \
ISC_PACKAGE_UNICODE="Y" \
ISC_PACKAGE_CLIENT_COMPONENTS="" \
ISC_PACKAGE_INITIAL_SECURITY="Normal" \
ISC_PACKAGE_USER_PASSWORD=${password}

# set-up and install Caché from distrib_tmp dir
WORKDIR ${TMP_INSTALL_DIR}

ADD ${cache}.tar.gz .
COPY ccontainermain /
COPY cache.key /

# cache distributive
RUN ./${cache}/cinstall_silent \
&& ccontrol stop $ISC_PACKAGE_INSTANCENAME quietly \
&& rm -rf $TMP_INSTALL_DIR

# Caché container main process PID 1 (https://github.com/zrml/ccontainermain)
RUN chmod +x /ccontainermain

WORKDIR ${ISC_PACKAGE_INSTALLDIR}

# TCP sockets that can be accessed if user wants to (see 'docker run -p' flag)
EXPOSE 57772 1972

ENTRYPOINT ["/ccontainermain", "-cconsole", "-i", "ensemble"]
1
docker build -t ensemble:2016.2.3.904.11 . && docker run -d -p 57772:57772 -p 1972:1972 --privileged ensemble:2016.2.3.904.11

http://localhost:57772/csp/sys/UtilHome.csp


Docker 3. 示例
https://blog.josway.cc/2022/04/25/yuque/Docker 3. 示例/
作者
JOSWAY
发布于
2022年4月25日
许可协议