容器Docker

从零开始学习jenkins自动化部署

一。介绍

1.是什么
  解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术
  总之:一次打包,处处部署  jar,war + 环境配置 == 整体包

2.能干嘛
  a.更快速的应用交付和部署
  b.跟便捷的升级和扩缩容
  c.更简单的系统运维
  d.更高效的计算资源利用
  总之:一次打包,处处部署  jar,war + 环境配置 == 整体包

3.三要素
   仓库:集中存放镜像的场所   
   镜像:可以是一个可运行软件(tomcat,mysql),也可以是一个系统(centos)    
   容器:容器是用镜像创建的运行实例

二。安装

官网地址
安装参考
Centos7下两种方式安装Docker-CE



1.ubuntu安装方式:从ubuntu的apt库安装,这种安装的Docker不是最新版本,不过对于学习够用了,依次执行如下命令
     sudo apt install docker.io
     sudo systemctl start docker
     sudo systemctl enable docker     
     
2.CentOs安装方式
	查看目前官方仓库的docker版本,从高到低列出
		yum list docker-ce.x86_64 --showduplicates |sort -r #从高到低列出 Docker-ce 的版本
		
	运行如下命令:
		wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo     配置docker的yum源
		yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io -y      下载安装docker
		systemctl start docker                                                    启动docker
		systemctl enable docker                                                   设置开机启动docker
		docker run hello-world                                                    测试是否正常

  
3.查看安装的版本     
  docker -v
  docker version
  docker info -- 镜像地址和安装目录都在这里面
  
配置docker仓库源(还有网易云镜像加速)
   a.为什么要配置:
       因为国外的docker网址访问很慢,所以从国内的阿里云拉镜像快很多(就像github下载很慢,从gitee很快)
   b.配置:
      1.进入阿里云官网,https://promotion.aliyun.com/ntms/act/kubernetes.html
      2.搜索容器镜像服务,点击管理控制台
      3.获取复制加速器地址:https://10ne5axe.mirror.aliyuncs.com
      4.在etc/docker文件夹里面新增文件 daemon.json,并在里面写上语句
         {
           "registry-mirrors": ["https://10ne5axe.mirror.aliyuncs.com"]
         }
         或者
         {
           "registry-mirrors": ["https://registry.docker-cn.com"]
         }
      5.加载配置文件
         sudo systemctl daemon-reload
      6.重启:service docker restart 或者 sudo systemctl restart docker
      6.查看配置是否成功
         命令 sudo ps -ef | grep docker 返回出来的数据带有阿里云加速器地址

配置容器ip段
1.etc/docker文件夹里面新增文件 daemon.json,并在里面写上语句
{
        "big":172.17.3.1/24",
        "registry-mirrors": ["https://10ne5axe.mirror.aliyuncs.com"]
}
2.重新加载配置文件 systemctl daemon-reload
3.重启           systemctl restart docker

三。操作与命令

//docker命令始终要加sudo
添加docker用户组                                                     sudo groupadd docker          
检测当前用户是否已经在docker用户组中,不存在当前用户添加至docker用户组   sudo gpasswd -a will docker   
更新用户组                                                           newgrp docker 

docker的初始环境一般要关闭selinux,k8s也要改变
 查看是否关闭selinux                          getenforce          Disabled:已经关闭  Enforcing:未关闭
    临时关闭selinux                           setenforce 0          
    永久关闭selinux                          /ect/sysconfig里面的文件selinux,把SELINUX=Disabled

1.基本命令    
	查看版本                                     docker -v                       
	查看版本                                     docker version 
	查看docker详细信息                            docker info   docker的安装目录显示再docker root dir:/var/lib/docker
	命令说明                                      docker --help
	启动服务                                      service docker start 
	重新加载配置文件                                systemctl daemon-reload
	重启                                          systemctl restart docker
	查看是否启动(末尾有加速器地址表示配置加速成功) sudo ps -ef | grep docker
	配置让docker随着系统的启动而启动                sudo chkconfig docker on  或者 systemctl enable docker    
                                      
                                            


2.仓库命令:docker [login|pull|push|search],
	私有仓库的搭建、配置、上传见下面




3.镜像命令
    镜像搜索库:https://mirrors.tuna.tsinghua.edu.cn
	显示本地所有的镜像                                         docker images
	显示镜像包括分层信息(镜像结构像鸡蛋一样,蛋壳——蛋清——蛋黄)       docker images -a 
	显示镜像id                                                docker image  -q
	显示上面两个合并                                           docker image  -qa
	显示镜像 只有详细说明                                      docker image --digests
	显示镜像 含有详细说明                                      docker image --digests --no-trunk  
	删除镜像                                                 docker rmi tomcat
	删除镜像名称或者版本号包含none的镜像             docker rmi $(docker images | grep "none" | awk '{print $3}')
	搜索镜像                docker search hello-world  |  docker search tomcat
	搜索星数超过30的镜像     docker search -s 30 tomcat
	下载镜像 最新版本        docker pull tomcat
	下载镜像 指定版本        docker pull tomcat:3.2	
	创建镜像1(由容器转换)docker commit -a "piaoransheng" -m "mvc" tomcat tomcat:mvc     -a是人名            -m是备注 tomcat是容器名称   tomcat:mvc是镜像名称和版本号		 					                 	                  
	创建镜像2(docker build)	docker build -t mock:peter2 ..表示DockerFile在当前目录)   mock:peter2都可以自定义,表示镜像名称和版本	
	
	运行镜像                docker run hello-world
	运行镜像:               docker run -d -p 91:80 nginx      docker run -d -p 91:80 nginx:tuling				            
	运行镜像加日志           docker run -it --name test centos echo 123 	        
	运行Mysql镜像          docker run -p3306:3306 --name mysql-5.7 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7            
	运行镜像                 docker run -it --name cent2 centos:latest /bin/bash   //运行镜像创建容器,cent2是别名,centos:latest是镜像名, /bin/bash是启动shell脚本  
	                           -d 后台运行,返回容器id 
	                           -i 交互式
	                           -it 交互shell进程        
	                           -p 端口映射   -p 91:80  91是宿主机端口(安装docker的服务器,80是nginx的端口)
	                           -e 参数设置环境设置   -eMYSQL_ROOT_PASSWORD=root  
	                           -w /yongfu-ies-eem指定工作目录,这个工作目录是容器的工作目录,所以要-v映射      
	                           --name 容器别名     
	                           --rm,在容器退出时自动清理容器内部的文件系统
	                           -v /home/logs/:logs/              冒号前面本地全路径/开头,冒号后面容器内路径            
	                           -v /docker/mysql/conf:/etc/mysql  把本地配置文件挂载到容器
		                           冒号前面是本地路径,冒号后面是容器路径,
		                           本地的/mysql/conf下有个文件my.conf,my.conf是mysql的配置文件,比如内容是lower_case_table_name =1 表示表名对大小写不敏感 
		                           
	                           --volumes-from data   上面-v的升级版    data是数据卷容器名称(具体见下面)
  
    
              数据卷挂载 -volumes-from具体案例              
    					步骤1.使用一个从来不启动的容器,来统一配置  docker run -d --name data  -v /docker/nginx:/etc/nginx/conf.d -v /docker/mysql/conf:/ect/mysql hello-world    						
   						步骤2:引用配置                           docker run -d --name nginx --volumns-from data  nginx                                                                                 


4.容器命令
	列出正在运行的容器        docker ps 
	列出所有容器             docker ps -a 
	
	查看容器信息             docker inspect 容器id或者容器名称(容器id用docker ps查看)  包含ip地址,在network里面
	查看容器信息             top(在root@容器id下,创建容器就进入这个路径,正常是root@localhost) 
	查看容器进程             docker top id  
	查看容器位置             whrereis nginx   然后pwd
	查看容器日志              docker logs 容器id -f --tail=500
	                        docker-compose logs -f --tail=50
	查看容器挂载的目录        docker inspect 97ad5d5b75f0 | grep Mounts -A 20    source是本机地址,Destination是容器地址
    数据挂载(数据卷)                
    					步骤1.使用一个从来不启动的容器,来统一配置  docker run -d --name data  -v /docker/nginx:/etc/nginx/conf.d -v /docker/mysql/conf:/ect/mysql hello-world    						
   						步骤2:引用配置                           docker run -d --name nginx --volumns-from data  nginx                                                                              

	启动容器               docker start name1 name2
	进入容器               docker exec -it 容器id /bin/bash       进入容器     /bin/bash是shell命令              
	                       whereis 容器id或者名称                 会显示出nginx在哪
	退出容器                exit
	关闭容器                 docker stop name   docker stop id                        
	删除容器                docker rm 容器id
	删除停止的容器          docker rm `docker  ps  -a  |grep Exited   |awk   '{print $1}'`
	强制删除                docker rm -fv 容器名称      f是force强制  v是携带的数据  
	退出容器               ctrl + P + Q(不会关闭容器)
	停止容器               docker kill id 
	
	复制war包到容器        docker cp mvc.war tomcat:/usr/local/tomcat/webapps
	容器转成镜像           docker commit -a "piaoransheng" -m "mvc" tomcat tomcat:mvc    
									  -a是人名            -m是备注 tomcat容器名称   tomcat:mvc镜像名称和版本号
									  
	
	
	
	
	//容器生命周期命令
	docker run|start|stop|restart|kill|rm|pause|unpause 
	//容器操作运维命令
	docker [ps|inspect|exec|logs|export|import|port]
	//容器rootfs命令
	docker [commit|cp|diff]

四。Dockerfile方式和 插件方式(docker-maven-plugin) 创建镜像

1.Dockerfile方式
//案例1 nginx
1.新建Dockerfile文件,Dockerfile的内容:
    From nginx RUN echo '<h1> This is Tuling Nginx!!!</h1>' > /usr/share/nginx/html/index.html
    
2.进入Dockerfile所在文件夹,运行命令创建镜像
   docker build -t nginx:tuling .    后面有个点号
 
3.测试
    查看创建出来的镜像      docker ps  
    运行镜像               docker run -d -p 92:80 nginx:tuling
    页面访问:             http://docker宿主机ip:92/  可看到nginx界面表示成功


//案例2 自己的springboot项目
需要先将微服务项目打包成jar包或war并上传到docker宿主机下
    jar包就是from java      war是from tomcat


1.新建Dockerfile文件,Dockerfile的内容见下面:
   From java:8                                                    #基于哪个镜像
   VOLUME /tmp                                                    #将本地文件夹挂载到当前容器
   ADD microservice-eureka-server-0.0.1.SHAPSHOT.jar /app.jar     #本地jar文件复制到镜像里面  前面的jar是本地jar文件名,后面的Jar是镜像里的jar文件名
   EXPOSE 8080                                                    #声明需要暴露的端口 这边要8080浏览器才能访问,不知道为什么
   ENTRYPOINT ["java","-jar","/app.jar"]                         #运行镜像后要执行的命令 CMD也是
   
2.进入DockerFil所在文件夹,运行命令创建镜像
  docker build -t mock:peter2 ..表示DockerFile在当前目录)   mock:peter2都可以自定义,表示镜像名称和版本
  

3.测试
    查看创建出来的镜像      docker ps  
    运行镜像              docker run -d -p 8761:8080 microservice-euraka-server:0.0.1  这里是镜像的名称和版本号
    页面访问:             http://docker宿主机ip:8761/        运行镜像要指定端口映射,不然访问不了



自己测试成功的Dockerfile文件
	FROM 10.10.4.129:5000/xetys/java-8-docker:latest
	WORKDIR /workspace
	ADD ./target/conventional-station-1.0-SNAPSHOT.jar /conventional-station.jar
	EXPOSE 9091
	CMD ["java", "-jar", "-Duser.timezone=GMT+08", "/conventional-station.jar"]

yongfu的Dockerfile
	FROM docker-registry.dev.yf.ywh1357.com/yf-substation-jni-base:latest
	ARG yfscd_version
	ENV YFSCD_VERSION=${yfscd_version}
	ENV LD_LIBRARY_PATH=/workspace/jni
	WORKDIR /workspace
	COPY target/yf-substation-${yfscd_version}.jar ./yf-substation.jar
	COPY jni ./jni
	# RUN echo "deb http://deb.debian.org/debian testing main" >> /etc/apt/sources.list && \
	#     apt update && \
	#     apt install -t testing -y \
	#     libc++1-11 \
	#     libc6 \
	#     libpugixml1v5 \
	#     libxext6 \
	#     libxrender1 \
	#     libxtst6 \
	#     libicu67 \
	#     libstdc++6
	RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
	    mkdir -p /data/mva/file/
	CMD ["java", "-jar", "-Duser.timezone=GMT+08","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5008", "./yf-substation.jar"]

2.插件方式docker-maven-plugin
上面的发布war包步骤: 1.项目打成Jar包复制到服务器  2.创建镜像  3.运行镜像 
  其中12可以合起来,就有了插件docker-maven-plugin

使用插件步骤
1.项目的pom文件有插件docker-maven-plugin,内容见下面
2.项目有Dockfile,和pom.xml同一目录,内容见下面
	FROM java:8
	ADD target/mock-1.0-SNAPSHOT.jar /mock.jar
	EXPOSE 8080
	ENTRYPOINT ["java","-jar","/mock.jar"]

3.项目复制到服务器,cd进入项目然后直接命令完成打包和构建镜像: mvn clean package docker:build
	mvn clean package    ——打包
	mvn docker:build     ——构建镜像,如果构建镜像失败,看下jar包在哪,这边就多加了一个target目录 ADD target/mock-1.0-SNAPSHOT.jar /mock.jar
	docker push          ——推送私有仓库
	
4.运行镜像

5.访问测试
	
<!--构建镜像插件-->
<build>
        <plugins>            
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <imageName>192.168.61.137:5000/mock-plugin</imageName> //镜像名称
                    <dockerDirectory>${project.basedir}/src/main</dockerDirectory>  //dockerFile文件路径
                    <skipDockerBuild>false</skipDockerBuild>
                    <resources>
                        <resource>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}</include>  //jar包所在路径
                        </resource>
                    </resources>
                </configuration>
            </plugin>

五、创建镜像的几种方式

阿里云镜像

方法1:由容器转换过来
      docker commit -a "piaoransheng" -m "mvc" tomcat tomcat:mvc    
				   -a是人名            -m是备注 tomcat是容器名称   tomcat:mvc是镜像名称和版本号

方法2:使用DockerFile创建镜像,具体见上面  
     docker build -t mock:peter2 .


方法3. DockerFile和maven组合的方式(项目需要有pom依赖:docker-maven-plugin)
	进入项目路径,直接命令 mvn clean package docker:build	

在这里插入图片描述

六、Docker Compose 批量运行镜像

DevOps理念,快速搭建开发环境过程

1、概念:后端、前端、mysql等服务组合成一个完整的服务启动

2.安装
   步骤1:下载 docker-compose.rar
   		sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
   步骤2:把下载的文件授权为可执行文件
   		sudo chmod +x /usr/local/bin/docker-compose  
   步骤3:测试
   		docker-compose version

3.使用步骤
	1.创建编写配置文件      docker-compose.yml      (里面多个服务)配置文件见最下面附件1
	2.启动                 docker-compose up -d     测试:docker ps看到三个服务跑起来
	3.停止服务并会删除荣去   docker-compose down      测试:docker ps和docker ps -a看到三个容器都没有额

案例

//变电站生产环境
version: '2'   //指定docker-compose的版本
services:
  substation:
    image: docker-registry.dev.yf.ywh1357.com/yf-substation:v2.0.2-snapshot.7.3  
    container_name: mysql-5.7.32
    restart: always  //冒号后要有空格,不然报错
    depends_on:
      - db
    privileged: true   //避免挂载目录提示没有权限
    volumes:
      - ./config:/workspace/config:Z  //-后面要有空格,不然报错
      - /data/mva/file:/data/mva/file:Z   
      - /home/project/docker/yf_substation/logs:/workspace/.logs:Z  //idea项目里面的文件夹加个/workspace
    command: java -jar -Duser.timezone=GMT+08  -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5008 ./yf-substation.jar --spring.config.location=file:///workspace/config/application.properties
     command: sleep 300
    ports: 
      - 8080:8080

   db:
    image: postgres:11.4-alpine
    restart: always
    volumes:
      - ./create_database.sql:/docker-entrypoint-initdb.d/create_database.sql:Z
      - db_data:/var/lib/postgresql/data
     ports:
       - 54321:5432

//minio
version: "3.7"
services: 
  minio:
    image: quay.io/minio/minio
    container_name: mysql-5.7.32
    restart: always
    privileged: true   #避免挂载目录提示没有权限
    command: server /data --console-address ":9001"
    environment: 
      MINIO_ROOT_USER: root
      MINIO_ROOT_PASSWORD: 12345678
    volumes:
      - ./volumes/data:/data:Z
    ports: 
      - 9000:9000
      - 9001:9001

在这里插入图片描述

七、Docker Swarm 多主机部署应用

1.Swarm组件概念
	•swarm:是一组docker引擎的集群
	•node:是单个docker引擎的实例,可以在一个物理机上也可以在多个
	•application:是应用
	•manager node:部署应用的时候会有一个manager node节点
	•Worker nodes:对应的就是Worker nodes
	•service:然后service是一堆被workder执行的任务
	•replicated services:是负载均衡节点
	•global services:则是全局的,在所有节点上都会执行的一个服务
	•task:一个task就是一个docker的容器,是Swarm的工作单元
	
2.Docker Swarm命令
	docker swarm:集群管理,
	---子命令有 init, join, leave, update。
	(docker swarm –help 查看帮助)
	docker service:服务创建,
	---子命令有 create, inspect, update, remove, tasks。
	(docker service–help 查看帮助)
	docker node:节点管理,
	---子命令有 accept, promote, demote, inspect, update, tasks, ls, rm。
	(docker node –help 查看帮助)

 	示例:
 		创建服务
		docker service create --name nginx --replicas 3 -p 80:80 nginx:1.7.9
		查看服务列表
		docker service ls
		查看服务详情
		docker service ps nginx
		工作节点上查看容器
		docker ps
		更新服务版本
		docker service update --image nginx:1.9.7 nginx
		删除服务
		docker service rm nginx

八、Docker私有仓库

(正常的镜像都是从公有仓库拉取)

1.搭建:
   1.拉取镜像:docker pull registry 
   2.运行镜像:docker run -d --name registry-5000 -p 5000:5000 registry
   3.浏览器测试:http://192.168.61.136:5000/v2/_catalog 表示搭建成功

2.配置信任私有仓库,让镜像可以上传到这个私有仓库,也可以从私有仓库拉取镜像
   1.修改/etc/docker/daemon.json, 写上"insecure-registries":["192.168.61.136:5000"]
	   	{
			"registry-mirrors": ["https://10ne5axe.mirror.aliyuncs.com"],
			"insecure-registries":["192.168.61.136:5000"]
		}
   2.重启docker, systemctl restart docker  这时候所有容器都停止了
   
   3.启动私有仓库容器, docker start 容器id, 浏览器测试:http://192.168.61.136:5000/v2/_catalog
	
3.本地镜像上传到私有仓库
   1.查看本地有哪些镜像:  docker images
   2.给本地镜像打上标签: docker tag mock:0506001 192.168.61.136:5000/mock:1.0  前面是本地镜像名称和版本号,后面是服务器ip:端口/私有仓库镜像名称
   
   3.推送: docker push 192.168.61.136:5000/mock:1.0 ,浏览器测试输入http://192.168.61.136:5000/v2/_catalog

4.从私有仓库拉取镜像
   1.也要信任私有仓库,配置见上面
   2.拉取,docker pull 192.168.61.136:5000/mock

5. 查看私有仓库所有镜像 http://10.10.62.7:5000/v2/_catalog             curl -XGET http://192.168.61.146:5000/v2/_catalog
   镜像具体信息  http://10.10.62.7:5000/v2/yf-substation/tags/list    curl -XGET 前面按个路径
	

九、docker可视化管理工具:portainer.io

官网地址

1、docker-compose安装启动

	version: '2'
	services: 
	  docker-portainer:
	    image: docker.io/portainer/portainer
	    container_name: docker-portainer
	    restart: always
	    volumes:
	      - /var/run/docker.sock:/var/run/docker.sock                    
	      - ./data:/data                       
	    ports: 
	      - 9000:9000


2、访问:http://192.168.61.148:9000
     账号admin    密码admin123456

3、选择local——connect

十、docker运行应用汇总

1.gitlab-ce

官网参考安装地址

三个映射文件夹:config data logs
三个端口: 443-https   80-http   22-ssh

docker run 
	-d 
	-p 443:443 -p 80:80 -p 222:22 
	--name gitlab-ce
	--restart always 
	-v /home/piaoransheng/gitlab/config:/etc/gitlab
	-v /home/piaoransheng/gitlab/logs:/var/log/gitlab
	-v /home/piaoransheng/gitlab/data:/var/opt/gitlab
gitlab/gitlab-ce


version: '3'
services: 
  gitlab:
    image: 10.10.4.129:5000/gitlab/gitlab-ce:latest      //1.镜像
    container_name: gitlab                               //2.容器名称
    hostname: 10.10.4.129
    restart: always                                      //3.总是重启
    privileged: true   #避免挂载目录提示没有权限             //4.权限
    volumes:                                             //5.目录挂载
      - ./volumes/config:/etc/gitlab
      - ./volumes/logs:/var/log/gitlab
      - ./volumes/data:/var/opt/gitlab
    ports:                                               //6.端口映射
      - 80:80
      - 443:443
      - 222:22

2.gitlab-runner

官网参考安装地址

docker run 
-d 
--name gitlab-runner 
--restart always    
-v /home/piaoransheng/gitlab-runner/builds:/home/gitlab-runner/builds
-v /home/piaoransheng/gitlab-runner/config:/etc/gitlab-runner  
-v /home/piaoransheng/gitlab-runner/docker.sock:/var/run/docker.sock   
gitlab/gitlab-runner:latest

或者docker-compose方式
version: '3'
services: 
  gitlab-runner:
    image: 10.10.4.129:5000/gitlab/gitlab-runner:latest
    container_name: gitlab-runner
    hostname: 10.10.4.129
    restart: always
    privileged: true   #避免挂载目录提示没有权限
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./volumes/config:/etc/gitlab-runner

3.minio

version: '2'
services: 
  minio:
    image: quay.io/minio/minio
    container_name: mysql-5.7.32
    command: server /data --console-address ":9001"
    environment: 
      MINIO_ROOT_USER: root
      MINIO_ROOT_PASSWORD: 12345678
    volumes:
      - ./data:/data:Z
    ports: 
      - 9000:9000
      - 9001:9001

4,智能变电站生产环境

version: '2'
services:
  substation:
    image: docker-registry.dev.yf.ywh1357.com/yf-substation:v2.0.2-snapshot.5.9
    container_name: mysql-5.7.32
    restart: always
    depends_on:
      - db
    volumes:
      - ./config:/workspace/config:Z
      - /data/mva/file:/data/mva/file:Z
    command: java -jar -Duser.timezone=GMT+08  -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5008 ./yf-substation.jar --spring.config.location=file:///workspace/config/application.properties
    # command: sleep 300
    ports: 
      - 8080:8080

  db:
    image: postgres:11.4-alpine
    container_name: mysql-5.7.32
    restart: always
    volumes:
      - ./create_database.sql:/docker-entrypoint-initdb.d/create_database.sql:Z
      - db_data:/var/lib/postgresql/data
    # ports:
    #   - 54321:5432

volumes:
  server_files:
  db_data:

5,mysql

version: '2'
services: 
  mysql:
    image: smallbone5581/mysql5.7.32
    container_name: mysql-5.7.32
    restart: always
    privileged: true   #避免挂载目录提示没有权限
    environment: 
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_USER: 'piaoransheng'
      MYSQL_PASS: 'piaoransheng'
    volumes:
      - ./volume/data:/var/lib/mysql                          #挂载数据
      - ./volume/config:/etc/my.cnf                           #挂载配置文件目录
      - ./volume/init:/docker-entrypoint-initdb.d             #挂载初始化脚本目录
    ports: 
      - 3306:3306

6,docker可视化管理工具portainer

	version: '2'
	services: 
	  docker-portainer:
	    image: docker.io/portainer/portainer
	    container_name: docker-portainer
	    restart: always
	    volumes:
	      - /var/run/docker.sock:/var/run/docker.sock                    
	      - ./data:/data                       
	    ports: 
	      - 9000:9000

7,时序数据库influxdb

version: "3.7"
services: 
  minio:
    image: 10.10.62.7:5000/inluxdb:latest
    container_name: influxdb
    restart: always
    privileged: true   #避免挂载目录提示没有权限
    environment: 
      - INFLUXDB_ADMIN_ENABLED=true 
      - INFLUXDB_ADMIN_USER=${INFLUXDB_ADMIN_USER:-root}
      - INFLUXDB_ADMIN_PASSWORD=${INFLUXDB_ADMIN_PASSWORD:-root}
      - INFLUXDB_DB=test
      - INFLUXDB_HTTP_LOG_ENABLED=false
      - INFLUXDB_REPORTING_DISABLED=true
      - INFLUXDB_USER=${INFLUXDB_USER:-test}
      - INFLUXDB_USER_PASSWORD=${INFLUXDB_USER_PASSWORD:-test}
    volumes:
      - ./volumes/data:/var/lib/influxdb
    ports: 
      - 8083:8083
      - 8086:8086

8.nginx

1、创建docker-compose.yml文件

version: '3'
services:
    nginx:
        image: nginx                                  # 1.镜像名称
        container_name: nginx                         # 2.容器名字
        privileged: true                              # 3.避免挂载目录提示没有权限
        restart: always                               # 4.开机自动重启
        ports:                                        # 5.端口号绑定(宿主机:容器内)
            - '80:80'
            - '443:443'
        volumes:                                      # 6.目录映射(宿主机:容器内)
            - ./volume/conf/nginx.conf:/etc/nginx/nginx.conf   ## 配置文件
            - ./volume/log:/var/log/nginx                      ## 这里面放置日志
            - ./volume/html:/html                              ## 这里面放置项目目录

2、在docker-compose文件所在目录创建文件夹/volume/conf 、/volume/log 、 /volume/html

mkdir volume
mkdir conf  log  html

3、在volume/conf/文件下创建nginx.conf文件并填写下面内容

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

4、在html文件夹下创建index.html文件

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>docker-compose start nginx</title>
</head>
<body>
    <h1>docker-compose start nginx success</h1>
</body>
</html>

5、运行nginx并查询是否运行成功

docker-compose up -d     //运行
docker ps               //查看是否成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘然生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值