从零开始学Docker(三)
docker-compose
Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止
下载安装
下载docker-compose
访问网站: [Release v2.14.2 · docker/compose · GitHub](https://github.com/docker/compose/releases)
上传到linux
移动到/usr/local/bin目录下
添加执行权限
修改文件名为docker-compose
检查docker-compose版本
docker-compose开发流程(一般流程)
在指定文件夹下创建docker-compose.yml文件
[root@localhost nginx]# touch docker-compose.yml
编辑docker-compose.yml
version: '3'
#使用自定义的network,wn_docker_net 为自定义的docker网络。
networks:
wn_docker_net:
external: true
services:
nginx-compose:
build: .
image: nginx
container_name: ngnix2
ports:
- "8075:80"
restart: always
networks:
wn_docker_net:
#在自定义网络中指定IP
ipv4_address: 172.18.12.80
运行docker-compose.yml文件
docker-compose up -d
[root@localhost nginx]# docker-compose up -d
[+] Running 7/7
测试响应
docker-compose开发流程(idea版)
编写docker-compose.yml文件
在项目下创建docker-compose.yml文件
编辑文件docker-compose.yml文件
version: '2'
services:
test-mycompose:
build: .
#镜像名称
image: myapp:1.0
#容器名称
container_name: springboot-docker-compose
#映射端口号
ports:
- "8990:8990"
restart: always
idea配置docker-compose插件
- 点击Edit Configurations
- 选择Docker-compose 插件
- 配置docker-compose
运行docker-compose
运行docker-compose
idea中运行docker-compose错误
提示:出现以下错误,解决方案,安装windows版本Docker Desktop
安装Docker Destop
打包项目
运行docker-compose
linux服务器docker运行情况
docker-compose.yml配置详解
- services: 定义各个容器。
- networks: 定义需要使用的network。
- volumes: 定义services中的volumes。
version
版本信息,定义关乎于docker的兼容性,Compose 文件格式有3个版本,分别为1, 2.x 和 3.x
build
指定构建镜像的 dockerfile 的上下文路径,或者详细配置对象。
context
包含Dockerfile文件的目录路径,或者是git仓库的URL。 当提供的值是相对路径时,它被解释为相对于当前compose文件的位置。 该目录也是发送到Docker守护程序构建镜像的上下文。
dockerfile
备用Docker文件。Compose将使用备用文件来构建。 还必须指定构建路径。
args
添加构建镜像的参数,环境变量只能在构建过程中访问
案例
build:
context: .
args:
buildno: 1
password: secret
image
指定容器中的镜像名称。如果本地镜像不存在则从仓库中pull。
image: nginx
container_name
定义容器的名称。
container_name: my_redis
command
覆盖容器启动后默认执行的命令(Dockerfile定义的CMD),当Dockerfile定义了entrypoint的时候,docker-compose.yml定义的command会被覆盖。
command: ["bundle", "exec", "thin", "-p", "3000"]
entrypoint
可以覆盖Dockerfile中定义的entrypoint命令。
env_file
定义了在docker-compose.yml中使用的变量,封装变化,提高docker-compose.yml文件的灵活性。
environment
添加环境变量。 你可以使用数组或字典两种形式。 任何布尔值; true,false,yes,no需要用引号括起来,以确保它们不被YML解析器转换为True或False。
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms4g -Xmx4g
ports
将容器的端口映射到宿主机端口。
ports:
- "9200:9200"
- "9300:9300"
volumes
挂载一个目录或者一个已经存在的数据容器。
volumes:
- /usr/local/softwares/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /usr/local/softwares/elk/elasticsearch/data:/usr/share/elasticsearch/data
- /usr/local/software/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins
networks
加入指定网络。
networks:
wn_docker_net:
external: true
services:
es-compose:
image: elasticsearch:7.17.7
container_name: es
networks:
wn_docker_net:
ipv4_address: 172.18.12.70
docker-compose案例
version: '2'
networks:
wn_docker_net:
external: true
services:
es-compose:
image: elasticsearch:7.17.7
container_name: es
ports:
- "9200:9200"
- "9300:9300"
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms4g -Xmx4g
volumes:
- /usr/local/softwares/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /usr/local/softwares/elk/elasticsearch/data:/usr/share/elasticsearch/data
- /usr/local/software/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins
networks:
wn_docker_net:
ipv4_address: 172.18.12.70
kibana-compose:
image: kibana:7.17.7
container_name: kibana
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS = http://192.168.198.128:9200
networks:
wn_docker_net:
ipv4_address: 172.18.12.71
docker 常见问题
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
问题描述
当输入docker命令时显示,“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”
问题起因
- docker服务关闭
解决方案
重新启动docker服务
service docker start
[root@localhost ~]# docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@localhost ~]# service docker start
Redirecting to /bin/systemctl start docker.service
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c291e5b6b196 ms-nginx-a:1.0 "java -jar /ms-nginx…" 11 days ago Up 6 seconds 0.0.0.0:9990->9990/tcp, :::9990->9990/tcp ms-nginx-compose-a
ade2bb34a56f ms-nginx-b:1.0 "java -jar /ms-nginx…" 11 days ago Up 6 seconds 0.0.0.0:9991->9991/tcp, :::9991->9991/tcp ms-nginx-compose-b
18fc6780b342 myapp:1.0 "java -jar /myapp.jar" 3 weeks ago Up 6 seconds 0.0.0.0:8990->8990/tcp, :::8990->8990/tcp springboot-docker-compose
bash: vim: command not found
如果出现"command not found"是因为docker容器中默认没有安装相应的命令。使用
apt-get update文章来源:https://www.toymoban.com/news/detail-779685.html
apt-get install 命令文章来源地址https://www.toymoban.com/news/detail-779685.html
到了这里,关于从零开始学Docker(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!