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
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"
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
|
实例
参考
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"
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
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}
WORKDIR ${TMP_INSTALL_DIR}
ADD ${cache}.tar.gz . COPY ccontainermain / COPY cache.key /
RUN ./${cache}/cinstall_silent \ && ccontrol stop $ISC_PACKAGE_INSTANCENAME quietly \ && rm -rf $TMP_INSTALL_DIR
RUN chmod +x /ccontainermain
WORKDIR ${ISC_PACKAGE_INSTALLDIR}
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