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如何工作?)
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