Docker快速启动清单

以下容器均使用 Docker version 24.0.2 版本测试使用,这里需要注意一下,高版本的Docker不支持镜像V1版本,不知道怎么操作才可以让它支持,所以推荐使用低版本

如果觉得不直观,或者觉得有点乱,可以访问以下网址,可能会直观点
博客网址
Quick Reference网址

关于修改Docker的镜像拉取地址

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://1ojaslt1.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

关于Docker相关数据路径修改

注意:这样做可能会导致现有的容器和镜像无法正常工作,因为它们的路径指向旧的位置,你需要重新启动这些容器,或者重新创建它们以确保它们的配置指向新的volume路径,推荐在一开始部署Docker时操作 !

# 1、停止 Docker 服务
sudo systemctl stop docker

# 2、将现有的 Docker 数据移动到新的目录
sudo mv /var/lib/docker /new/path/docker

# 3、更新 Docker 的配置文件 /etc/docker/daemon.json,添加或修改 data-root 选项
{
  "data-root": "/new/path/docker"
}

# 4、重新启动 Docker 服务
sudo systemctl start docker

关于Docker版本降级的方法

yum downgrade --setopt=obsoletes=0 -y docker-ce-${version} docker-ce-selinux-${version}

注:${version}指定要降级的版本。

中间件

Nginx

镜像拉取:docker pull nginx

启动容器的方式

docker run -itd -p 80:80 --restart=always --name Nginx \
-v /docker_data/Nginx_data/html:/usr/share/nginx/html \
-v /docker_data/Nginx_data/conf:/etc/nginx/conf.d \
-v /docker_data/Nginx_data/nginx.conf:/etc/nginx/nginx.conf \
nginx

# 参数解释
# -itd: 表示以后台运行的方式启动容器,并分配一个伪终端(pseudo-TTY)和保持 STDIN 打开
# -p 80:80: 将主机的端口映射到容器的端口,这里是将主机的 80 端口映射到容器的 80 端口,用于访问 Nginx 站点页面
# --name Nginx: 为容器指定一个名称,这里是 "Nginx"
# --restart=always: 表示当容器退出时,总是重新启动容器

# 持久化解释
# -v /docker_data/Nginx_data/html:/usr/share/nginx/html
# 将到容器中的 "/usr/share/nginx/html" 路径映射挂载到 宿主机中的"/docker_data/Nginx_data/html"目录下,这样做的目的是将 Nginx 的 站点页面 路径映射到本地
# -v /docker_data/Nginx_data/conf:/etc/nginx/conf.d
# 将到容器中的 "/etc/nginx/conf.d" 路径映射挂载到 宿主机中的"/docker_data/Nginx_data/conf"目录下,这样做的目的是将 Nginx 的 虚拟主机配置文件 路径映射到本地
# -v /docker_data/Nginx_data/nginx.conf:/etc/nginx/nginx.conf
# 将到容器中的 "/etc/nginx/nginx.conf" 路径映射挂载到 宿主机中的"/docker_data/Nginx_data/nginx.conf"目录下,这样做的目的是将 Nginx 的 主配置文件 路径映射到本地

Tomcat

镜像拉取:docker pull tomcat

启动容器的方式

docker run -itd -p 8080:8080 --restart=always --name Tomcat \
-v /docker_data/Tomcat_data/webapps:/usr/local/tomcat/webapps/ROOT \
tomcat

# 参数解释
# -itd: 表示以后台运行的方式启动容器,并分配一个伪终端(pseudo-TTY)和保持 STDIN 打开
# -p 8080:8080: 将主机的端口映射到容器的端口,这里是将主机的 8080 端口映射到容器的 8080 端口,用于访问 Tomcat 站点页面
# --name Tomcat: 为容器指定一个名称,这里是 "Tomcat"
# --restart=always: 表示当容器退出时,总是重新启动容器

# 持久化解释
# -v /docker_data/Tomcat_data/webapps:/usr/local/tomcat/webapps/ROOT
# 将到容器中的 "/usr/local/tomcat/webapps/ROOT" 路径映射挂载到 宿主机中的"/docker_data/Tomcat_data/webapps"目录下,这样做的目的是将 Tomcat 的 站点页面 路径映射到本地

Weblogic

镜像拉取:docker pull ismaleiva90/weblogic12

启动容器的方式

docker run -itd -p 7001:7001 -p 7002:7002 -p 5556:5556 \
--restart=always --name Weblogic \
ismaleiva90/weblogic12

# 参数解释
# -itd: 表示以后台运行的方式启动容器,并分配一个伪终端(pseudo-TTY)和保持 STDIN 打开
# -p 7001:7001: 将主机的端口映射到容器的端口,这里是将主机的 7001 端口映射到容器的 7001 端口,用于访问 Weblogic 控制台页面
# -p 7002:7002: 将主机的端口映射到容器的端口,这里是将主机的 7002 端口映射到容器的 7002 端口,用于访问 Weblogic 站点页面
# -p 5556:5556: 将主机的端口映射到容器的端口,这里是将主机的 5556 端口映射到容器的 5556 端口,用于访问 Weblogic 站点页面
# --name Weblogic: 为容器指定一个名称,这里是 "Weblogic"
# --restart=always: 表示当容器退出时,总是重新启动容器

Web Console
http://localhost:7001/console
User: weblogic
Pass: welcome1

数据库

关系型数据库

MySQL

镜像拉取:docker pull mysql:8.0.31

启动容器的方式

docker run -d -it -p 3306:3306 --name MySQL --restart=always \
-v /docker_data/MySQL_Data/data:/var/lib/mysql \
-v /docker_data/MySQL_Data/conf:/etc/mysql/conf.d \
--privileged=true \
-e MYSQL_DATABASE='test_db' \
-e MYSQL_ROOT_PASSWORD='abc$123' \
-e MYSQL_USER='testuser' -e MYSQL_PASSWORD='abc$123' \
mysql:8.0.31 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

# 参数解释
# -d: 表示以后台运行的方式启动容器
# -it: 分别表示分配一个伪终端(pseudo-TTY)并保持 STDIN 打开
# -p 3306:3306: 将主机的端口映射到容器的端口,这里是将主机的 3306 端口映射到容器的 3306 端口,用于访问 MySQL 数据库
# --name MySQL: 为容器指定一个名称,这里是 "MySQL"
# --restart=always: 表示当容器退出时,总是重新启动容器
# --privileged=true: 若不加字段--privileged=true可能会报权限错误
# --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci: 这两个选项参数是改变所有表的默认编码和排序规则以使用 UTF-8 (utf8mb4)

# 持久化解释
# -v /docker_data/MySQL_Data/data:/var/lib/mysql
# 将到容器中的 "/var/lib/mysql" 路径映射挂载到 宿主机中的"/docker_data/MySQL_Data/data"目录下,这样做的目的是将 MySQL 数据库的数据存储在本地中,以便数据在容器重启时得以保留
# -v /docker_data/MySQL_Data/conf:/etc/mysql/conf.d
# 将到容器中的 "/etc/mysql/conf.d" 路径映射挂载到 宿主机中的"/docker_data/MySQL_Data/conf"目录下,这样做的目的是自定义配置文件的路径

# 环境变量解释
# MYSQL_ROOT_PASSWORD【必选】
# 该变量是必需的,指定将为 MySQL 的 root 超级用户帐户设置的密码,MYSQL_RANDOM_ROOT_PASSWORD=yes这个变量也是设置root用户密码的,不同的是他是随机生成一个密码,生成的 root 密码将打印到 stdout ( GENERATED ROOT PASSWORD: .....)。
# MYSQL_USER【可选】
# 这些变量是可选的,结合使用来创建新用户。该用户将被授予变量指定的数据库的超级用户权限。创建用户需要同时设置`MYSQL_PASSWORD`变量。
# 请注意,无需使用此机制来创建 root 超级用户,默认情况下会使用变量指定的密码创建该用户MYSQL_ROOT_PASSWORD
# MYSQL_PASSWORD【可选】
# 这些变量是可选的,结合使用来创建新用户并设置该用户的密码。该用户将被授予变量指定的数据库的超级用户权限。创建用户需要这两个变量。
# 请注意,无需使用此机制来创建 root 超级用户,默认情况下会使用变量指定的密码创建该用户MYSQL_ROOT_PASSWORD
# MYSQL_DATABASE【可选】
# 该变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了MYSQL_USER、MYSQL_PASSWORD这两个变量,则该变量设置的用户将被授予对此数据库的超级用户访问权限

MySQL相关用户远程的配置

# 允许root用户从任何地址远程操作任何数据库、表
GRANT ALL ON *.* TO 'root'@'%';

# 更改加密规则
ALTER USER 'root'@'%' IDENTIFIED BY 'abc$123' PASSWORD EXPIRE NEVER;

# 设置root用户远程授权
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc$123';

# 创建测试数据库
create database test_db character set utf8;
# 创建测试用户
CREATE USER 'testuser'@'%' IDENTIFIED BY 'abc$123';
# 测试用户授予所有权限到test_db数据库
GRANT ALL PRIVILEGES ON test_db.* TO 'testuser'@'%';

# 刷新权限
flush privileges;

Oracle 11g

镜像拉取:docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

启动容器的方式

docker run -d -it -p 1521:1521 --name Oracle_11g --restart=always \
--mount source=oracle_vol,target=/home/oracle/app/oracle/oradata \
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

# 参数解释
# -d: 表示以后台运行的方式启动容器
# -it: 分别表示分配一个伪终端(pseudo-TTY)并保持 STDIN 打开
# -p 1521:1521: 将主机的端口映射到容器的端口,这里是将主机的 1521 端口映射到容器的 1521 端口,用于访问 Oracle 数据库
# --name Oracle_11g: 为容器指定一个名称,这里是 "Oracle_11g"
# --restart=always: 表示当容器退出时,总是重新启动容器

# 持久化解释
# --mount source=oracle_vol,target=/home/oracle/app/oracle/oradata 将名为 "oracle_vol" 的 Docker 卷挂载到容器中的 "/home/oracle/app/oracle/oradata" 路径。这样做的目的是将 Oracle 数据库的数据存储在持久化的卷中,以便数据在容器重启时得以保留

容器内部配置

docker exec -it Oracle_11g bash

# 进入容器后切换到root用户,设置环境变量(root用户的密码默认是helowin)
vi /etc/profile #末尾加上
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH

vi /home/oracle/.bashrc #末尾加上
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH

# 修改完之后source一下
source /etc/profile
source /home/oracle/.bashrc

Oracle相关用户远程的配置

# 切换回oracle用户,登录oracle修改密码
su - oracle
sqlplus /nolog

# 以SYSDBA角色连接到数据库,使用SYSDBA角色登录,该角色具有最高级别的数据库权限,允许进行系统级别的管理任务
CONNECT / AS SYSDBA;

# 修改系统用户system的登录密码
alter user system identified by 新密码;

# 创建一个新用户,并指定其登录密码。
CREATE USER 用户 IDENTIFIED BY 新密码;

# 允许新用户连接到数据库。
GRANT CREATE SESSION TO 用户;

# 允许用户新用户在数据库中创建新的表
GRANT CREATE TABLE TO 用户;

# 设置新用户在表空间USERS上的存储配额为无限制,允许用户存储数据
ALTER USER 用户 QUOTA UNLIMITED ON USERS;

开启远程连接(修改监听)

vi /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora
LISTENER_HELOWIN =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))


HELOWIN =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = helowin)
    )
  )


vi /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
    )
  )

# 添加以下内容
SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = helowin)
  (SID_NAME = helowin)
  )
)

ADR_BASE_LISTENER = /home/oracle/app/oracle


# 修改完记得重启容器
docker restart Oracle_11g

PostgreSQL

镜像拉取:docker pull postgres

启动容器的方式

docker run -d -p 5432:5432 --restart=always --name PostgreSQL \
-e POSTGRES_USER='postgres' \
-e POSTGRES_PASSWORD='abc$123' \
-e POSTGRES_DB='test' \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v /docker_data/Postgres_Data:/var/lib/postgresql/data \
-d postgres

# 参数解释
# -d: 表示以后台运行的方式启动容器
# -it: 分别表示分配一个伪终端(pseudo-TTY)并保持 STDIN 打开
# -p 5432:5432: 将主机的端口映射到容器的端口,这里是将主机的 5432 端口映射到容器的 5432 端口,用于访问 Postgre 数据库
# --name PostgreSQL: 为容器指定一个名称,这里是 "PostgreSQL"
# --restart=always: 表示当容器退出时,总是重新启动容器


# 持久化解释
# -v /docker_data/Postgres_Data:/var/lib/postgresql/data
# 将到容器中的 "/var/lib/postgresql/data" 路径映射挂载到 宿主机中的 ”/docker_data/Postgres_Data“目录下,这样做的目的是将 Postgre 数据库的数据存储在本地中,以便数据在容器重启时得以保留

# 环境变量解释
# POSTGRES_PASSWORD【必选】
# 您需要使用此环境变量才能使用 PostgreSQL 映像。它不能为空或未定义。该环境变量设置 PostgreSQL 的超级用户密码。默认超级用户由环境变量定义POSTGRES_USER
# POSTGRES_USER【可选】
# 此可选环境变量与设置用户及其密码结合使用。该变量将创建具有超级用户权限的指定用户和同名的数据库。如果未指定,则将使用默认用户"postgres"
# POSTGRES_DB【可选】
# 此可选环境变量可用于为首次启动映像时创建的默认数据库定义不同的名称。如果未指定,则将使用POSTGRES_USER设定的值,如果POSTGRES_USER没有设定则默认为"postgres"。
# PGDATA【可选】
# 默认为/var/lib/postgresql/data 如果您使用的数据卷是文件系统挂载点(如 GCE 持久磁盘),或无法被用户 chowned 的远程文件夹postgres(如某些 NFS 挂载),或包含文件夹/文件(例如lost+found),则 Postgresinitdb需要一个子目录在安装点内创建以包含数据。

达梦

镜像拉取:docker pull if010/dameng

启动容器的方式

docker run -d -p 5236:5236 --restart=always --name DaMengDB --privileged=true \
-e PAGE_SIZE=16 \
-e LD_LIBRARY_PATH=/opt/dmdbms/bin \
-e EXTENT_SIZE=32 \
-e BLANK_PAD_MODE=1 \
-e LOG_SIZE=1024 \
-e UNICODE_FLAG=1 \
-e LENGTH_IN_CHAR=1 \
-e INSTANCE_NAME=dm8_test \
-v /docker_data/DaMeng_Data:/opt/dmdbms/data \
if010/dameng


# 参数解释
# *该镜像是本人从官网下载后重新上传Docker Hub的,可放心使用
# -d: 表示以后台运行的方式启动容器
# -it: 分别表示分配一个伪终端(pseudo-TTY)并保持 STDIN 打开
# -p 5236:5236: 将主机的端口映射到容器的端口,这里是将主机的 5236 端口映射到容器的 5236 端口,用于访问达梦数据库
# --name DaMengDB: 为容器指定一个名称,这里是 "DaMengDB"
# --restart=always: 表示当容器退出时,总是重新启动容器

# 持久化解释
# -v /docker_data/DaMeng_Data:/opt/dmdbms/data
# 将到容器中的 "/opt/dmdbms/data" 路径映射挂载到 宿主机中的 ”/docker_data/DaMeng_Data“目录下,这样做的目的是将 达梦 数据库的数据存储在本地中,以便数据在容器重启时得以保留留

使用 -e 命令参数指定数据库初始化时,需要注意的是 页大小 (page_size)、簇大小 (extent_size)、大小写敏感 (case_sensitive)、字符集 (UNICODE_FLAG) 、VARCHAR 类型以字符为单位 (LENGTH_IN_CHAR)、空格填充模式 (BLANK_PAD_MODE) 、页检查模式(PAGE CHECK)等部分参数,一旦确定无法修改,在初始化实例时确认需求后谨慎设置。

DaMeng容器使用相关信息

# 通过以下命令可以查看 Docker 镜像中数据库初始化的参数,找到 Env 项可以看到在数据库初始化时设置的参数值,包括页大小(PAGE_SIZE)、簇大小(EXTENT_SIZE)、字符集(UNICODE_FLAG)、默认密码(SYSDBA_PWD)等。
docker inspect DaMengDB

# 进入容器终端会话
docker exec -it DaMengDB /bin/bash
 
# 进入容器下达梦的位置
cd /opt/dmdbms/bin

# 注意
# 1.如果使用 docker 容器里面的 disql,进入容器后,先执行 source /etc/profile 防止中文乱码。
# 2.新版本 Docker 镜像中数据库默认用户名/密码为 SYSDBA/SYSDBA001(注意全部都是大写)。

人大金仓

镜像拉取:docker pull if010/kingbase:v009r001c001b0025

启动容器的方式

docker run -idt -p 5432:54321 --restart=always --name Kingbase --privileged=true \
-e DB_MODE=oracle \
-e NEED_START=yes \
-e DB_USER=kingbase \
-e DB_PASSWORD=abc123 \
-e ENABLE_CI=yes \
-v /docker_data/Kingbase_Data:/home/kingbase/userdata \
if010/kingbase:v009r001c001b0025 /usr/sbin/init


# 参数解释
# *该镜像是本人从官网下载后重新上传Docker Hub的,可放心使用,官网提供了两个下载版本,一个是v008r006c008b0014,另一个是v009r001c001b0025,可以拉取对应的tag镜像进行测试使用
# -itd: 表示以后台运行的方式启动容器,并分配一个伪终端(pseudo-TTY)和保持 STDIN 打开
# -p 5432:54321: 将主机的端口映射到容器的端口,这里是将主机的 5432 端口映射到容器的 5432 端口,用于访问 人大金仓 数据库
# --name Kingbase: 为容器指定一个名称,这里是 "Kingbase"
# --restart=always: 表示当容器退出时,总是重新启动容器

# 持久化解释
# -v /docker_data/Kingbase_Data:/home/kingbase/userdata
# 将到容器中的 "/home/kingbase/userdata" 路径映射挂载到 宿主机中的 ”/docker_data/Kingbase_Data“目录下,这样做的目的是将 人大金仓 数据库的数据存储在本地中,以便数据在容器重启时得以保留留

# 环境变量解释
# DB_USER【可选】
# 此可选环境变量与设置用户及其密码结合使用。如果未指定,则将使用默认用户"system"
# DB_PASSWORD【可选】
# 此可选环境变量与设置用户及其密码结合使用。如果未指定,则将使用默认用户"123456"
# DB_MODE【可选】
# 此可选环境变量是设置数据库模式,数据库模式支持oracle、pg、mysql
# NEED_START【可选】
# 此可选环境变量是设置进入容器后是否启动数据库,yes(默认 启动数据库)/ no(不启动数据库)
# ENABLE_CI【可选】
# 此可选环境变量是设置是否需要配置大小写敏感,yes(默认 大小写不敏感)/no 大小写敏感

Kingbase容器使用相关信息

# 进入容器终端会话
docker exec -it Kingbase /bin/bash

# 启动容器后,相关配置文件会随着data目录一起持久化,包括kingbase.conf、 kingbase_auto.conf、sys_hba.conf等配置文件,在持久化目录中修改配置文件后,使用如下命令使修改生效:
/home/kingbase/install/kingbase/bin/sys_ctl reload -D  /home/kingbase/userdata/data/

# 使用ksql输入密码进行访问(默认kingbase用户)
ksql -Usystem -d test -p54321

# 容器外访问数据库(需要密码)
ksql -Ukingbase -d test -p 4321 -h ${container_host_ip}

# 数据库启动和停止(默认kingbase用户)
sys_ctl -D /home/kingbase/xxxx start/stop

NoSQL 数据库

Redis

镜像拉取:docker pull redis

Redis配置文件

vim /docker_data/Redis_Data/conf/redis.conf

port 6379
requirepass abc$123
bind 0.0.0.0
protected-mode no
daemonize no
appendonly yes
databases 3

启动容器的方式

docker run -d -p 6379:6379 --restart=always --name Redis \
-v /docker_data/Redis_Data/conf:/usr/local/etc/redis \
-v /docker_data/Redis_Data/data:/data \
redis redis-server /usr/local/etc/redis/redis.conf

# 参数解释
# -d: 表示以后台运行的方式启动容器
# -it: 分别表示分配一个伪终端(pseudo-TTY)并保持 STDIN 打开
# -p 6379:6379: 将主机的端口映射到容器的端口,这里是将主机的 6379 端口映射到容器的 6379 端口,用于访问 Redis 数据库
# --name Redis: 为容器指定一个名称,这里是 "Redis"
# --restart=always: 表示当容器退出时,总是重新启动容器

# 持久化解释
# -v /docker_data/Redis_Data/conf:/usr/local/etc/redis
# 将到容器中的 "/usr/local/etc/redis" 路径映射挂载到 宿主机中的"/docker_data/Redis_Data/conf"目录下,这样子做的目的是可以自定义Redis的配置文件
# -v /docker_data/Redis_Data/data:/data
# 将到容器中的 "/data" 路径映射挂载到 宿主机中的"/docker_data/Redis_Data/data"目录下,这样做的目的是将 Redis 数据库的数据存储在本地中,以便数据在容器重启时得以保留

# 关于启动命令
# redis-server /usr/local/etc/redis/redis.conf
# 容器内部执行该命令是为了按照我们自定义的配置文件启动,这个不是必须的!!!

MongoDB

镜像拉取:docker pull mongo

MongoDB配置文件

vim /docker_data/MongoDB_Data/conf/mongod.conf

storage:
  dbPath: /data/db
  journal:
    enabled: true
#  engine:
#  wiredTiger:

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27017
  bindIp: 0.0.0.0

processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

启动容器的方式

docker run -d -p 27017:27017 --restart=always --name MongoDB \
-e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
-e MONGO_INITDB_ROOT_PASSWORD=abc123 \
-v /docker_data/MongoDB_Data/data:/data/db \
-v /docker_data/MongoDB_Data/conf:/etc/mongo \
mongo --config /etc/mongo/mongod.conf --wiredTigerCacheSizeGB 1.5

# 参数解释
# -d: 表示以后台运行的方式启动容器
# -it: 分别表示分配一个伪终端(pseudo-TTY)并保持 STDIN 打开
# -p 27017:27017: 将主机的端口映射到容器的端口,这里是将主机的 27017 端口映射到容器的 27017 端口,用于访问 MongoDB 数据库
# --name MongoDB: 为容器指定一个名称,这里是 "MongoDB"
# --restart=always: 表示当容器退出时,总是重新启动容器
# --config /etc/mongo/mongod.conf: 指定配置文件路径 (这个不是必须的,设置此选项之前需准备好mongod.conf文件映射到Docker内部)
# --wiredTigerCacheSizeGB 1.5: 设置WiredTiger缓存大小限制为1.5G

# 持久化解释
# -v /docker_data/MongoDB_Data/conf:/etc/mongo
# 将到容器中的 "/etc/mongo" 路径映射挂载到 宿主机中的"/docker_data/MongoDB_Data/conf"目录下,这样子做的目的是可以自定义MongoDB的配置文件
# -v /docker_data/Redis_Data/data:/data
# 将到容器中的 "/data/db" 路径映射挂载到 宿主机中的"/docker_data/MongoDB_Data/data"目录下,这样做的目的是将 MongoDB 数据库的数据存储在本地中,以便数据在容器重启时得以保留

# 环境变量解释
# MONGO_INITDB_ROOT_USERNAME【可选】
# 该变量是创建管理员用户,该用户是在admin身份验证数据库中创建的,并被赋予角色root,这是一个"超级用户"角色。
# MONGO_INITDB_ROOT_PASSWORD【可选】
# 该变量是为创建管理员用户设置密码,需配合MONGO_INITDB_ROOT_USERNAME变量参数使用

Memcache

镜像拉取:docker pull memcached

启动容器的方式

docker run -d -p 11211:11211 --name Memcached --restart=always memcached memcached -m 64

# 参数解释
# -d: 表示以后台运行的方式启动容器
# -it: 分别表示分配一个伪终端(pseudo-TTY)并保持 STDIN 打开
# -p 11211:11211: 将主机的端口映射到容器的端口,这里是将主机的 11211 端口映射到容器的 11211 端口,用于访问 Memcached 消息队列的web管理界面
# --name Memcached: 为容器指定一个名称,这里是 "Memcached"
# --restart=always: 表示当容器退出时,总是重新启动容器

# 命令执行解释
# memcached -m 64
# 这会将 Memcached 服务器设置为使用 64 MB 进行存储

消息队列

RabbitMQ

镜像拉取:docker pull rabbitmq

启动容器的方式

docker run -itd -p 15672:15672 --name RabbitMQ \
--hostname rmq-test.if010.com \
-e RABBITMQ_DEFAULT_VHOST=rmq-test.if010.com \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=abc123 \
rabbitmq:3-management 

# 参数解释
# -itd: 表示以后台运行的方式启动容器,并分配一个伪终端(pseudo-TTY)和保持 STDIN 打开
# -p 15672:15672: 将主机的端口映射到容器的端口,这里是将主机的 15672 端口映射到容器的 15672 端口,用于访问 RabbitMQ 控制台页面,内部除了该端口外,还开了4369/tcp、5671-5672/tcp、15671/tcp、15691-15692/tcp、25672/tcp
# --name RabbitMQ: 为容器指定一个名称,这里是 "RabbitMQ"
# --restart=always: 表示当容器退出时,总是重新启动容器
# --hostname: 设置容器主机名称

# 环境变量解释
# RABBITMQ_DEFAULT_VHOST【可选】
该变量是可选的,是设置 RabbitMQ 的主机名称
# RABBITMQ_DEFAULT_USER【可选】
该变量是可选的,是设置 RabbitMQ 的账户
# RABBITMQ_DEFAULT_PASS【可选】
该变量是可选的,是设置 RabbitMQ 的密码

其他

Portainer (Docker Web 管理工具)

镜像拉取:docker pull portainer/portainer-ee

启动容器的方式

docker run -d -p 8000:8000 -p 9443:9443 --name Portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /docker_data/Portainer_data:/data \
portainer/portainer-ee:latest

Gitlab

镜像拉取:docker pull gitlab/gitlab-ce

启动容器的方式

docker run -d --name GitLab \
--hostname gitlab.if010.com \
--publish 8443:443 --publish 8081:80 -p 2222:22 \
--restart always \
--volume /docker_data/GitLab_data/config:/etc/gitlab \
--volume /docker_data/GitLab_data/logs:/var/log/gitlab \
--volume /docker_data/GitLab_data/data:/var/opt/gitlab \
-v /etc/localtime:/etc/localtime \
--shm-size 256m \
gitlab/gitlab-ce:latest

Guacd (远程协议工具)

镜像拉取:docker pull guacamole/guacd

启动容器的方式

docker run -d -p 4822:4822 --privileged=true --restart=always --name Guacd \
-e LANG=zh_CN.UTF-8 \
-v /docker_data/Guacd/rdp-rec:/rdp-rec \
-v /docker_data/Guacd/rdp-file:/rdp-file \
guacamole/guacd

# 参数解释
# -d: 表示以后台运行的方式启动容器
# -it: 分别表示分配一个伪终端(pseudo-TTY)并保持 STDIN 打开
# -p 4822:4822: 将主机的端口映射到容器的端口,这里是将主机的 4822 端口映射到容器的 4822 端口,用于访问 Guacd远程的API接口
# --name Guacd: 为容器指定一个名称,这里是 "Guacd"
# --restart=always: 表示当容器退出时,总是重新启动容器
# --privileged=true: 若不加字段--privileged=true可能会报权限错误

# 持久化解释
# -v /docker_data/Guacd/rdp-rec:/rdp-rec
# 代码内固定配置,guacd服务rdp录屏文件存放路径
# -v /docker_data/Guacd/rdp-file:/rdp-file
# 代码内固定配置,guacd服务rdp远程磁盘文件存放路

# 环境变量解释
# LANG
# 设置字符编码格式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/606422.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV Radon变换探测直线(拉东变换)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 Radon变换可以将原始图像中直线特征的处理问题转化为变换域图像中对应点特征的处理问题,其中对应特征点的横坐标表示原始图像的旋转角度,一般来讲原始图像中的噪声不会分布在直线的特征上。因此,Radon变换在探测…

互联网洗鞋工厂实现新时代下的家庭洗护服务;

互联网洗鞋工厂实现新时代下的家庭洗护服务; 拽牛科技洗护系统以智慧城市系统为依托&#xff0c;洗鞋工厂为中心&#xff0c;利用互联网&#xff0b;社区服务商模式&#xff0c;实现了新时代下的家庭洗护服务&#xff0c; 将客户&#xfe63;&#xfe63;社区服务商&#xfe63…

笔灵AI实习体验报告模版:新媒体运营实习生

笔灵AI实习体验报告模版&#xff0c;可以自己输入岗位&#xff0c;有需要的可以试试https://ibiling.cn/scene/inex?fromcsdnsx 免费分享【新媒体运营实习生】的实习体验报告 尊敬的导师和领导们&#xff1a;首先&#xff0c;我想对给予我这次宝贵实习机会的公司表示衷心的感…

5月数学进度应该到哪里?听说24更难了,进度要加快吗?

刷一本习题册够吗&#xff1f;刷哪本&#xff1f;什么时候刷&#xff1f; 确实&#xff0c;24考完&#xff0c;大家都发现&#xff0c;没有一本习题册&#xff0c;覆盖了考试的所有知识点。 主流的模拟卷&#xff0c;都没有达到24卷的难度。 如何才能在最短的时间内&#xff…

SpringCloud Config 分布式配置中心

SpringCloud Config 分布式配置中心 概述分布式系统面临的——配置问题ConfigServer的作用 Config服务端配置Config客户端配置 可以有一个非常轻量级的集中式管理来协调这些服务 概述 分布式系统面临的——配置问题 微服务意味着要将单体应用中的业务拆分成一个个字服务&…

极市平台 | 一文详解视觉Transformer模型压缩和加速策略(量化/低秩近似/蒸馏/剪枝)

本文来源公众号“极市平台”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;一文详解视觉Transformer模型压缩和加速策略(量化/低秩近似/蒸馏/剪枝) 作者丨Feiyang Chen等 来源丨AI生成未来 编辑丨极市平台 0 极市导读 本研究…

C/C++ 初级球球大作战练手

效果演示&#xff1a; https://live.csdn.net/v/385490 游戏初始化 #include <stdbool.h> #include<stdio.h> #include<stdlib.h> #include<time.h> #include<graphics.h> #include <algorithm> #include<math.h> #include<mmsy…

【全开源】Java俱乐部系统社区论坛商城系统源码-奔驰奥迪保时捷大众宝马等汽车俱乐部

特色功能&#xff1a; 会员管理与服务&#xff1a;系统支持多种会员身份以及优惠政策的制定&#xff0c;如普通会员、VIP会员、黄金会员等&#xff0c;且可以根据会员等级不同&#xff0c;进行不同的营销策略。此外&#xff0c;还提供了会员信息录入、会员积分管理、消费记录管…

算法学习:递归

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、什么是递归&#xff1f;三、两大基本要素&#x1f3c1; 基线条件&#xff08;Base Case&#xff09;&#x1f501; 递归条件&#xff08;Recursive Case&#xff09;&#x1f4c3; 代码示例&#xff1a;计算斐波…

【PyTorch实战演练】使用CelebA数据集训练DCGAN(深度卷积生成对抗网络)并生成人脸(附完整代码)

文章目录 0. 前言1. CelebA数据集1.1 核心特性与规模1.2 应用与用途1.3 获取方式1.4 数据预处理 2. DCGAN的模型构建2.1 生成器模型2.2 判别器模型 3. DCGAN的模型训练&#xff08;重点&#xff09;3.1 训练参数3.2 模型参数初始化3.3 训练过程 4. 结果展示4.1 loss值变化过程4…

从零开始!学习绘制3D表情的详细指南

在2020 年的苹果全球开发者大会(WWDC)&#xff0c;苹果发布了新的 macOS 11(又名 Big Sur)。其中在UI视觉方面macOS Big Sur 系统最大的变化就是图标上&#xff0c; Big Sur更新了很多新设计风格的 3D应用图标&#xff0c;3D设计的确可以提升UI整体的视觉氛围&#xff0c;并且现…

Linux——socket编程之tcp通信

前言 前面我们学习socket的udp通信&#xff0c;了解到了socket的概念与udp的实现方法&#xff0c;今天我们来学习一下面向连接的tcp通信。 一、tcp套接字创建 UDP和TCP都是通过套接字&#xff08;socket&#xff09;来实现通信的&#xff0c;因此TCP也得使用socket()接口创建…

企业架构领域的天花板——TOGAF证书

TOGAF证书是一项重要的企业架构认证&#xff0c;为专业人士提供了广泛的知识和技能&#xff0c;帮助他们在企业架构领域取得突破。 一、TOGAF证书的重要 提升专业知识和技能&#xff1a;TOGAF证书提供了广泛的企业架构知识和最佳实践&#xff0c;使专业人士能够更好地理解和应…

ESD静电问题 | 电容谐振频率点及选择

静电枪放出的静电属于共模干扰 针对静电整改加电容的时候选择频率在17.5MHz~350MHz区间的电容 【转自微信公众号&#xff1a;韬略科技EMC】

漫画对话 ai翻译

復讐の教科書ーー81 81-1 いい加減吐け&#xff01;&#xff01;冴木&#xff01;&#xff01; 快说吧&#xff01;&#xff01;冴木&#xff01;&#xff01; お前が一連の事件の犯人なんだろ&#xff01;&#xff1f; 你就是连续事件的犯人吧&#xff01;&#xff1f; だか…

elementUI表格table文字不换行

在对应不需要换行的列加上属性&#xff1a;:show-overflow-tooltip"true" 即可

leetcode 1235

leetcode 1235 代码 class Solution { public:int jobScheduling(vector<int>& startTime, vector<int>& endTime, vector<int>& profit) {int n startTime.size();vector<vector<int>> jobs(n);for(int i0; i<n; i){jobs[i] …

CMakeLists.txt语法规则:数学运算 math

一. 简介 前面几篇文章学习了 CMakeLists.txt语法中的一些常用变量&#xff0c;常用命令&#xff0c;双引号的作用。条件判断语句&#xff0c;循环语句等等。 本文简单学习一下 CMakeLists.txt语法中数学运算 match。 二. CMakeLists.txt语法规则&#xff1a;数学运算 math 在…

【动态规划】子数组、子串系列I|最大子数组和|环形子数组的最大和|乘积最大子数组|乘积为正数的最长子数组长度

一、最大子数组和 最大子数组和 算法原理&#xff1a; &#x1f4a1;细节&#xff1a; 1.返回值为dp表每个位置的最大值&#xff0c;而不是只看最后一个位置&#xff0c;因为可能最后一个位置都不选 2.可以直接在填dp表的时候就进行返回值的比较 3.如果初始化选择多开一个位…

Apifox 教程:如何实现跨语言调用(Java、PHP、Python、Go 等)

在一些特定场景下&#xff0c;比如需要在 Apifox 中对文件进行读写、加密、转换格式或者进行其它业务的操作时&#xff0c;仅使用 Apifox 内置的 JS 类库可能无法满足业务需求&#xff0c;这时&#xff0c;就可以借助「外部程序」作为解决方案。 外部程序是保存在「外部程序目…
最新文章