Docker笔记

Docker学习

Docker概述

  • docker含义

    docker是开发、运输、运行应用的平台。docker能分离基础环境,以便快速交付。使用docker能像管理应用一样管理基础环境。利用docker可以快速交付、测试和部署代码,减少编写代码和生产中运行代码的延时。
    

安装Docker

  • 环境准备

#查看系统内核 需3.10内核才可安装docker (CentOS 7 或 8 的维护版本)
uname -r

3.10.0-1160.11.1.el7.x86_64

#查看系统版本
cat /etc/os-release

NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
  • 在线安装步骤

    1、卸载旧版本

    #卸载旧版本
    yum remove docker-ce docker-ce-cli containerd.io
    
    #删除相关文件
    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd
    

    2、设置存储库,配置镜像地址

     
     yum install -y yum-utils
     
     #设置镜像地址
     yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    3、安装docker引擎

    #更新yum软件包索引
    yum makecache fast
    #安装docker
    yum install docker-ce docker-ce-cli containerd.io
    

    4、启动docker

    systemctl start docker
    

    5、检测是否安装成功

    docker version
    

在这里插入图片描述

6、运行helloword程序

docker run hello-world

7、查看hello-world镜像

docker images

8、添加开机启动服务

 sudo systemctl enable docker.service
 sudo systemctl enable containerd.service
  • 离线安装

    1、卸载旧版本

    #查看docker的根目录 -- 默认值/var/lib/docker
    docker info |grep 'Docker Root Dir:'
    
    #停止docker服务
    systemctl stop docker
    
    #杀死docker进程 (awk '{print $2}' 一行一行的读取指定的文件, 以空格作为分隔符,打印第二个字段)
    ps -ef | grep docker | awk{print $2}| xargs sudo kill -s 9
    
    #删除docker的根目录
    rm -rf /var/lib/docker
    
    #删除docker容器目录
    rm -rf /var/lib/containerd
    
    #删除默认监听的Unix域套接字,容器中的进程可以通过它与Docker守护进程进行通信
    rm -rf /var/run/docker.sock
    
    #删除docker守护进程PID文件,默认值/var/run/docker.pid,可通过dockerd命令的-p或–pidfile选项修改
    rm -rf /var/run/docker.pid
    
    #删除系统服务配置文件
    rm -rf /etc/systemd/system/docker.service
    
    #删除docker配置文件/etc/docker/daemon.json,可通过dockerd命令的–config-file选项修改
    sudo rm -rf /etc/docker/daemon.json
    
    #删除自动生成的文件,tls相关配置:~/.docker/{ca.pem,cert.pem,key.pem}
    sudo rm -rf ~/.docker/
    
    #清理可执行文件
    ls docker/ |awk{print "/usr/bin/$1}|xargs sudo rm -rf
    
  • rpm安装

  • 以非 root 用户管理 Docker

    Docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。默认情况下,Unix 套接字归用户所有root,其他用户只能使用sudo.Docker 守护进程始终以root用户身份运行。

    # 1、添加docker组
    sudo groupadd docker
    
    # 2、将当前用户添加到docker组
    sudo usermod -aG docker $USER
    
    # 3、注销并重新登录,以便重新评估您的组成员身份,Linux 中则通过命令激活组更改
    newgrp docker
    
    # 4、验证docker是否生效
    docker run hello-world
    

Docker原理

  • docker run 流程

在这里插入图片描述

  • 工作原理(docker如何工作?)

    Docker是一个Client-Server结构的系统,docker的守护进程运行在主机上。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z4ZM7sRD-1644663995513)(F:\typora\images\Snipaste_2021-09-01_23-09-14.jpg)]

    docker 为什么比VM快?

    1、docker比虚拟机有着更少的抽象层

    2、docker是利用宿主主机的内核,vm则需要Guest OS(重新加载一个操作系统内核)

在这里插入图片描述

Docker常用命令

#docker版本信息
docker version
#显示docker详细信息
docker info
docker --help

镜像命令

docker images #查看本地镜像

docker seach # 搜索镜像

#过滤点赞数大于3000的镜像
docker search mysql --filter=stars=3000

docker pull #下载镜像(分层下载)

docker pull mysql
#指定版本下载
docker pull mysql:5.7

在这里插入图片描述

docker rmi #删除镜像

#删除指定镜像ID
docker rmi -f 镜像ID
#删除全部镜像
docker rmi -f $(docker images -aq)

docker load # 从本地加载镜像(适用于没有外网的情况下)

docker load tar文件路径

docker history # 查看镜像的构建历史

docker history + 镜像ID

容器命令

docker run image #新建容器并启动

docker run[可选参数] image
#参数说明
--name="name" 容器名称
-d  后台方式运行
-it 使用交互模式运行,进入容器中
-p 指定容器端口 -p 8080:8080

#进入centos容器
docker -run it centos /bin/bash
#从容器中退出(停止容器并退出)
exit 
ctrl + P + Q #退出容器不退出

docker ps #查看容器进程

docker ps 参数
-a #当前运行进程 + 历史进程
-n #显示个数
-q #只显示容器ID

docker rm #删除容器

docker rm + 容器ID # 不能删除正在运行的容器
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q | xargs docker rm #删除所有容器

docker 启动和停止容器

docker start + 容器ID
docker restart + 容器ID
docker stop + 容器ID
docker kill + 容器ID

常用命令

容器后台启动

docker run -d 容器名
# docker容器使用后台运行,就必须要有一个前台进程,dcker发现没有应用,就会停掉。

查看日志

docker logs --detail + 容器
# docker logs -tf --tail 10 22bc1bfbd090

查看进程信息

docker top + 容器ID
docker top 22bc1bfbd090

查看镜像元数据

docker inspect + 容器ID

进入当前运行的容器

#方式一 进入容器后开启一个新的终端
docker exec -it 容器ID bash命令
docker exec -it 22bc1bfbd090 /bin/bash

#方式二 进入当前正在执行的容器
docker attach 容器ID
docker attach 22bc1bfbd090

从容器内拷贝文件到主机

docker cp 容器id:容器内路径 目标主机的路径
docker cp 22bc1bfbd090:/home/test.txt /home/

把当前容器保存为一个镜像

docker save -o 

在这里插入图片描述

小结

 docker --help
 
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  app*        Docker App (Docker Inc., v0.9.1-beta3)
  builder     Manage builds
  buildx*     Build with BuildKit (Docker Inc., v0.6.1-docker)
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  scan*       Docker Scan (Docker Inc., v0.8.0)
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

可视化

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

在这里插入图片描述

docker镜像

镜像含义

镜像是一种独立的,可运行的独立软件包,可将运行应用的环境,依赖,运行库以及配置文件打包在一起。
  • 镜像来源

    1、从远程仓库下载安装

    2、自己制作

联合文件系统

联合文件系统(unoin fs):分层、清凉级并且高性能的文件系统,支持对文件系统一层层提交。,同时可以将不同目录改在到同一个虚拟文件系统下,可通过分层来进行继承,基于基础镜像制作各种具体镜像。
特性:
	一次同时加载多个文件系统,但从外面看起来,只能看见一个文件系统,联合加载会把各层文件系统叠加起来,最终文件系统会包含所有底层的文件和目录。

镜像分层

在这里插入图片描述

镜像加载原理

在这里插入图片描述

在这里插入图片描述

docker镜像都是制度的,当容器启动时,一个新的可写层被加载到镜像的顶部!这一层就是我们通常所说的容器层,容器之下的都叫做镜像。

在这里插入图片描述

commit镜像

#使用方式
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

docker commit -a="yqc" -m="add test" bc8cf93b5714 tomcat_test

容器数据卷

含义

应用及环境 -----》 镜像 -----》容器,若删除容器,则应用运行数据也将丢失。
为了解决此种问题,容器之间要有一个数据共享技术,将容器中的数据同步到主机,通过卷技术,将容器中的文件挂在到主机上。
总结:
	容器数据同步及持久化操作,容器与主机以及容器与容器都可通过挂载实现数据同步及持久化。

命令

docker run -it 	容器ID -v 主机目录:容器目录

类似于双向绑定,修改只需在主机操作即可。

mysql安装实例

docker run -d  -p 3306:3306 -v /home/mysql/conf/:/etc/mysql/mysql.conf.d/ -v /home/mysql/data/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 --name=mysql mysql:5.7


docker run -d -p 3306:3306 -v /home/lighthouse/software/mysql/data/:/var/lib/mysql/ -v /home/lighthouse/software/mysql/conf/:/etc/mysql/mysql.conf.d/ -e MYSQL_ROOT_PASSWORD=123456 --name=mysql mysql:5.7

具名挂载和匿名挂载

#匿名挂载
docker run -v 容器内路径

#具名挂载
docker run -v 卷名:容器内目录

#指定路径挂载
docker run -v 主机路径:容器内路径

#查看挂载路径具体位置
docker volume inspect 卷ID

#扩展:
ro readonly #只读
rw readwrite #可读可写
#一旦设置了容器权限,则容器对挂载文件就有权限控制
docker run -容器 juming-nginx:/etc/nginx:ro nginx
docker run -v juming-nginx:/etc/nginx:rw nginx

在这里插入图片描述

Dockerfile

含义:

构建docker镜像的文件(命令参数脚本)。

#1、创建dockerfile文件
#2、文件内容 指令(大写) 参数
FROM centos
#匿名挂载两个数据卷
VOLUME ["volume01","volume02"]
CMD echo "-----挂载成功-----"
CMD /bin/bash
# 构建镜像 (最后点的作用是生成在当前目录下)
docker build -f Dockerfile -t yqc/centos:self .

# 运行镜像

tomcat镜像创建文件

FROM centos
MAINTAINER yqc@qq.com


ADD jdk-8u301-linux-x64.tar.gz /usr/local
ADD apache-tomcat-8.0.35.tar.gz /usr/local

COPY readme.md /usr/local

ENV mypath /usr/local

WORKDIR $mypath

ENV JAVA_HOME /usr/local/jdk1.8.0_301

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar


ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.35

ENV CATALINA_BASE /usr/local/apache-tomcat-8.0.35

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/lib

EXPOSE 8080


CMD /usr/local/apache-tomcat-8.0.35/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.0.35/logs/catalina.out

基础知识

1、指令关键字大写

2、指令从上到下执行

3、每一个指令都会创建提交一个新的镜像层,并提交。

在这里插入图片描述

指令:

在这里插入图片描述

FROM  #基础镜像
MAINTAINER #作者
RUN    #镜像构建时运行命令
ADD    #添加内容
WORKDIR #镜像的工作目录
VOLUME #挂载目录
EXPOST #暴露端口配置

CMD   #指定容器启动时需要运行的命令,替换指令
ENTRYPOINT # 指定容器启动时运行命令,可以追加命令

ONBUILD #构建一个被继承Dockerfile时使用
COPY  #将文件拷贝到目录中
ENV   #构建时设置环境变量

实战

# 构建自己的centos
FROM centos
MAINTAINER yqc

ENV MYPATH /usr/local

WORKDIR $MYPATH

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

EXPOSE 80

CMD echo $MYPATH
CMD echo "-----end-----"
# 测试CMD 和 ENTRYPOINT的区别
FROM centos
CMD ["ls","-a"]

FROM centos
CMD ["ls","-a"]

使用CMD执行命令时,不能在容器启动时拼接命令

在这里插入图片描述

使用ENTRYPOINT 执行命令,可在运行时拼接命令

在这里插入图片描述

# 构建tomcat镜像
FROM centos
# 此处会自动解压目录
ADD jdk-8u301-linux-x64.tar.gz /usr/local
ADD apache-tomcat-8.0.35.tar.gz /usr/local

# 拷贝文件到容器
COPY readme.md /usr/local

ENV mypath /usr/local
WORKDIR /usr/local
# 设置环境变量
ENV JAVA_HOME /usr/local/
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.35
ENV CATALINA_BASE /usr/local/apache-tomcat-8.0.35
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/lib

EXPOSE 8080

CMD /usr/local/apache-tomcat-8.0.35/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.0.35/logs/catalina.out

数据卷容器

含义: 相当于挂载一个容器目录,实现两个容器的数据同步。使用volume-from可以实现多个容器间的数据同步,挂载目录相当于双向同步,副本拷贝。作用:可以用于集群节点配置传递,数据同步

docker run -it --name centos01 --volume-from docker01  ca89db9213f3

# 使用volumes-from挂载容器centos01 实现挂载目录间的数据同步(其他未挂载文件不会同步)
docker run -it --name centos02 --volumes-from centos01  ca89db9213f3 

发布到docker hub

# 登录到docker hub
docker login -u 

# 发布镜像
docker push

docker总结

在这里插入图片描述

Docker网络

理解docker0

#查看当前网络
ip addr
idconfig

在这里插入图片描述

原理

启动一个docker容器,docker就会给容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用evth-pair,docker0充当路由器的作用。

veth-pair

veth-pair 是一对的虚拟设备接口,他们都是成对出现,一端连着协议,一端批次相连,veth-pair充当桥梁

容器内地址

在这里插入图片描述

主机地址

在这里插入图片描述

结论

主机上启动的所有容器之间公用一个路由器docker0,在容器之间不指定网络的情况下,都是通过docker进行转发的

在这里插入图片描述

docker中所有的网络接口都是虚拟的,虚拟的转发效率高。停止docker进程后,这些虚拟的网络地址也会被移除,重新启动后网络地址会重新生成。此时,如果涉及容器间相互调用访问地址时,则需要类似域名的方式保证重启容器后,各个容器之间还能相互访问。

在这里插入图片描述

link

docker 网络命令

docker network ls   # 列出所有网络
docker network inspect 网络ID  # 查看网络具体信息

链接容器

docker run -it -P --name tomcat05 --link tomcat03  tomcat:8

# 此时tomcat05容器信息中会添加 "Links": ["/tomcat03:/tomcat05/tomcat03"]
# tomcat03中则是 "Links": null,
# 意味着只能从此连接是单向的 
# 172.17.0.3      tomcat03 1b0ff5624e08 tomcat05容器会将tomcat03作为域名配置到hosts文件中

自定义网络

查看所有的docker网络

bridge     #桥接(默认)
host       #和宿主机共享网络
one        #不配置网络
container  #容器互联互通

设置网络

# 创建一个网络
docker network create mynet

#查看网络详情
docker network inspect mynet

#启动容器时将容器网络添加到自定义网络
docker run -it -P --name tomcat01 --net mynet  tomcat:8

#默认启动容器使用的网络是bridge。

在这里插入图片描述

网络联通

# j将容器03加入到网络mynet中
docker network connect mynet tomcat-net-03

实战部署redis集群

创建配置文件脚本

for port in $(seq 1 6); \
do \
mkdir -p /home/lighthouse/software/redis-cluster/node-${port}/conf
touch /home/lighthouse/software/redis-cluster/node-${port}/conf/redis.conf
cat  << EOF >/home/lighthouse/software/redis-cluster/node-${port}/conf/redis.conf
port 6379 
bind 0.0.0.0
cluster-enabled yes 
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.168.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

启动容器脚本

for port in $(seq 1 6); \
do \
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
    -v /home/lighthouse/software/redis-cluster/node-${port}/data:/data \
    -v /home/lighthouse/software/redis-cluster/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
    -d --net net-redis --ip 172.168.0.1${port} redis:6.0 redis-server /etc/redis/redis.conf
done

创建集群

redis-cli --cluster create 172.168.0.11:6379 172.168.0.12:6379 172.168.0.13:6379 172.168.0.14:6379 172.168.0.15:6379 172.168.0.16:6379 --cluster-replicas 1

连接集群

 redis-cli -c
 
 #连接后查看redis集群
 cluster info
 
 # 集群信息
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:300
cluster_stats_messages_pong_sent:295
cluster_stats_messages_sent:595
cluster_stats_messages_ping_received:290
cluster_stats_messages_pong_received:300
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:595 

微服务构建

dockerfile

FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

Docker Compose(容器编排)

简介

用来定义和运行多个容器,处理容器间的依赖关系。使用yml来配置启动。

使用步骤

  • 定义dockerfile
    
  • 使用docker-compose.yml定义容器关系
    
  • 启动项目
    

docker-compose.yml示例

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

安装docker compose

下载docker compose

# 下载文件
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)  -o /usr/local/bin/docker-compose

#授权
chmod +x /usr/local/bin/docker-compose

#查看版本
docker-compose version

示例

步骤一: 定义应用依赖

  • 为工程创建一个目录
 mkdir composetest
 cd composetest
  • 创建app.py文件
import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)

@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)
  • 创建requirements.txt
flask
redis

步骤二:创建docker文件

# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

步骤三:定义服务在docker-compose中

version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

步骤四:构建和运行应用

 docker-compose up  # 启动
 docker-compose up -d #以后台进程运行
 docker-compose run web env #单独运行一个服务
 docker-compose ps #查看进程
 
Starting compose-test_web_1   ... done
Starting compose-test_redis_1 ... done
Attaching to compose-test_redis_1, compose-test_web_1
redis_1  | 1:C 12 Sep 2021 08:43:52.175 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1  | 1:C 12 Sep 2021 08:43:52.175 # Redis version=6.2.5, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1  | 1:C 12 Sep 2021 08:43:52.175 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis_1  | 1:M 12 Sep 2021 08:43:52.176 * monotonic clock: POSIX clock_gettime
redis_1  | 1:M 12 Sep 2021 08:43:52.180 * Running mode=standalone, port=6379.
redis_1  | 1:M 12 Sep 2021 08:43:52.180 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1  | 1:M 12 Sep 2021 08:43:52.180 # Server initialized
redis_1  | 1:M 12 Sep 2021 08:43:52.180 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis_1  | 1:M 12 Sep 2021 08:43:52.181 * Loading RDB produced by version 6.2.5
redis_1  | 1:M 12 Sep 2021 08:43:52.181 * RDB age 28 seconds
redis_1  | 1:M 12 Sep 2021 08:43:52.181 * RDB memory usage when created 0.77 Mb
redis_1  | 1:M 12 Sep 2021 08:43:52.181 * DB loaded from disk: 0.000 seconds
redis_1  | 1:M 12 Sep 2021 08:43:52.181 * Ready to accept connections
web_1    |  * Serving Flask app 'app.py' (lazy loading)
web_1    |  * Environment: production
web_1    |    WARNING: This is a development server. Do not use it in a production deployment.
web_1    |    Use a production WSGI server instead.
web_1    |  * Debug mode: off
web_1    |  * Running on all addresses.
web_1    |    WARNING: This is a development server. Do not use it in a production deployment.
web_1    |  * Running on http://172.19.0.3:5000/ (Press CTRL+C to quit)
web_1    | 172.19.0.1 - - [12/Sep/2021 08:44:21] "GET / HTTP/1.1" 200 -
web_1    | 172.19.0.1 - - [12/Sep/2021 08:44:26] "GET / HTTP/1.1" 200 -

停止docker compose

# 一键停止所有的服务
docker-compose down 
ctrl + c

yml规则

version:''
services:
  web:
    build: .
    # 依赖
    depends_on:
volumes:

命令总结

docker-compose --help
Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f <arg>...] [--profile <name>...] [options] [--] [COMMAND] [ARGS...]
  docker-compose -h|--help

Options:
  -f, --file FILE             Specify an alternate compose file
                              (default: docker-compose.yml)
  -p, --project-name NAME     Specify an alternate project name
                              (default: directory name)
  --profile NAME              Specify a profile to enable
  -c, --context NAME          Specify a context name
  --verbose                   Show more output
  --log-level LEVEL           Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  --ansi (never|always|auto)  Control when to print ANSI control characters
  --no-ansi                   Do not print ANSI control characters (DEPRECATED)
  -v, --version               Print version and exit
  -H, --host HOST             Daemon socket to connect to

  --tls                       Use TLS; implied by --tlsverify
  --tlscacert CA_PATH         Trust certs signed only by this CA
  --tlscert CLIENT_CERT_PATH  Path to TLS certificate file
  --tlskey TLS_KEY_PATH       Path to TLS key file
  --tlsverify                 Use TLS and verify the remote
  --skip-hostname-check       Don't check the daemon's hostname against the
                              name specified in the client certificate
  --project-directory PATH    Specify an alternate working directory
                              (default: the path of the Compose file)
  --compatibility             If set, Compose will attempt to convert keys
                              in v3 files to their non-Swarm equivalent (DEPRECATED)
  --env-file PATH             Specify an alternate environment file

Commands:
  build              Build or rebuild services
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove resources
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show version information and quit
        Build or rebuild services

config Validate and view the Compose file
create Create services
down Stop and remove resources
events Receive real time events from containers
exec Execute a command in a running container
help Get help on a command
images List images
kill Kill containers
logs View output from containers
pause Pause services
port Print the public port for a port binding
ps List containers
pull Pull service images
push Push service images
restart Restart services
rm Remove stopped containers
run Run a one-off command
scale Set number of containers for a service
start Start services
stop Stop services
top Display the running processes
unpause Unpause services
up Create and start containers
version Show version information and quit


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值