Clay 的技术空间

用进废退 | 艺不压身

Docker 官方 Redis 镜像的使用说明文档

使用 Docker 官方的 Redis 镜像

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
# 搜索所有可用的Redis镜像
# docker search redis

# 下载Docker官方提供的Redis5.0镜像(基于Debian-Stretch)
# docker pull redis:5.0

# 创建并启动(以后台方式)Redis容器,同时挂载Redis的数据文件目录和启用AOF
# docker run -p 6379:6379 --name redis5.0 \
-v /container/redis5.0/data:/data \
-d redis:5.0 redis-server --appendonly yes

# 或者指定Redis的配置文件目录来启动Redis容器
# docker run -p 6379:6379 --name redis5.0 \
-v /container/redis5.0/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /container/redis5.0/data:/data \
-d redis:5.0 redis-server /usr/local/etc/redis/redis.conf

# 注意:
# 上面的/container/redis5.0/conf/redis.conf是Redis的配置文件目录(非配置文件本身),应该在此目录下预先添加Reids真正的配置文件redis.conf,然后再启动Redis容器
# 如果指定Reids配置文件目录来启动Redis容器,那配置文件redis.conf里应该注释掉"bind"相关配置项
# 指定Redis的配置文件目录来启动Redis容器,并添加Redis的配置文件,最终宿主机共享目录的目录结构如下:
/container
└── redis5.0
├── conf
│   └── redis.conf
│   └── redis.conf
└── data

# 查看当前所有正在运行的容器
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dbe17690112d redis:5.0 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:6379->6379/tcp redis5.0

# 连接到Docker容器,连接之后如果想断开连接,在容器内的终端直接执行"exit"命令即可,连接断开后容器不会停止运行
# docker exec -it redis5.0 /bin/bash

# 在容器内,连接到Redis服务器
# redis-cli -p 6379

# 提示:Reids相关文件目录说明
# 默认数据文件目录:/data
# 默认安装目录:/usr/local/bin/
# 默认日志文件:在配置文件redis.conf中指定
# 默认配置文件:启动Redis容器的时候,如果不指定Redis的配置文件目录,则容器内使用默认参数启动Redis服务(即此时不存在默认的Reids配置文件)
阅读全文 »

实战内容介绍

编写 Dockerfile 文件,指定终端登录后的默认路径,安装 vim、ifconfig、jdk、tomcat,并配置 jdk 与 tomcat 的环境变量,最后通过 Dockerfile 文件构建新的 Docker 镜像(基于 Centos)并运行。

目录结构介绍

1
2
3
4
5
6
# 后续所有操作都在/root/build-tomcat目录下进行
# tree /root/build-tomcat
/root/build-tomcat
├── apache-tomcat-7.0.77.tar.gz
├── dockerfile-tomcat
└── jdk1.8.0_201.tar.gz
阅读全文 »

前言

目前比较流行的日志框架有 Log4j、Logback 等,这两个框架的作者是同一个人,Logback 旨在作为流行的 Log4j 项目的后续版本,从而恢复 Log4j 离开的位置。另外 SLF4J (Simple Logging Facade for Java) 则是一个日志门面框架,提供了日志系统中常用的接口,Logback 和 Log4j 则对 SLF4J 进行了实现。本文将讲述如何在 Spring Boot 中应用 SLF4J + Logback 实现日志的记录。

引入依赖

Spring Boot 默认内置了 Logback 日志框架,一般只需在 Maven 中要引入 spring-boot-starter-logging 依赖。

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
阅读全文 »

系统环境

1
2
CentOS Linux release 7.6.1810 (Core)
Linux centos7 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

卸载 Mariadb

1
2
3
4
5
# 查找mariadb模块
# rpm -qa | grep mariadb

# 删除查找到的mariadb模块
# rpm -e --nodeps xxxx
阅读全文 »

实战内容介绍

实战编写 Dockerfile,指定终端登录后的默认路径,同时预安装 vim、ifconfig 工具,最后通过 Dockerfile 构建新的 Centos 镜像并运行起来。

编写 Dockerfile 文件

1
2
3
4
5
6
7
8
9
10
FROM centos

MAINTAINER peter<peter@gmail.com>

ENV work_path /usr/local
WORKDIR $work_path

RUN yum -y update && yum -y install vim net-tools

CMD /bin/bash
阅读全文 »

大纲

多线程设计模式的分类

  • Serial Thread Confinement 模式(串行线程封闭)
  • Immutable Object 模式(不可变对象)
  • Produer-Consumer 模式(生产者 - 消费者)
  • Read-Writer 模式(读写器)
  • Guarded Suspension 模式(保护性暂挂)
  • Thead-Per-Message 模式
  • Future 模式 / Promise 模式(承诺)
  • Two Phase Termination 模式(两阶段终止)
  • Thread Specific Storage 模式(线程专属存储)
  • Active Object 模式(主动对象)
  • Worker Thread 模式 / Master-Slave 模式(主仆)
  • Balking 模式
  • Thread Pool 模式(线程池)
阅读全文 »

Dockerfile 介绍

Dockerfile 是用来构建 Docker 镜像的文件,实质是一系列命令和参数构成的脚本文件。当 Dockerfile 文件编写完之后,可以通过 “docker build” 与”docker run” 命令构建并运行新的 Docker 镜像。其中 Dockerfile 定义了进程需要的一切东西,涉及的内容包括执行代码或者文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版本、服务进程和内核进程(当应用进程需要和系统服务、内核进程打交道的时候,需要考虑如何设计 namespace 的权限控制)等等。

Dockerfile、Docker 镜像、Docker 容器三者的关系

Dockerfile 面向开发,Docker 镜像是交付标准,Docker 容器则涉及部署与运维,三者缺一不可,合力充当 Docker 体系的基石。从应用软件的角度来看,Dockerfile、Docker 镜像与 Docker 容器分别代表软件的三个不同阶段,其中 Dockerfile 是软件的原材料,Docker 镜像是软件的交付品,Docker 容器则可以认为是软件的运行状态,示意图如下:

阅读全文 »

上篇 - Git 之七 - Centos7 搭建 Gitlab 服务器

Gitlab 常规配置

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
# 编辑Gitlab的配置文件
# vim /etc/gitlab/gitlab.rb

# 配置unicorn的端口(默认8080),注意不要用8082、9090端口,因为自带工具会占用
unicorn['port'] = 9999

# 配置Gitlab的默认备份路径
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

# 配置邮件发送
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "huangdc@domain.com"
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_authentication']= "plain"
gitlab_rails['smtp_enable_starttls_auto']= true
gitlab_rails['gitlab_email_from']= "huangdc@domain.com"
gitlab_rails['gitlab_email_reply_to']= "noreply@domain.com"

# 配置SSH的端口(默认22),修改之后Gitlab中项目的SSH地址会在前面加上协议头和端口号,例如“ssh://git@192.168.1.198:55725/lisi/test.git”
gitlab_rails['gitlab_shell_ssh_port'] = 55725

# 重新编译Gitlab的配置
# gitlab-ctl reconfigure

# 重启GitLab
# gitlab-ctl restart
阅读全文 »

Gitlab 相关站点

Gitlab 介绍

GitLab 是基于 Ruby on Rails 的一个开源版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。GitLab 分为社区版(CE) 和企业版(EE)。它拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序 (Wall) 进行交流。依赖组件:Ruby、Git、Nginx、Redis、Sidekiq、GitLab Runner、Unicorn Workers、PostgreSQL/MySQL/MariaDB 等,其中 MySQL/MariaDB 并不完全支持 Gitlab 的所有功能,官方强烈推荐安装 PostgreSQL。

安装环境说明

1
2
3
4
5
$ uname -a
Linux centos7 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
阅读全文 »