济南手机网站开发公司电话,网页游戏开服表怎么取消,wordpress格式化sql串,中国互联网协会网站引言
最近因需要搭建一套简易版的纯内网的开发环境#xff0c;服务器采用 centos8.0#xff0c;容器化技术采用 docker 使用 docker-compose 进行容器编排。 该系列教程分为两大类#xff1a;
软件安装和使用#xff0c;这类是开发环境常用的软件部署和使用#xff0c;涉…引言
最近因需要搭建一套简易版的纯内网的开发环境服务器采用 centos8.0容器化技术采用 docker 使用 docker-compose 进行容器编排。 该系列教程分为两大类
软件安装和使用这类是开发环境常用的软件部署和使用涉及到的应用有 dockernexusgiteamysqlredisminio 应用部署实战通过实战将开发好的程序部署到搭建好的开发环境中
docker
安装
对于 docker 的安装分为两种情形一种是服务器能够访问外网这种安装比较简单一种是不能访问外网对于纯内网安装需要提前准备好安装文件复制到内网服务器上。
在线安装
卸载旧版本
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine设置 docker 仓库方便安装和更新 docker由于官方的源比较慢可以使用第三方的源
# 安装所需要的软件包# 使用官方源
sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
# 阿里云第三方源
sudo yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 清华大学第三方源
sudo yum-config-manager \--add-repo \https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo安装 docker enginer 安装最新版本
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
指定版本安装 查看版本号yum list docker-ce --showduplicates | sort -r 2. 选择版本号进行安装sudo yum install docker-ce-VERSION_STRING docker-ce-cli-VERSION_STRING containerd.io启动 docker 启动命令systemctl start docker查看是否启动成功通过 docker info 命令输出 docker 版本信息则安装成功 卸载 docker 删除安装包
yum remove docker
删除镜像、容器等相关文件
rm -rf /var/lib/docker
离线安装
如果服务器没有外网的情况下如果通过在线直接获取安装包这种情况下需要先将安装包准备好上传到服务器在进行安装。
下载安装包
进入官网下载页面进行选择对应的版本下载页面链接https://download.docker.com/linux/static/stable/x86_64/ 安装
解压安装包tar -zxvf docker-20.10.9.tgz安装到 /usr/bin/mv /docker/* /usr/bin/创建 docker 服务 编辑 /etc/systemd/system/docker.service内容如下
[Unit]
DescriptionDocker Service
Afternetwork.target
[Service]
ExecStart/usr/bin/dockerd
ExecReload/bin/kill -S HUP $MAINPID
Restarton-failure
RestartSec5
[Install]
WantedBymulti-user.target重启 docker 加载配置文件并设置开启启动 重启sudo systemctl daemon-reload sudo systemctl restart docker设置开机启动sudo systemctl enable docker 查看docker是否启动成功使用命令 systemctl status docker 设置镜像源
编辑 /etc/docker/daemon.json 文件添加阿里云镜像源内容如下
{
registry-mirrors: [https://registry.cn-hangzhou.aliyuncs.com]
}重启 docker 使配置生效
sudo systemctl daemon-reload sudo systemctl restart docker
纯内网如何下载镜像
如果是纯内网部署且还搭建好私服这个在后续的教程中会演示如何获取 docker 镜像呢 首先需要将部门需要的镜像提前准备好后期部署好 docker 私服后可从私服下载镜像先从一台外网机器下载好所需要的镜像并导出镜像发送到内网服务上再在内网服务器上加载镜像到 docker 中具体步骤如下
在外网机器下载好需要的镜像文件
# 拉取 mysql 镜像
docker pull mysql:8.4.2
# 拉取 redis 镜像
docker pull redis:latest
# 拉取 minio 镜像
docker pull minio/minio:latest
# 拉取 nexus 镜像
docker pull sonatype/nexus3:latest
# 拉取 gitea 镜像
docker pull gitea/gitea:latest导出镜像文件
# 导出 mysql 镜像
docker save -o mysql.tar mysql:8.4.2
# 导出 redis 镜像
docker save -o redis.tar redis:latest
# 导出 minio 镜像
docker save -o minio.tar minio/minio:latest
# 导出 nexus3 镜像
docker save -o nexus3.tar sonatype/nexus3:latest
# 导出 mysql 镜像
docker save -o gitea.tar gitea/gitea:latest发送到内网服务器
使用命令或者 FTP 工具将镜像文件拷贝到内网服务器
内网服务器加载镜像
# 加载 mysql 镜像
docker load -i mysql.tar
# 加载 redis 镜像
docker load -i redis.tar
# 加载 minio 镜像
docker load -i minio.tar
# 加载 nexus3 镜像
docker load -i nexus3.tar
# 加载 mysql 镜像
docker load -i gitea.tardocker-compose
简介
docker-compose 是 docker 官方的开源项目用于定义和运行多个容器应用程序的工具它允许用户通过 YAML 文件来配置应用程序服务并通过 docker-compose 命令来启动、停止和管理整个应用程序。 docker-compsoe 简化了容器应用程序之间的部署和管理过程使得开发者可以快速的搭建应用并且可以应用在不同的系统环境中减少配置错误带来的问题。
安装
在线安装
执行安装命令
sudo curl -L [https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-$(uname](https://github.com/docker/compose/releases/tag/v2.29.1) -s)-$(uname -m) -o /usr/bin/docker-compose
如需要安装其他版本的请替换上述命令的 v2.29.1 为想要的版本号查看版本请前往https://github.com/docker/compose/releases赋予可执行权限
sudo chmod x /usr/bin/docker-compose
通过 docker-compose 验证是否安装成功
离线安装
下载安装包
点击前往官方下载安装文件进入 https://github.com/docker/compose/releases选择合适的版本进行下载
安装 将文件命名为 docker-compose 并将文件移动到 /usr/bin 中
sudo mv docker-compose-linux-x86_64 /usr/bin/docker-compose
赋予可执行权限
sudo chmod x /usr/bin/docker-compose
通过 docker-compose 验证是否安装成功 卸载
通过 rm /usr/bin/docker-compose删除
常用命令
docker-compose 的常用命令格式为 docker-compose [OPTIONS] COMMANDdocker-compose 的命令与 docker 的命令非常相似常用的命令有
docker-compose up
用于根据指定文件创建和启动容器如果没有指定文件默认为当前目录下的 docker-compose.yml 文件常用的参数有
参数说明-f指定 compose 编排文件-d后台执行–force-recreate强制重新创建容器即使未发生改动–no-recreate如果容器存在不重新创建不能与–force-recreate 同时使用–remove-orphans删除没有在 compose 文件中定义的容器–build在启动容器前构建镜像–no-build不自动构建镜像–no-start创建服务后不启动–scale将服务实例扩容到指定数量会覆盖在 compose 文件中设置该选项
docker-compose down
用于停止和删除容器、网络和卷常用的参数有
参数说明–rmi string删除服务关联的镜像可选的参数有 all 删除所有镜像local 删除本地镜像-v, --volumes删除 compose 中声明的卷–remove-orphans删除未在 compose 文件定义的容器
docker-compose ps
查看由 docker-compose 管理的容器默认使用当前目录下的 docker-compose.yml 文件可通过-f 指定 compose 文件默认只显示正在运行的容器可通过 docker-compose ps -a 查看所有容器
docker-compose stats
查看对应 compose 文件管理的容器资源使用情况默认查看正在运行的容器通过 -a 参数查看所有
docker-compose cp
在容器和宿主机之间复制文件
容器文件复制到宿主机
docker compose cp [OPTIONS] SERVICE:SRC_PATH DEST_PATH|-
宿主机文件复制到容器
docker compose cp [OPTIONS] SRC_PATH|- SERVICE:DEST_PATH
docker-compose exec
在正在运行的容器中执行命令格式为docker compose exec [OPTIONS] SERVICE COMMAND [ARGS...]
docker-compose start
启动对应 compose 文件对应的服务
docker-compose restart
重启对应 compose 文件对应的服务
docker-compose stop
停止对应 compose 文件对应的服务
实战 docker-compose 部署 mysql 、redis
mysql 和 redis 是常用的开发应用软件本系列教程的后续多个应用也依赖于 mysql 和 redis如果是纯内网可参考上述教程准备好镜像在本教程后续会搭建 docker 私服则不需要手动加载镜像
创建目录用于卷挂载 mysql /opt/mysql/data存放 mysql 数据/opt/mysql/conf.d/存放 mysql 配置my.cnf 文件
[mysql]
default-character-setutf8
[mysqld]
character-set-serverutf8
default-storage-engineINNODB
sql_modeONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_allowed_packet7096M
lower_case_table_names1redis /opt/redis/data存放 redis 数据/opt/redis/config存放 redis 配置/opt/redis/logs存放 redis 日志redis.conf 文件
################################## NETWORK #####################################
port 6379
tcp-keepalive 300
################################# GENERAL #####################################
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile
databases 16
always-show-logo yes
################################ SNAPSHOTTING ################################
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
################################# REPLICATION #################################
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
################################## SECURITY ################################################################ LAZY FREEING ####################################
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
############################## APPEND ONLY MODE ###############################
appendonly no
appendfilename appendonly.aof
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-use-rdb-preamble yes
################################ LUA SCRIPTING ###############################
lua-time-limit 5000
notify-keyspace-events
############################### ADVANCED CONFIG ###############################
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
########################### ACTIVE DEFRAGMENTATION #######################
jemalloc-bg-thread yes
创建网络docker network create env-net编写 docker-compose.yml
version: 3.8networks:env-net:driver: bridge
services:db:image: mysql:8.4.2restart: on-failurecontainer_name: mysqlenvironment:- TZAsia/Shanghai- MYSQL_ROOT_PASSWORDroot- INSTALL4J_ADD_VM_PARAMS-Xms128m -Xmx1024m -XX:MaxDirectMemorySize512m- MYSQL_USERgitea- MYSQL_PASSWORDgitea- MYSQL_DATABASEgiteaports:- 3306:3306networks:- env-netvolumes:- /opt/mysql/data/:/var/lib/mysql/- /opt/mysql/conf.d/my.cnf:/etc/mysql/my.cnfprivileged: trueredis:image: redis:latestcontainer_name: redisrestart: on-failureports:- 6379:6379command:redis-server /etc/redis/redis.confvolumes:- /opt/redis/data:/data- /opt/redis/config/redis.conf:/etc/redis/redis.conf- /opt/redis/logs:/logsnetworks:- env-netprivileged: true启动通过 sudo docker-compose up -d 启动等待服务部署查看是否部署成功通过 docker-compose ps 查看容器状态
结语
本文介绍了 docker 和 docker-compose 在线和离线的两种方式以及 docker-compose 的常见命令最后实操如何利用 docker-compose 部署 mysql 和 redis。