前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker快速启动日常应用总结

Docker快速启动日常应用总结

作者头像
菲宇
发布2022-12-21 19:34:54
1.6K0
发布2022-12-21 19:34:54
举报
文章被收录于专栏:菲宇菲宇

事前准备

一、 安装Docker

   使用CentOS 7.3安装Docker,可以参考这篇文章:《Centos7安装最新Docker》

二、Docker加速

  Docker的标准镜像库Docker Hub在国外,不进行Docker加速的话拉取镜像会比较慢,这里我使用道客(DaoCloud)来进行Dokcer加速。在“配置Docker加速器”里有配置加速的指令: 

  在Linux中进行配置

  执行sudo su -,获取root权限,如果本身是root帐号,可跳过: 

代码语言:javascript
复制
[root@node01 ~]# sudo su -
上一次登录:三 9月 26 21:26:39 CST 2018从 192.168.0.135pts/1 上

  根据道客的说明执行配置文件并重启docker,systemctl restart docker。

系统类

一、启动centos

1.拉去官方镜像,镜像地址:https://hub.docker.com/_/centos/

2.拉取镜像:docker pull centos

3、执行指令启动centos

docker run -d --name centos centos

4、准备配置文件

5、检查服务

二、启动ubuntu

1.拉去官方镜像,镜像地址:https://hub.docker.com/_/ubuntu/

2.拉取镜像:docker pull ubuntu

3、执行指令启动ubuntu

4、准备配置文件

5、检查服务

语言类

一、启动php

1.拉去官方镜像,镜像地址:https://hub.docker.com/_/php/

2.拉取镜像:docker pull php

3、执行指令启动

代码语言:javascript
复制
docker run -it --name php php

4、准备配置文件

5、安装php扩展服务

代码语言:javascript
复制
docker-php-ext-install pdo_mysql

6、检查服务

代码语言:javascript
复制
[root@node01 ~]# docker exec -it  php bash
root@08bdadddc70f:/# php -v
PHP 7.2.10 (cli) (built: Sep 15 2018 02:22:37) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

二、启动php-fpm

1.拉去官方镜像,镜像地址:

2.拉取镜像:docker pull php-fpm

3、执行指令启动php-fpm

代码语言:javascript
复制
docker run -p 9000:9000 --name your_phpfpm \
       -v /home/app/html:/var/www/html  \
       -v  /home/app/phpfile:/usr/local/etc/php \
       -d php:5.6-fpm 

4、准备配置文件

代码语言:javascript
复制
vi php.ini
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
extension=php_pdo.dll

5、安装php扩展服务

代码语言:javascript
复制
docker-php-ext-install pdo_mysql

6、检查服务

三、启动python

1.拉去官方镜像,镜像地址:https://hub.docker.com/_/python/

2.拉取镜像:

3、执行指令启动python

4、准备配置文件

5、检查服务

四、启动java

1.拉去官方镜像,镜像地址:https://hub.docker.com/_/openjdk/

2.拉取镜像:

3、执行指令启动apache

4、准备配置文件

5、检查服务

五、启动.Net Core

  1. 拉取dotnet标准镜像

  2. 拉取镜像:docker pull microsoft/dotnet

  3. 新建一个.Net Core HelloWorld程序并发布

  4. 准备Dockerfile,并把Dockerfile拷贝到HelloWorld程序同级目录。注:.Net Core运行的默认端口是5000,这里通过环境变量的方式把端口修改为8080

FROM microsoft/dotnet:latest

COPY . /app

WORKDIR /app

EXPOSE 8080/tcp

ENV ASPNETCORE_URLS http://*:8080

ENTRYPOINT ["dotnet", "HelloWorld.dll"]

  5. 定位到程序目录,执行指令把HelloWorld程序打包成Docker镜像

  docker build -t hello-world:1.0 .

  6. 运行Docker容器

  docker run --name hello-world -p 8080:8080 -d hello-world:1.0

  7 检查结果

六、启动静态Html

  1. 拉取Nginx官方镜像,镜像地址:https://hub.docker.com/_/nginx/

  2. 拉取镜像:docker pull nginx

  3. 准备html程序,可以使用我之前的一个Durandal的示例:https://github.com/ErikXu/DurandalDemo

  4. 准备Dockerfile,并把Dockerfile拷贝到Html程序同级目录。注:程序中需要有一个入口页面,如index.html

FROM nginx:latest

COPY . /usr/share/nginx/html

  5. 定位到程序目录,执行指令把Html程序打包成Docker镜像

  docker build -t html:1.0 .

  6. 运行Docker容器,注:这里把容器中的80端口映射到虚拟机的81端口

  docker run --name html -p 81:80 -d html:1.0

  7. 检查结果

七、启动node.js

1.拉去官方镜像,镜像地址:https://hub.docker.com/_/node/

2.拉取镜像:

3、执行指令启动node.js

4、准备配置文件

5、检查服务

数据库类

一、启动Mysql

  1. 拉取官方镜像,镜像地址:https://hub.docker.com/_/mysql/

  2. 拉取镜像:docker pull mysql

  3. 准备Mysql数据存放目录,我这里是:/home/erikxu/mysql

  4. 执行指令启动Mysql

  docker run --name mysql -v /home/erikxu/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest  

  5. 检查结果

二、启动MongoDB

  1. 拉取官方镜像,镜像地址:https://hub.docker.com/_/mongo/

  2. 拉取镜像:docker pull mongo

  3. 准备MongoDB数据存放目录,我这里是:/home/erikxu/mongo

  4. 执行指令启动MongoDB

  docker run --name mongo -v /home/erikxu/mongo:/data/db -p 27017:27017 -d mongo:latest

  5. 检查结果

 三、启动Redis

  1. 拉取官方镜像,镜像地址:https://hub.docker.com/_/redis/

  2. 拉取镜像:docker pull redis

  3. 执行指令启动Redis

  docker run --name redis -d -p 6379:6379 redis

  4. 检查结果

中间类

一、启动Nginx

  1. 拉取官方镜像,镜像地址:https://hub.docker.com/_/nginx/

  2. 拉取镜像:docker pull nginx

  3. 准备配置文件

worker_processes 1;

events {

worker_connections 1024;

}

http {

server {

listen 80;

server_name 192.168.52.130;

location / {

proxy_pass http://192.168.52.130:81/;

}

location /html/ {

proxy_pass http://192.168.52.130:81/;

}

location /dotnet/ {

proxy_pass http://192.168.52.130:8080/;

}

}

}

  4. 执行指令启动Nginx

  docker run --name nginx -p 80:80 -v /home/erikxu/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx

  5. 检查结果

二、启动apache

1.拉去官方镜像,镜像地址:

2.拉取镜像:

3、执行指令启动apache

4、准备配置文件

5、检查服务

三、启动tomcat

1.拉去官方镜像,镜像地址:https://hub.docker.com/_/tomcat/

2.拉取镜像:docker pull tomcat

3、执行指令启动tomcat

代码语言:javascript
复制
 docker run -it -p 8080:8080 --name tomcat tomcat

4、准备配置文件

5、检查服务

工具类

一、启动haproxy

1.拉去官方镜像,镜像地址:https://hub.docker.com/_/haproxy/

2.拉取镜像:docker pull haproxy

3、准备配置文件

代码语言:javascript
复制
###########全局配置#########
global
  log 127.0.0.1 local0 #[日志输出配置,所有日志都记录在本机,通过local0输出]
  log 127.0.0.1 local1 notice #定义haproxy 日志级别[error warringinfo debug]
  daemon #以后台形式运行harpoxy
  nbproc 1 #设置进程数量
  maxconn 4096 #默认最大连接数,需考虑ulimit-n限制
  #user haproxy #运行haproxy的用户
  #group haproxy #运行haproxy的用户所在的组
  #pidfile /var/run/haproxy.pid #haproxy 进程PID文件
  #ulimit-n 819200 #ulimit 的数量限制
  #chroot /usr/share/haproxy #chroot运行路径
  #debug #haproxy 调试级别,建议只在开启单进程的时候调试
  #quiet

########默认配置############
defaults
  log global
  mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
  option httplog #日志类别,采用httplog
  option dontlognull #不记录健康检查日志信息
  retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置
  #option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
  option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
  #option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器,以后将不支持
  option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
  maxconn 4096 #默认的最大连接数
  timeout connect 5000ms #连接超时
  timeout client 30000ms #客户端超时
  timeout server 30000ms #服务器超时
  #timeout check 2000 #心跳检测超时
  #timeout http-keep-alive10s #默认持久连接超时时间
  #timeout http-request 10s #默认http请求超时时间
  #timeout queue 1m #默认队列超时时间
  balance roundrobin #设置默认负载均衡方式,轮询方式
  #balance source #设置默认负载均衡方式,类似于nginx的ip_hash
  #balnace leastconn #设置默认负载均衡方式,最小连接数

########统计页面配置########
listen stats
  bind 0.0.0.0:1080 #设置Frontend和Backend的组合体,监控组的名称,按需要自定义名称
  mode http #http的7层模式
  option httplog #采用http日志格式
  #log 127.0.0.1 local0 err #错误日志记录
  maxconn 10 #默认的最大连接数
  stats refresh 30s #统计页面自动刷新时间
  stats uri /stats #统计页面url
  stats realm XingCloud\ Haproxy #统计页面密码框上提示文本
  stats auth admin:admin #设置监控页面的用户和密码:admin,可以设置多个用户名
  stats auth Frank:Frank #设置监控页面的用户和密码:Frank
  stats hide-version #隐藏统计页面上HAProxy的版本信息
  stats admin if TRUE #设置手工启动/禁用,后端服务器(haproxy-1.4.9以后版本)

########设置haproxy 错误页面#####
#errorfile 403 /home/haproxy/haproxy/errorfiles/403.http
#errorfile 500 /home/haproxy/haproxy/errorfiles/500.http
#errorfile 502 /home/haproxy/haproxy/errorfiles/502.http
#errorfile 503 /home/haproxy/haproxy/errorfiles/503.http
#errorfile 504 /home/haproxy/haproxy/errorfiles/504.http

########frontend前端配置##############
frontend main
  bind *:80 #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了。
  acl web hdr(host) -i www.abc.com  #acl后面是规则名称,-i为忽略大小写,后面跟的是要访问的域名,如果访问www.abc.com这个域名,就触发web规则,。
  acl img hdr(host) -i img.abc.com  #如果访问img.abc.com这个域名,就触发img规则。
  use_backend webserver if web   #如果上面定义的web规则被触发,即访问www.abc.com,就将请求分发到webserver这个作用域。
  use_backend imgserver if img   #如果上面定义的img规则被触发,即访问img.abc.com,就将请求分发到imgserver这个作用域。
  default_backend dynamic #不满足则响应backend的默认页面

########backend后端配置##############
backend webserver #webserver作用域
  mode http
  balance roundrobin #balance roundrobin 负载轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数
  option httpchk /index.html HTTP/1.0 #健康检查, 检测文件,如果分发到后台index.html访问不到就不再分发给它
  server web1 10.16.0.9:8085 cookie 1 weight 5 check inter 2000 rise 2 fall 3
  server web2 10.16.0.10:8085 cookie 2 weight 3 check inter 2000 rise 2 fall 3
  #cookie 1表示serverid为1,check inter 1500 是检测心跳频率 
  #rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重

backend imgserver
  mode http
  option httpchk /index.php
  balance roundrobin 
  server img01 192.168.137.101:80 check inter 2000 fall 3
  server img02 192.168.137.102:80 check inter 2000 fall 3

backend dynamic 
  balance roundrobin 
  server test1 192.168.1.23:80 check maxconn 2000 
  server test2 192.168.1.24:80 check maxconn 2000


listen tcptest 
  bind 0.0.0.0:5222 
  mode tcp 
  option tcplog #采用tcp日志格式 
  balance source 
  #log 127.0.0.1 local0 debug 
  server s1 192.168.100.204:7222 weight 1 
  server s2 192.168.100.208:7222 weight 1

4、执行指令启动haproxy

代码语言:javascript
复制
docker run -d --name haproxy -p:1080:1080 -v /path/etc/haproxy:/usr/local/etc/haproxy:ro haproxy:latest

5、检查服务

二、启动keepalived

1.拉去官方镜像,镜像地址:https://hub.docker.com/r/alterway/keepalived/

2.拉取镜像:

  • docker pull osixia/keepalived:1.4.4

3、执行指令启动

  • # 启动keepalived
  • # eth1为本次实验11.11.11.0/24网段的所在网卡
  • docker run --net=host --cap-add=NET_ADMIN \
  • -e KEEPALIVED_INTERFACE=eth1 \
  • -e KEEPALIVED_VIRTUAL_IPS="#PYTHON2BASH:['11.11.11.110']" \
  • -e KEEPALIVED_UNICAST_PEERS="#PYTHON2BASH:['11.11.11.111','11.11.11.112','11.11.11.113']" \
  • -e KEEPALIVED_PASSWORD=hello \
  • --name k8s-keepalived \
  • --restart always \
  • -d osixia/keepalived:1.4.4

4、准备配置文件

5、检查服务

  • # 查看日志
  • # 会看到两个成为backup 一个成为master
  • docker logs k8s-keepalived
  • # 此时会配置 11.11.11.110 到其中一台机器
  • # ping测试
  • ping -c4 11.11.11.110

三、启动jenkins

1.拉去官方镜像,镜像地址:https://hub.docker.com/_/jenkins/

2.拉取镜像:docker pull jenkins

3、执行指令启动

代码语言:javascript
复制
docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins

4、准备配置文件

5、检查服务

四、启动gitlab

1.拉去官方镜像,镜像地址:https://hub.docker.com/r/gitlab/gitlab-ce/

2.拉取镜像:

代码语言:javascript
复制
docker pull gitlab/gitlab-ce:latest

3、执行指令启动gitlab

代码语言:javascript
复制
docker run --detach \
    --hostname gitlab.example.com \   #如果是本地可以改成localhost
   --publish 443:443 --publish 80:80 --publish 22:22 \ 
   --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

4、准备配置文件

5、检查服务

五、启动Eureka

  1. 拉取官方镜像,镜像地址:https://hub.docker.com/r/springcloud/eureka/

  2. 拉取镜像:docker pull springcloud/eureka

  3. 执行指令启动Eureka

  docker run --name eureka -d -p 8761:8761 springcloud/eureka

  4. 检查结果

  未有服务注册:

  下载SteelToe示例:https://github.com/SteeltoeOSS/Samples

  打开Discovery,并修改appsetting.json:

  按照README文档描述启动服务,进行服务注册:

六、启动Config Server

  1. 拉取官方镜像,镜像地址:https://hub.docker.com/r/hyness/spring-cloud-config-server/

  2. 拉取镜像:docker pull hyness/spring-cloud-config-server

  3. 在GitHub上准备配置文件:https://github.com/ErikXu/.NetCore-Spring-Clould/tree/master/Configs

  4. 准备启动资源文件application.yml:

info:

component: config service

server:

port: 8888

spring:

application:

name: git-config

profiles:

active: dev

cloud:

config:

server:

git:

uri: https://github.com/ErikXu/.NetCore-Spring-Clould

searchPaths: Configs

  5. 执行指令启动Config Server,注:该指令前无空格

  docker run --name configsvr -it -d -p 8888:8888 \   -v /home/erikxu/config/application.yml:/config/application.yml \   hyness/spring-cloud-config-server

  6. 检查结果

七、启动RabbitMQ

  1. 拉取官方镜像,镜像地址:https://hub.docker.com/_/rabbitmq/

  2. 拉取镜像:docker pull rabbitmq,如需要管理界面:docker pull rabbitmq:management

  3. 执行指令启动RabbitMQ

  无管理界面:

  docker run --hostname rabbit-host --name rabbit -d -p 5672:5672 rabbitmq

  有管理界面:

  docker run --hostname rabbit-host --name rabbit -d -p 5672:5672 -p 15672:15672 rabbitmq:management

  4. 检查结果 

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 事前准备
    • 一、 安装Docker
      • 二、Docker加速
      • 系统类
        • 一、启动centos
          • 二、启动ubuntu
          • 语言类
            • 一、启动php
              • 二、启动php-fpm
                • 三、启动python
                  • 四、启动java
                    • 五、启动.Net Core
                      • 六、启动静态Html
                        • 七、启动node.js
                        • 数据库类
                          • 一、启动Mysql
                            • 二、启动MongoDB
                              •  三、启动Redis
                              • 中间类
                                • 一、启动Nginx
                                  • 二、启动apache
                                    • 三、启动tomcat
                                    • 工具类
                                      • 一、启动haproxy
                                        • 二、启动keepalived
                                          • 三、启动jenkins
                                            • 四、启动gitlab
                                              • 五、启动Eureka
                                                • 六、启动Config Server
                                                  • 七、启动RabbitMQ
                                                  相关产品与服务
                                                  容器服务
                                                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                                  领券
                                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档