赞
踩
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6fexhWqn-1618300306216)(http://file.huistone.com/md/1567585172(1)].jpg)
最大的一个好处就是资源共享
8.Docker安装常用服务
docker pull mysql:tag (tag不加默认最新版本)
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:tag --没有暴露外部端口外部不能连接
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:tag --没有暴露外部端口
docker exec -it 容器名称|容器id bash
docker logs 容器名称|容器id
docker run --name mysql -v /root/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql:tag
docker run --name mysql -v /root/mysql/data:/var/lib/mysql -v /root/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:tag
docker exec mysql|容器id sh -c ‘exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"’ > /root/all-databases.sql --导出全部数据
docker exec mysql sh -c ‘exec mysqldump --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"’ > /root/all-databases.sql --导出指定库数据
docker exec mysql sh -c ‘exec mysqldump --no-data --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"’ > /root/all-databases.sql --导出指定库数据不要数据
docker exec -i mysql sh -c ‘exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"’ < /root/xxx.sql
docker search redis
docker pull redis
docker run --name redis -d redis:tag (没有暴露外部端口)
docker run --name redis -p 6379:6379 -d redis:tag (暴露外部宿主机端口为6379进行连接)
docker logs -t -f 容器id|容器名称
docker exec -it 容器id|名称 bash
默认情况下redis官方镜像中没有redis.conf配置文件 需要去官网下载指定版本的配置文件
wget http://download.redis.io/releases/redis-5.0.8.tar.gz 下载官方安装包
将官方安装包中配置文件进行复制到宿主机指定目录中如 /root/redis/redis.conf文件
修改需要自定义的配置
bind 0.0.0.0 开启远程权限
appenonly yes 开启aof持久化
docker run --name redis -v /root/redis:/usr/local/etc/redis -p 6379:6379 -d redis redis-server /usr/local/etc/redis/redis.conf
docker run --name redis -v /root/redis/data:/data -v /root/redis/redis.conf:/usr/local/etc/redis/redis.conf -p 6379:6379 -d redis redis-server /usr/local/etc/redis/redis.conf
docker search nginx
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
afb6ec6fdc1c: Pull complete
b90c53a0b692: Pull complete
11fa52a0fdc0: Pull complete
Digest: sha256:30dfa439718a17baafefadf16c5e7c9d0a1cde97b4fd84f63b69e13513be7097
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
docker run -p 80:80 --name nginx01 -d nginx
docker exec -it nginx01 /bin/bash
查找目录: whereis nginx
配置文件: /etc/nginx/nginx.conf
docker cp nginx01(容器id|容器名称):/etc/nginx/nginx.conf 宿主机名录
docker run --name nginx02 -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/html:/usr/share/nginx/html -p 80:80 -d nginx
docker search tomcat
docker pull tomcat
docker run -p 8080:8080 -d --name mytomcat tomcat
docker exec -it mytomcat /bin/bash
docker run -p 8080:8080 -v /root/webapps:/usr/local/tomcat/webapps -d --name mytomcat tomcat
docker run -d -p 27017:27017 --name mymongo mongo —无须权限
docker logs -f mymongo --查看mongo运行日志
docker exec -it mymongo /bin/bash
直接执行mongo命令进行操作
docker run --name mymongo -p 27017:27017 -d mongo --auth
mongo
use admin 选择admin库
db.createUser({user:“root”,pwd:“root”,roles:[{role:‘root’,db:‘admin’}]}) //创建用户,此用户创建成功,则后续操作都需要用户认证
exit
docker run -d -p 27017:27017 -v /root/mongo/data:/data/db --name mymongo mongo
注意:
调高JVM线程数限制数量docker pull elasticsearch:6.4.2
docker images
docker run -p 9200:9200 -p 9300:9300 elasticsearch:6.4.2
启动出现如下错误
vim /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p
注:这一步是为了防止启动容器时,报出如下错误:
bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
docker cp 容器id:/usr/share/share/elasticsearch/data /root/es
docker run -d --name es -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS=“-Xms128m -Xmx128m” -v /root/es/plugins:/usr/share/elasticsearch/plugins -v /root/es/data:/usr/share/elasticsearch/data elasticsearch:6.4.2
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.2/elasticsearch-analysis-ik-6.4.2.zip
yum install -y unzip
unzip -d ik elasticsearch-analysis-ik-6.4.2.zip
cd plugins/elasticsearch/config
vim IKAnalyzer.cfg.xml
IK Analyzer 扩展配置
ext_dict.dic
ext_stopwords.dic
vim ext_dict.dic 加入扩展词即可
vim ext_stopwords.dic 加入停用词即可
docker restart 容器id
docker commit -a=“xiaochen” -m=“es with IKAnalyzer” 容器id xiaochen/elasticsearch:6.4.2
docker pull kibana:6.4.2
docker run -d --name kibana -e ELASTICSEARCH_URL=http://10.15.0.3:9200 -p 5601:5601 kibana:6.4.2
[root@localhost ~]# docker search mysql 或者 docker pull 这些命令无法使用
Error response from daemon: Get https://index.docker.io/v1/search?q=mysql&n=25: x509: certificate has expired or is not yet valid
sudo yum -y install ntp ntpdate
sudo ntpdate cn.pool.ntp.org
date
Dockerfile可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的脚本。主要作用是用来构建docker镜像的构建文件。
官方说明:https://docs.docker.com/engine/reference/builder/
| 保留字 | 作用 |
| — | — |
| FROM | 当前镜像是基于哪个镜像的 第一个指令必须是FROM
|
| MAINTAINER | 镜像维护者的姓名和邮箱地址 |
| RUN | 构建镜像时需要运行的指令 |
| EXPOSE | 当前容器对外暴露出的端口号 |
| WORKDIR | 指定在创建容器后,终端默认登录进来的工作目录,一个落脚点 |
| ENV | 用来在构建镜像过程中设置环境变量 |
| ADD | 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包 |
| COPY | **类似于ADD,拷贝文件和目录到镜像中
将从构建上下文目录中<原路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置** |
| VOLUME | 容器数据卷,用于数据保存和持久化工作 |
| CMD | **指定一个容器启动时要运行的命令
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换** |
| ENTRYPOINT | **指定一个容器启动时要运行的命令
ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及其参数** |
基于那个镜像进行构建新的镜像,在构建时会自动从docker hub拉取base镜像 必须作为Dockerfile的第一个指令出现
语法:
FROM
FROM [:] 使用版本不写为latest
FROM [@] 使用摘要
镜像维护者的姓名和邮箱地址[废弃]
语法:
MAINTAINER
RUN指令将在当前映像之上的新层中执行任何命令并提交结果。生成的提交映像将用于Dockerfile中的下一步
语法:
RUN (shell form, the command is run in a shell, which by default is /bin/sh -c on Linux or cmd /S /C on Windows)
RUN echo hello
RUN [“executable”, “param1”, “param2”] (exec form)
RUN [“/bin/bash”, “-c”, “echo hello”]
用来指定构建的镜像在运行为容器时对外暴露的端口
语法:
EXPOSE 80/tcp 如果没有显示指定则默认暴露都是tcp
EXPOSE 80/udp
用来为启动的容器指定执行的命令,在Dockerfile中只能有一条CMD指令。如果列出多个命令,则只有最后一个命令才会生效。
注意: Dockerfile中只能有一条CMD指令。如果列出多个命令,则只有最后一个命令才会生效。
语法:
CMD [“executable”,“param1”,“param2”] (exec form, this is the preferred form)
CMD [“param1”,“param2”] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (shell form)
用来为Dockerfile中的任何RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。如果WORKDIR不存在,即使它没有在任何后续Dockerfile指令中使用,它也将被创建。
语法:
WORKDIR /path/to/workdir
WORKDIR /a
WORKDIR b
WORKDIR c
注意:WORKDIR指令可以在Dockerfile中多次使用。如果提供了相对路径,则该路径将与先前WORKDIR指令的路径相对
用来为构建镜像设置环境变量。这个值将出现在构建阶段中所有后续指令的环境中。
语法:
ENV
ENV = …
用来从context上下文复制新文件、目录或远程文件url,并将它们添加到位于指定路径的映像文件系统中。
语法:
ADD hom* /mydir/ 通配符添加多个文件
ADD hom?.txt /mydir/ 通配符添加
ADD test.txt relativeDir/ 可以指定相对路径
ADD test.txt /absoluteDir/ 也可以指定绝对路径
ADD url
用来将context目录中指定文件复制到镜像的指定目录中
语法:
COPY src dest
COPY [“”,… “”]
用来定义容器运行时可以挂在到宿主机的目录
语法:
VOLUME [“/data”]
用来指定容器启动时执行命令和CMD类似
语法:
[“executable”, “param1”, “param2”]
ENTRYPOINT command param1 param2
ENTRYPOINT指令,往往用于设置容器启动后的第一个命令,这对一个容器来说往往是固定的。
CMD指令,往往用于设置容器启动的第一个命令的默认参数,这对一个容器来说可以是变化的。
FROM openjdk:8
WORKDIR /ems
ADD ems.jar /ems
EXPOSE 8989
ENTRYPOINT [“java”,“-jar”]
CMD [“ems.jar”]
[root@localhost ems]# docker build -t ems .
[root@localhost ems]# docker run -p 8989:8989 ems
http://10.15.0.8:8989/ems/login.html
当 Docker 启动时,会自动在主机上创建一个 docker0
虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。
同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0
接口。比如典型的 172.17.42.1
,掩码为 255.255.0.0
。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16
)的地址。
当创建一个 Docker 容器的时候,同时会创建了一对 veth pair
接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 eth0
;另一端在本地并被挂载到 docker0
网桥,名称以 veth
开头(例如 vethAQI2QT
)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。
NETWORK ID NAME DRIVER SCOPE
8e424e5936b7 bridge bridge local
17d974db02da docker_gwbridge bridge local
d6c326e433f7 host host local
[root@centos ~]# docker network create -d bridge info
6e4aaebff79b1df43a064e0e8fdab08f52d64ce34db78dd5184ce7aaaf550a2f
[root@centos ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
8e424e5936b7 bridge bridge local
17d974db02da docker_gwbridge bridge local
d6c326e433f7 host host local
6e4aaebff79b info bridge local
docker run -d -p 8890:80 --name nginx001 --network info nginx
docker run -d -p 8891:80 --name nginx002 --network info nginx
注意:一旦指定网桥后--name指定名字就是主机名,多个容器指定在同一个网桥时,可以在任意一个容器中使用主机名与容器进行互通
[root@centos ~]# docker run -d -p 8890:80 --name nginx001 --network info nginx
c315bcc94e9ddaa36eb6c6f16ca51592b1ac8bf1ecfe9d8f01d892f3f10825fe
[root@centos ~]# docker run -d -p 8891:80 --name nginx002 --network info nginx
f8682db35dd7fb4395f90edb38df7cad71bbfaba71b6a4c6e2a3a525cb73c2a5
[root@centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f8682db35dd7 nginx “/docker-entrypoint.…” 3 seconds ago Up 2 seconds 0.0.0.0:8891->80/tcp nginx002
c315bcc94e9d nginx “/docker-entrypoint.…” 7 minutes ago Up 7 minutes 0.0.0.0:8890->80/tcp nginx001
b63169d43792 mysql:5.7.19 “docker-entrypoint.s…” 7 minutes ago Up 7 minutes 3306/tcp mysql_mysql.1.s75qe5kkpwwttyf0wrjvd2cda
[root@centos ~]# docker exec -it f8682db35dd7 /bin/bash
root@f8682db35dd7:/# curl http://nginx001
…
数据卷
是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
数据卷
可以在容器之间共享和重用
对 数据卷
的修改会立马生效
对 数据卷
的更新,不会影响镜像
数据卷
默认会一直存在,即使容器被删除
注意:
数据卷
的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会复制到数据卷中(仅数据卷为空时会复制)。
[root@centos ~]# docker volume create my-vol
my-vol
[root@centos ~]# docker volume inspect my-vol
[
{
“CreatedAt”: “2020-11-25T11:43:56+08:00”,
“Driver”: “local”,
“Labels”: {},
“Mountpoint”: “/var/lib/docker/volumes/my-vol/_data”,
“Name”: “my-vol”,
“Options”: {},
“Scope”: “local”
}
]
[root@centos ~]# docker run -d -P --name web -v my-vol:/usr/share/nginx/html nginx
[root@centos ~]# docker inspect web
“Mounts”: [
{
“Type”: “volume”,
“Name”: “my-vol”,
“Source”: “/var/lib/docker/volumes/my-vol/_data”,
“Destination”: “/usr/share/nginx/html”,
“Driver”: “local”,
“Mode”: “z”,
“RW”: true,
“Propagation”: “”
}
],
docker volume rm my-vol
Compose
项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack
中的 Heat
十分类似。
其代码目前在 https://github.com/docker/compose 上开源。
Compose
定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,其前身是开源项目 Fig。
通过第一部分中的介绍,我们知道使用一个 Dockerfile
模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose
恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml
模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Compose
中有两个重要的概念:
服务 (service
):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目 (project
):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml
文件中定义。
Compose
的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose
项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose
来进行编排管理。
$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-uname -s
-uname -m
> /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
Docker Desktop for Mac/Windows 自带 docker-compose 二进制文件,安装 Docker 之后可以直接使用
。$ curl -L https://raw.githubusercontent.com/docker/compose/1.25.5/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
$ sudo rm /usr/local/bin/docker-compose
$ docker-compose --version
docker-compose version 1.25.5, build 4667896b
首先介绍几个术语。
服务 (service
):一个应用容器,实际上可以运行多个相同镜像的实例。
项目 (project
):由一组关联的应用容器组成的一个完整业务单元。∂一个项目可以由多个服务(容器)关联而成,Compose
面向项目进行管理。
最常见的项目是 web 网站,该项目应该包含 web 应用和缓存。
springboot应用
mysql服务
redis服务
elasticsearch服务
…
version: “3.0”
services:
mysqldb:
image: mysql:5.7.19
container_name: mysql
ports:
volumes:
/root/mysql/conf:/etc/mysql/conf.d
/root/mysql/logs:/logs
/root/mysql/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
networks:
depends_on:
redis:
image: redis:4.0.14
container_name: redis
ports:
networks:
volumes:
command: redis-server
networks:
ems:
[root@centos ~]# docker-compose up //前台启动一组服务
[root@centos ~]# docker-compose up -d //后台启动一组服务
模板文件是使用 Compose
的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 docker run
相关参数的含义都是类似的。
默认的模板文件名称为 docker-compose.yml
,格式为 YAML 格式。
version: “3”
services:
webapp:
image: examples/web
ports:
volumes:
注意每个服务都必须通过 image
指令指定镜像或 build
指令(需要 Dockerfile)等来自动构建生成镜像。
如果使用 build
指令,在 Dockerfile
中设置的选项(例如:CMD
, EXPOSE
, VOLUME
, ENV
等) 将会自动被获取,无需在 docker-compose.yml
中重复设置。
下面分别介绍各个指令的用法。
build
指定 Dockerfile
所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 Compose
将会利用它自动构建这个镜像,然后使用这个镜像。
version: ‘3’
services:
webapp:
build: ./dir
你也可以使用 context
指令指定 Dockerfile
所在文件夹的路径。
使用 dockerfile
指令指定 Dockerfile
文件名。
使用 arg
指令指定构建镜像时的变量。
version: ‘3’
services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
buildno: 1
command
覆盖容器启动后默认执行的命令。
command: echo “hello world”
container_name
指定容器名称。默认将会使用 项目名称_服务名称_序号
这样的格式。
container_name: docker-web-container
注意: 指定容器名称后,该服务将无法进行扩展(scale),因为 Docker 不允许多个容器具有相同的名称。
depends_on
解决容器的依赖、启动先后的问题。以下例子中会先启动 redis
db
再启动 web
version: ‘3’
services:
web:
build: .
depends_on:
db
redis
redis:
image: redis
db:
image: postgres
注意:
web
服务不会等待redis
db
「完全启动」之后才启动。
env_file
从文件中获取环境变量,可以为单独的文件路径或列表。
如果通过 docker-compose -f FILE
方式来指定 Compose 模板文件,则 env_file
中变量的路径会基于模板文件路径。
如果有变量名称与 environment
指令冲突,则按照惯例,以后者为准。
env_file: .env
env_file:
./common.env
./apps/web.env
/opt/secrets.env
环境变量文件中每一行必须符合格式,支持 #
开头的注释行。
PROG_ENV=development
environment
设置环境变量。你可以使用数组或字典两种格式。
只给定名称的变量会自动获取运行 Compose 主机上对应变量的值,可以用来防止泄露不必要的数据。
environment:
RACK_ENV: development
SESSION_SECRET:
environment:
RACK_ENV=development
SESSION_SECRET
如果变量名称或者值中用到 true|false,yes|no
等表达 布尔 含义的词汇,最好放到引号里,避免 YAML 自动解析某些内容为对应的布尔语义。这些特定词汇,包括
y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF
healthcheck
通过命令检查容器是否健康运行。
healthcheck:
test: [“CMD”, “curl”, “-f”, “http://localhost”]
interval: 1m30s
timeout: 10s
retries: 3
image
指定为镜像名称或镜像 ID。如果镜像在本地不存在,Compose
将会尝试拉取这个镜像。
image: ubuntu
image: orchardup/postgresql
image: a4bc65fd
networks
配置容器连接的网络。
version: “3”
services:
some-service:
networks:
some-network
other-network
networks:
some-network:
other-network:
ports
暴露端口信息。
使用宿主端口:容器端口 (HOST:CONTAINER)
格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。
ports:
“3000”
“8000:8000”
“49100:22”
“127.0.0.1:8001:8001”
注意:当使用 HOST:CONTAINER
格式来映射端口时,如果你使用的容器端口小于 60 并且没放到引号里,可能会得到错误结果,因为 YAML
会自动解析 xx:yy
这种数字格式为 60 进制。为避免出现这种问题,建议数字串都采用引号包括起来的字符串格式。
sysctls
配置容器内核参数。
sysctls:
net.core.somaxconn: 1024
net.ipv4.tcp_syncookies: 0
sysctls:
net.core.somaxconn=1024
net.ipv4.tcp_syncookies=0
ulimits
指定容器的 ulimits 限制值。
例如,指定最大进程数为 65535,指定文件句柄数为 20000(软限制,应用可以随时修改,不能超过硬限制) 和 40000(系统硬限制,只能 root 用户提高)。
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
volumes
数据卷所挂载路径设置。可以设置为宿主机路径(HOST:CONTAINER
)或者数据卷名称(VOLUME:CONTAINER
),并且可以设置访问模式 (HOST:CONTAINER:ro
)。
该指令中路径支持相对路径。
volumes:
/var/lib/mysql
cache/:/tmp/cache
~/configs:/etc/configs/:ro
如果路径为数据卷名称,必须在文件中配置数据卷。
version: “3”
services:
my_src:
image: mysql:8.0
volumes:
volumes:
mysql_data:
对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。
执行 docker-compose [COMMAND] --help
或者 docker-compose help [COMMAND]
可以查看具体某个命令的使用格式。
docker-compose
命令的基本的使用格式是
docker-compose [-f=…] [options] [COMMAND] [ARGS…]
-f, --file FILE
指定使用的 Compose 模板文件,默认为 docker-compose.yml
,可以多次指定。
-p, --project-name NAME
指定项目名称,默认将使用所在目录名称作为项目名。
--x-networking
使用 Docker 的可拔插网络后端特性
--x-network-driver DRIVER
指定网络后端的驱动,默认为 bridge
--verbose
输出更多调试信息。
-v, --version
打印版本并退出。
up
格式为 docker-compose up [options] [SERVICE...]
。
该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。
链接的服务都将会被自动启动,除非已经处于运行状态。
可以说,大部分时候都可以直接通过该命令来启动一个项目。
默认情况,docker-compose up
启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。
当通过 Ctrl-C
停止命令时,所有容器将会停止。
如果使用 docker-compose up -d
,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。
默认情况,如果服务容器已经存在,docker-compose up
将会尝试停止容器,然后重新创建(保持使用 volumes-from
挂载的卷),以保证新启动的服务匹配 docker-compose.yml
文件的最新内容
down
up
命令所启动的容器,并移除网络exec
ps
格式为 docker-compose ps [options] [SERVICE...]
。
列出项目中目前的所有容器。
选项:
-q
只打印容器的 ID 信息。restart
格式为 docker-compose restart [options] [SERVICE...]
。
重启项目中的服务。
选项:
-t, --timeout TIMEOUT
指定重启前停止容器的超时(默认为 10 秒)。rm
格式为 docker-compose rm [options] [SERVICE...]
。
删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop
命令来停止容器。
选项:
-f, --force
强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。
-v
删除容器所挂载的数据卷。
start
格式为 docker-compose start [SERVICE...]
。
启动已经存在的服务容器。
stop
格式为 docker-compose stop [options] [SERVICE...]
。
停止已经处于运行状态的容器,但不删除它。通过 docker-compose start
可以再次启动这些容器。
选项:
-t, --timeout TIMEOUT
停止容器时候的超时(默认为 10 秒)。深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
我将这三次阿里面试的题目全部分专题整理出来,并附带上详细的答案解析,生成了一份PDF文档
还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
-compose up -d`,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。
docker-compose up
将会尝试停止容器,然后重新创建(保持使用 volumes-from
挂载的卷),以保证新启动的服务匹配 docker-compose.yml
文件的最新内容down
up
命令所启动的容器,并移除网络exec
ps
格式为 docker-compose ps [options] [SERVICE...]
。
列出项目中目前的所有容器。
选项:
-q
只打印容器的 ID 信息。restart
格式为 docker-compose restart [options] [SERVICE...]
。
重启项目中的服务。
选项:
-t, --timeout TIMEOUT
指定重启前停止容器的超时(默认为 10 秒)。rm
格式为 docker-compose rm [options] [SERVICE...]
。
删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop
命令来停止容器。
选项:
-f, --force
强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。
-v
删除容器所挂载的数据卷。
start
格式为 docker-compose start [SERVICE...]
。
启动已经存在的服务容器。
stop
格式为 docker-compose stop [options] [SERVICE...]
。
停止已经处于运行状态的容器,但不删除它。通过 docker-compose start
可以再次启动这些容器。
选项:
-t, --timeout TIMEOUT
停止容器时候的超时(默认为 10 秒)。深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-X1qLuS2t-1713079309970)]
[外链图片转存中…(img-1LFLR6sG-1713079309971)]
[外链图片转存中…(img-EakKc470-1713079309971)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
我将这三次阿里面试的题目全部分专题整理出来,并附带上详细的答案解析,生成了一份PDF文档
[外链图片转存中…(img-BWxD7wX5-1713079309971)]
[外链图片转存中…(img-q8yRk1K8-1713079309972)]
[外链图片转存中…(img-2bAQxLku-1713079309972)]
[外链图片转存中…(img-tHel0F0F-1713079309972)]
还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。