目录
简介
开发与测试环境中使用容器化部署各项服务就是好用,真香。无特殊说明均为Centos。如果存在容器之间的互相调用,建议使用docker run --link
的方式启用;还有一种办法,在容器创建时固定容器IP。
Mysql
docker run \
-p 3306:3306 --name mysql \
-v /data/mysql/conf/conf.d:/etc/mysql/conf.d \
-v /data/mysql/conf/mysql.conf.d:/etc/mysql/mysql.conf.d \
-v /data/mysql/logs:/logs \
-v /data/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
Jenkins
初始密码在容器内此目录下cat /var/jenkins_home/secrets/initialAdminPassword
需要进入容器内查看
sudo docker pull jenkinsci/blueocean
docker run \
-u root \
--name jenkins -d \
-p 9699:8080 \
-p 50000:50000 \
-v /data/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
# 可以在jenkins 命令执行工具中执行,修改时区
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
# 删除jenkins构建历史
def jobName = "userapi"
def maxNumber = 100
Jenkins.instance.getItemByFullName(jobName).builds.findAll {
it.number <= maxNumber
}.each {
it.delete()
}
Rabbitmq
sudo docker pull rabbitmq:management
docker run \
-d --name rabbitmq \
-p 5672:5672 -p 9697:15672 \
-v /data/rabbitmq/lib:/var/lib/rabbitmq \
-v /data/rabbitmq/log:/var/log/rabbitmq \
--hostname myRabbit \
-e RABBITMQ_DEFAULT_VHOST=my_vhost \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
rabbitmq:management
Redis
sudo docker pull redis:latest
docker run -itd --name redis -p 6379:6379 --ip 172.17.0.3 redis
vsFTPd
centos下ftp链接工具,主动模式无法使用ls
anddir
命令,但是其他可用:
ftp -A 47.99.241.224
Connected to 47.99.241.224 (47.99.241.224).
220 (vsFTPd 3.0.2)
Name (47.99.241.224:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
500 Illegal PORT command.
ftp: bind: Address already in use
ftp> pwd
257 "/"
ftp> passive
Passive mode on.
ftp> ls
227 Entering Passive Mode (47,99,241,224,82,113).
150 Here comes the directory listing.
drwx------ 4 ftp ftp 29 Apr 10 07:49 etcbill
226 Directory send OK.
ubuntu下也存在同样的问题,不过提示不一样:
ftp> ls
200 PORT command successful. Consider using PASV.
ftp> passive
Passive mode on.
ftp> ls
227 Entering Passive Mode (47,99,241,224,82,108).
150 Here comes the directory listing.
drwx------ 4 ftp ftp 29 Apr 10 07:49 etcbill
226 Directory send OK.
主动模式无法使用ls
anddir
命令这个问题尚无法确定是ftp客户端工具问题还是vsftpd的问题。但是不影响其使用。
https://www.jianshu.com/p/91c7d4a115e0
https://www.jianshu.com/p/9b6389a26336
# /data/ftp/test
yum -y install vsftpd
# 添加匿名用户
useradd test -d /data/ftp/test -s /sbin/nologin
# 修改ftpfile权限
chown -R test.test /data/ftp/test
# 重设ftpuser 密码
passwd test
# chmod 755 -R /data/ftp
# chmod 777 -R /data/ftp/test
# 用户添加
vim /etc/vsftpd/chroot_list
# test
# 可使用默认的
vim /etc/vsftpd/vsftpd.conf
#主动模式
#connect_from_port_20=YES
#pasv_enable=NO
# 只有/etc/vsftpd.chroot_list文件中指定的用户可以返回上一层
# chroot_local_user=YES
# chroot_list_enable=YES
# chroot_list_file=/etc/vsftpd/chroot_list
# 能写入自己的目录
# allow_writeable_chroot=YES
# 配置项的含义为仅允许用户的shell为 /etc/shells文件内的shell命令时,才能够成功
# 而创建ftp用户时,为了禁止ssh登录,一般多为/bin/false 、/usr/sbin/nologin 等,显然不是一个有效的bash,也就无法登录了。
vim /etc/pam.d/vsftpd
# auth required pam_shells.so 替换为以下内容
# auth required pam_nologin.so
建议使用docker
https://github.com/fauria/docker-vsftpd/
docker search vsftpd
docker pull fauria/vsftpd
docker run \
-d --name vsftpd \
-v /data/vsftpd:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=test -e FTP_PASS='test' \
-e PASV_ADDRESS=47.99.241.224 \
-e PASV_MIN_PORT=21100 \
-e PASV_MAX_PORT=21110 \
-e FILE_OPEN_MODE=0777 \
-e REVERSE_LOOKUP_ENABLE=NO \
--restart=always \
--network ftpnet --ip 172.18.0.3 \
fauria/vsftpd
Elasticsearch
docker search elasticsearch
docker pull docker.io/elasticsearch:7.13.2
# 由于映射了目录此处存在权限问题,需要把宿主机目录的权限改为777
# 内存可能是必须指定,8G的机器不指定启动不了
docker run -d --privileged=true -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-v /data/es/data:/usr/share/elasticsearch/data \
-v /data/es/logs:/usr/share/elasticsearch/logs \
--name='es7' docker.io/elasticsearch:7.13.2
shadowsocks
docker pull mritd/shadowsocks
docker run -dt --name ssserver -p 9503:9503 mritd/shadowsocks -m "ss-server" -s "-s 0.0.0.0 -p 9503 -m chacha20-ietf-poly1305 -k 123123"
wordpress
docker run -d --name nm1024 \
-e WORDPRESS_DB_HOST=mysql \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=root \
-e WORDPRESS_DB_NAME=nm1024 \
-p 1080:80 \
--link mysql:mysql wordpress
Oracle11g
可以直接参考此文章Docker安装Oracle11g - 背锅的Mike - 博客园 (cnblogs.com)
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
docker run -d --privileged \
--restart=always \
-p 5522:1521 \
-v /data/oracle11g/oracle:/home/oracle \
--name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
docker exec -it oracle11g /bin/bash
source /home/oracle/.bash_profile
sqlplus /nolog
#进入数据库
connect /as sysdba
create user test_asd identified by test_asd;
grant connect,resource,dba to test_asd;
Oracle12c
docker run -d \
--restart always \
-p 8080:8080 -p 1521:1521 \
-v /data/oracle12c:/u01/app/oracle \
--name oracle12c \
truevoly/oracle-12c
192.168.113.66:1521
xe
system
oracle
http://192.168.113.66:8080/apex
INTERNAL
ADMIN
Oracle!123
Oracle19c
docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
docker run -d \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_SID=ORCLCDB \
-e ORACLE_PDB=ORCLPDB1 \
-e ORACLE_PWD=123456 \
-e ORACLE_EDITION=standard \
-e ORACLE_CHARACTERSET=AL32UTF8 \
-v /data/oracle19c:/opt/oracle/oradata \
--name oracle19c \
registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
https://192.168.113.66:5500/em
username:sys
password:123456
Container Name:ORCLPDB1
192.168.113.66:1521
ORCLCDB
system
123456
Plumelog
需要准备配置文件
docker pull xiaobai021sdo/plumelog:3.5
docker run -d --name plumelog-35 \
-v /data/dyservice/plumelog-server:/plumelog-server \
-p 8891:8891 xiaobai021sdo/plumelog:3.5
Plumelog需要使用es7,但是他会用到ES7的分片,ES7的一个节点分片大小是1000,会超过上限导致日志无法插入,零时的解决办法是增加ES7分片大小:
curl -XPUT -H "Content-Type:application/json" -d '{"persistent":{"cluster":{"max_shards_per_node":10000}}}' 'http://es-host:9200/_cluster/settings'
以上问题在新版plumelog中得到了解决,可以参考官方文档。
minio
docker pull minio/minio
docker run --name minio75 \
-p 9000:9000 \
-p 9090:9090 \
-d --restart=always \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=test.minio" \
-v /data/minio/data:/data \
quay.io/minio/minio server /data --console-address ":9090"
xxl-job
详细部署方案参照官网
docker run -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin:2.3.0
/**
* 如需自定义 mysql 等配置,可通过 "-e PARAMS" 指定,参数格式 PARAMS="--key=value --key2=value2" ;
* 配置项参考文件:/xxl-job/xxl-job-admin/src/main/resources/application.properties
* 如需自定义 JVM内存参数 等配置,可通过 "-e JAVA_OPTS" 指定,参数格式 JAVA_OPTS="-Xmx512m" ;
*/
docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://172.16.1.1:8892/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=qweasdzxc --xxl.job.accessToken=aad9024b5cc8f6226b899616e8a8aeff214d549fe964faf6c2009fca0d5d80cd" \
-e JAVA_OPTS="-Xmx512m" \
-p 8894:8080 \
-v /data/xxl-job/logs:/data/applogs \
--name xxl-job-admin \
-d xuxueli/xxl-job-admin:2.3.0
GitLab
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 4090:80 --publish 4091:22 \
--name gitlab \
--restart always \
--volume /data/gitlab/config:/etc/gitlab \
--volume /data/gitlab/logs:/var/log/gitlab \
--volume /data/gitlab/data:/var/opt/gitlab \
--shm-size 256m \
registry.gitlab.cn/omnibus/gitlab-jh:latest
Nginx
docker run -d \
--name nginx --restart always \
-p 80:80 -p 443:443 \
-e "TZ=Asia/Shanghai" \
-v /data/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf.d:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/cert:/etc/nginx/cert \
-v /data/nginx/html:/usr/share/nginx/html \
nginx:alpine
>>转载请注明原文链接地址:常用的Docker仓库