使用Docker快速部署各类服务

一键安装Docker

#Centos环境
wget -O- https://gitee.com/iubest/dinstall/raw/master/install.sh |sh

快速部署Mysql

docker run -d  -p 3306:3306 --restart=always --name=mysql5.7 \
-e MYSQL_ROOT_PASSWORD=1qaz@WSX \
-e MYSQL_DATABASE=testdb \
-e TZ=Asia/Shanghai mysql:5.7 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

快速部署DB2

#部署
docker run -itd --name mydb2 --privileged=true -p 55000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=1qaz@WSX -e DBNAME=testdb -v /root/db2:/database ibmcom/db2
#访问
docker exec -ti mydb2 bash -c "su - db2inst1"
db2 connect to testdb
#连接信息
db2inst1 testdb 55000 1qaz@WSX

快速部署ES

#配置环境
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
grep "vm.max_map_count" /etc/sysctl.conf
sysctl -p
docker run -d -v /home/es/data:/usr/share/elasticsearch/data -v /home/es/logs:/usr/share/elasticsearch/logs -p 9200:9200 --name='es' elasticsearch:6.4.2
#第一次无法启动,需要授权
chmod -R 777 /home/es
docker start es

快速部署Jenkins

使用官方镜像

docker run \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v /opt/jenkins-data:/var/jenkins_home \
--name myjenkins\
jenkinsci/blueocean

使用自定义镜像

docker run \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v /opt/jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
--name myjenkins\
registry.cn-shanghai.aliyuncs.com/tzwind/jenkins/goodjenkins
#cat /opt/jenkins-data/secrets/initialAdminPassword

快速部署Gitlab中文版

#创建数据目录,需要挂载到docker
mkdir -p /data/gitlab/etc
mkdir -p /data/gitlab/log
mkdir -p /data/gitlab/data #下载和运行镜像
docker run \
--detach \
--publish 8443:443 \
--publish 8080:80 \
--name gitlab \
--restart unless-stopped \
--volume /data/gitlab/etc:/etc/gitlab \
--volume /data/gitlab/log:/var/log/gitlab \
--volume /data/gitlab/data:/var/opt/gitlab \
beginor/gitlab-ce:10.7.5-ce.0 #访问(用户名root)
http://ip:8080

快速部署Artifactory

#创建数据目录:
mkdir -p /home/wind/artifactory6_data #给目录加权限:
chmod -R 777 /home/wind/artifactory6_data #使用官方镜像启动:
docker run --name artifactory -d --restart=always \
-v /home/wind/artifactory6_data:/var/opt/jfrog/artifactory \
-p 8081:8081 docker.bintray.io/jfrog/artifactory-oss:6.9.0 #使用个人镜像启动(推荐):
docker run --name artifactory -d --restart=always \
-v /home/wind/artifactory6_data:/var/opt/jfrog/artifactory \
-p 8081:8081 limitless-docker.pkg.coding.net/easyblog/wind/artifactory-oss:6.9.0

快速部署Zabbix

启动一个空的Mysql服务器实例

docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin

启动Zabbix server实例,并关联

docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
--link mysql-server:mysql \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:latest

启动Zabbix web,并关联

docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="zabbix" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 8080:80 \
-d zabbix/zabbix-web-nginx-mysql:latest
访问你的IP:8080
帐号密码:Admin/zabbix

快速部署Flink

#启动临时容器
docker run -itd --rm --name=temp -h flink-jm flink:1.11-scala_2.11-java8 jobmanager
#复制配置文件到本地
docker cp temp:/opt/flink/conf /tmp/flink_docker
#删除临时容器
docker stop temp
#创建虚拟网桥
docker network create flinknet
#启动flink job
docker run -itd --name flink-jm -h flink-jm -p 8090:8081 -v /tmp/flink_docker/conf:/opt/flink/conf --network flinknet flink:1.11-scala_2.11-java8 jobmanager
#启动flink task ro参数表示只读,必须有
docker run -itd --name flink-tm -h flink-tm -v /tmp/flink_docker/conf:/opt/flink/conf:ro --network flinknet flink:1.11-scala_2.11-java8 taskmanager

Docker-compose

安装Docker-compose

#方法1:
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
#sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#查看版本
docker-compose --version
#docker-compose version 1.27.4, build 40524192 #方法2:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache
yum -y install docker-compose
#查看版本
docker-compose --version
#docker-compose version 1.18.0, build 8dd22a9

快速部署个人博客

cat <<EOF> deploy.yaml
version: '3'
services:
mysql:
container_name: mymysql
image: mysql:5.7
command: [ #使用 command 可以覆盖容器启动后默认执行的命令,必须在environment前面。
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
]
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_ROOT_HOST: '%'
MYSQL_DATABASE: halodb
TZ: Asia/Shanghai
ports:
- "3306:3306"
volumes:
- ./mysql_data:/var/lib/mysql
restart: always app:
container_name: myapp
image: limitless-docker.pkg.coding.net/easyblog/wind/haloblog:ok
restart: always
ports:
- "80:8090"
depends_on:
- mysql
EOF
#启动
docker-compose -f deploy.yaml up -d

快速部署Gitlib中文版

cat > deploy-gitlab.yaml << 'EOF'
version: '3'
services:
web:
image: 'twang2218/gitlab-ce-zh:10.5'
restart: always
hostname: '192.168.75.145'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.75.145:8080'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
unicorn['port'] = 8888
nginx['listen_port'] = 8080
ports:
- '8080:8080'
- '8443:443'
- '2222:22'
volumes:
- /usr/local/docker/gitlab/config:/etc/gitlab
- /usr/local/docker/gitlab/data:/var/opt/gitlab
- /usr/local/docker/gitlab/logs:/var/log/gitlab
EOF
docker-compose -f deploy-gitlab.yaml up -d

小技巧

Docker启动时如何初始化

#初始化脚本
#!/bin/bash
set -e
set -u
if [[ -z "$(ls -A /srv/docs)" ]]; then
echo 'Initializing new docs'
cp -R /srv-init/* /srv/docs
cp -R /srv-init/.vuepress /srv/docs/
fi
cd /srv/docs
yarn docs:$@
cat >Dockerfile<< EOF
FROM node
LABEL maintainer="Thomas de Saint"
COPY package.json yarn.lock /srv/
WORKDIR /srv
RUN yarn
COPY docs /srv-init/
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
CMD ["dev"]
EOF
docker build -t tstex/vuepress .

两个容器加入同一网络

#查看docker中的网络
docker network ls
#查看bridge网络的详细配置
docker network inspect bridge
#创建用户自定义bridge:
docker network create my-net # 创建了一个名为"my-net"的网络
#将Web服务容器和mysql服务容器加入到"my-net"中
docker network connect my-net test_demo # 将Web服务加入my-net网络中
docker network connect my-net mysqld5.7 # 将mysql服务加入my-net网络中
#查看my-net的网络配置
docker network inspect my-net
#断开旧网络
docker network disconnect bridge test_demo
docker network disconnect bridge mysqld5.7

Docker中使用systemctl

#需要启动参数--privileged  init
docker run -itd --name mycentos --privileged centos init

命令行查看docker tag

yum install jq
#apt install jq #jq源码安装
#cd /usr/local/src
#wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz
#tar zxvf jq-1.5.tar.gz
#cd jq-1.5
#./configure
#make && make install
#测试
#echo '{"yjt":"boy","age":20}' |jq cd /bin
vi docker-tag
#!/bin/sh
repo_url=https://registry.hub.docker.com/v1/repositories
image_name=$1
#curl -s ${repo_url}/${image_name}/tags | json_reformat | grep name | awk '{print $2}' | sed -e 's/"//g'
curl -s ${repo_url}/${image_name}/tags | jq . | grep name | awk '{print $2}' | sed -e 's/"//g' #添加执行权限
chmod +x docker-tag #查看mysql所有tag
docker-tag mysql

使用Docker快速部署各类服务的更多相关文章

  1. 如何利用 docker 快速部署 Mysql 服务

    docker 基础教程不再多说,这里只着重讲如何使用 docker 部署 mysql 服务 docker 拉取 访问 dockerhub,搜索关键词 mysql,我这里选择 mysql-server, ...

  2. 私活利器,docker快速部署node.js应用

    http://cnodejs.org/topic/53f494d9bbdaa79d519c9a4a 最近研究了几天docker的快速部署,感觉很有新意,非常轻量级和方便,打算在公司推广一下,解放运维, ...

  3. 使用Docker快速部署ELK分析Nginx日志实践

    原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...

  4. 在docker里部署网络服务

    之前试着玩玩docker有一阵子了,今天算是头一回正式在docker里部署网络服务. 本来想和lxc差不多的东西那自然是手到擒来,没想到还是改了很多. 第一个遇到的问题是,远程连到docker宿主机干 ...

  5. 使用Docker快速部署ELK分析Nginx日志实践(二)

    Kibana汉化使用中文界面实践 一.背景 笔者在上一篇文章使用Docker快速部署ELK分析Nginx日志实践当中有提到如何快速搭建ELK分析Nginx日志,但是这只是第一步,后面还有很多仪表盘需要 ...

  6. 快速部署ldap服务

    快速部署ldap服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.LDAP概述 .什么是目录服务 ()目录是一类为了浏览和搜索数据二十几的特殊的数据库,例如:最知名的的微软公 ...

  7. 利用Docker快速部署Mysql

    写在前面 我又来更新了~~~,今天内容较少,主要是利用Docker快速部署Mysql和初始化数据 利用Docker下载Mysql 简洁明了,在命令提示符中输入 docker pull mysql:8. ...

  8. docker 快速部署ES集群 spark集群

    1) 拉下来 ES集群  spark集群 两套快速部署环境, 并只用docker跑起来,并保存到私库. 2)弄清楚怎么样打包 linux镜像(或者说制作). 3)试着改一下,让它们跑在集群里面. 4) ...

  9. docker快速部署DNS,实现快速上线

    概念Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.这里我将使用do ...

随机推荐

  1. 【快速因数分解】Pollard's Rho 算法

    Pollard-Rho 是一个很神奇的算法,用于在 $O(n^{\frac{1}4}) $的期望时间复杂度内计算合数 n 的某个非平凡因子(除了1和它本身以外能整除它的数).事书上给出的复杂度是 \( ...

  2. 测试流程规范--测试准入、准出、停止标准、bug优先级定义

    一.背景 最近在推进组内流程规范专项建设,从"研发测试流程"."提测规范"."测试准入标准"."bug优先级标准".&q ...

  3. How to resolve DynamicHeight problem in Morphx report[X++]

    For set dynamic height for controls in report on executeSection method: method 01 real maxHeight; st ...

  4. OGG投递进程报错无法open文件,无法正常投递

    1.1现象 之前有个客户遇到一个问题,OGG同步数据链路,突然有一天网络出现问题,导致OGG投递进程无法正常投递,无法写入目标端的该文件. 猜测是由于网络丢包等原因导致文件损坏,无法正常open,re ...

  5. 数据治理方案技术调研 Atlas VS Datahub VS Amundsen

    数据治理意义重大,传统的数据治理采用文档的形式进行管理,已经无法满足大数据下的数据治理需要.而适合于Hadoop大数据生态体系的数据治理就非常的重要了. ​ 大数据下的数据治理作为很多企业的一个巨大的 ...

  6. js常用的遍历方法以及flter,map方法

    1.首先明确vue主要操作数据.他并不提倡操作dom. 数组的变异:能改变原数组. *** 先来复习下便利==遍历一个数组的四种方法: <script> let arr = [1, 2, ...

  7. wcf调用时时间参数问题,返回值中有日期格式得值得问题

    第一种情况,客户端在调用wcf后台服务时,参数对象有日期类型得属性,日期默认值不能是datetime.minvalue得值,需要设置大于1971-1-1,不然调不通服务, 第二种情况,服务连通了,并且 ...

  8. JNI-从jvm源码分析Thread.interrupt的系统级别线程打断原理

    前言 在java编程中,我们经常会调用Thread.sleep()方法使得线程停止运行一段时间,而Thread类中也提供了interrupt方法供我们去主动打断一个线程.那么线程挂起和打断的本质究竟是 ...

  9. Tab + Swipe+ RecyclerView + Collapsed

    随着Android的不断更新,老旧的布局页面已经过时,这就使得复杂的布局实现起来有些难度,在此记录一下手机中最常见的复杂界面实现方法. 最终效果 本文主要通过分析最新版AS下new project的S ...

  10. C++ 设计模式--模板模式、策略模式、观察者模式

    现代软件设计特征:需求频繁变化 设计模式的要点是"寻找变化点",在变化点应用设计模式,从而更好的应对需求变化. 1. Template Method 在软件构建结构中,往往他有整体 ...