当前位置:   article > 正文

Linux安装docker-compose【超详细】,2024年最新受益匪浅_linux 安装docker-compose

linux 安装docker-compose

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

-SL: 这是 curl 命令的选项,具有以下含义:

-S: 该选项告诉 curl 在出现错误时不显示进度条,但仍然显示错误信息。
-L: 该选项告诉 curl 自动跟随重定向链接。这对于下载重定向的文件非常有用。
https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64: 这是要下载的文件的URL。它指向了一个名为 docker-compose-linux-x86_64 的文件,版本为 v2.20.3,位于 GitHub 上 Docker Compose 的发布页面上。

-o: 这是 curl 命令的选项,用于指定下载后保存的本地文件名。在这里,它告诉 curl 将下载的文件保存为当前工作目录下的文件,文件名为 docker-compose-linux-x86_64(与远程文件名相同)。


2.1、对二进制文件应用可执行权限:



  • 1
  • 2
  • 3
  • 4
  • 5

chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose


#### 3、测试安装



  • 1
  • 2
  • 3
  • 4
  • 5

docker compose version
#出现Docker Compose version v2.20.3 成功


附加:


### docker-compose卸载



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

rm $DOCKER_CONFIG/cli-plugins/docker-compose


### docker-compose实战


1、这个是之前docker创建mysq镜像并启动的命令(只做对比)



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

docker run
-i
-t
-d
-p 3306:3306
-m=“1024M”
–privileged=true
-v /data/software/mysql/conf/:/etc/mysql/conf.d
-v /data/software/mysql/data:/var/lib/mysql
-v /data/software/mysql/log/:/var/log/mysql/
-e MYSQL_ROOT_PASSWORD=root
–name=mysql mysql:5.7.19


* `docker run`: 这是Docker命令,用于运行一个新的容器。
* `-itd`: 这是一些标志的组合,含义如下:
	+ `-i`: 保持标准输入打开,以便能够与容器进行交互。
	+ `-t`: 为容器分配一个伪终端(pseudo-tty)。
	+ `-d`: 让容器在后台运行(以分离模式)。
* `-p 3306:3306`: 将主机(宿主机)的端口3306映射到容器的端口3306,这允许你通过主机的3306端口访问在容器内运行的MySQL服务。
* `-m="1024M"`: 指定容器使用的内存限制为1GB。这会限制容器可以使用的最大内存量。
* `--privileged=true`: 赋予容器特权,允许它在主机操作系统上执行一些高级操作。这在某些情况下可能是必要的,但是要注意潜在的安全风险。
* `-v /data/software/mysql/conf/:/etc/mysql/conf.d`: 将主机上的`/data/software/mysql/conf/`目录挂载到容器内的`/etc/mysql/conf.d`目录。这允许你通过编辑主机上的配置文件来配置MySQL容器。
* `-v /data/software/mysql/data:/var/lib/mysql`: 将主机上的`/data/software/mysql/data`目录挂载到容器内的`/var/lib/mysql`目录。这是MySQL容器用于存储数据的位置。
* `-v /data/software/mysql/log/:/var/log/mysql/`: 将主机上的`/data/software/mysql/log/`目录挂载到容器内的`/var/log/mysql/`目录,用于存储MySQL日志。
* `-e MYSQL_ROOT_PASSWORD=winner@001`: 设置MySQL的root用户的密码为"root"。这将在容器启动时作为环境变量传递给MySQL容器。
* `--name=mysql`: 给容器取了一个名字叫做"mysql",这样你可以使用这个名称来管理容器,而不需要使用容器的ID。
* `mysql:5.7.19`: 这是要在容器中运行的MySQL Docker镜像的名称和版本。


2、编写docker-compose-mysql.yml


vim docker-compose-mysql.yml



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

#这一行指定了 Docker Compose 文件的版本。在这种情况下,使用的是版本 3。
version: “3”
#这一部分定义了一个名为 “mysql” 的服务,使用 MySQL 5.7.19 版本的 Docker 镜像。它将创建一个 MySQL 容器。
services:
mysql:
image: mysql:5.7.19
#表示当容器停止时,它会自动重新启动,确保 MySQL 服务持续可用。
restart: always
#为容器指定一个名称,即 “mysql”。
container_name: mysql
#将主机的 3306 端口映射到容器的 3306 端口,这使得你可以通过主机的 3306 端口访问 MySQL 服务。
ports:
- 3306:3306
#将主机上的三个目录分别挂载到容器内的相应目录中,实现了配置、数据和日志的持久化存储。这对于避免数据丢失以及配置和日志的可维护性都非常重要。
volumes:
- /data/software/mysql/conf/:/etc/mysql/conf.d
- /data/software/mysql/data:/var/lib/mysql
- /data/software/mysql/log/:/var/log/mysql
#设置 MySQL 容器的环境变量。这些变量会在容器启动时传递给 MySQL 服务:
environment:
#设置 MySQL 的 root 用户密码为 “root”。 默认用户名为root
MYSQL_ROOT_PASSWORD: root
#创建一个名为 “test” 的数据库。
MYSQL_DATABASE: test
#创建一个名为 “bing” 的用户。
MYSQL_USER: bing
#设置用户 “bing” 的密码为 “123456”。
MYSQL_PASSWORD: 123456


3、使用docker-compose启动



  • 1
  • 2
  • 3
  • 4
  • 5

#-d 后台启动
docker compose -f docker-compose-mysql.yml up -d


启动成功  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ef5584bd2e6a4c5bba643e36a655ed40.png)


放开3306端口



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

#设置单个端口开放
sudo firewall-cmd --add-port=3306/tcp --permanent
#重新加载防火墙
sudo firewall-cmd --reload


连接成功


![在这里插入图片描述](https://img-blog.csdnimg.cn/05341617212a4638ac92cf26659e573f.png)


关闭mysql



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

#吐槽一下 网上的都加了- 不懂为啥
docker compose -f docker-compose-mysql.yml down


成功


![在这里插入图片描述](https://img-blog.csdnimg.cn/bcd299f086494c48b61a019adee2df8a.png)


使用docker ps -a 查看到mysql镜像也被移除了


compose命令选项



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

-f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定
-d, 在后台启动运行
-p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名
–x-networking 使用 Docker 的可拔插网络后端特性
–x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge
–verbose 输出更多调试信息
-v, --version 打印版本并退出


* Docker Compose 的 YAML 文件包含 4 个一级 key:version、services、networks、volumes
* version 是必须指定的,而且总是位于文件的第一行。它定义了 Compose 文件格式(主要是 API)的版本。注意,version 并非定义 Docker Compose 或 Docker 引擎的版本号
* services 用于定义不同的应用服务。上边的例子定义了两个服务:一个名为 lagou-mysql数据库服 务以及一个名为lagou-eureka的微服。Docker Compose 会将每个服务部署在各自的容器中
* networks 用于指引 Docker 创建新的网络。默认情况下,Docker Compose 会创建 bridge 网络。 这是一种单主机网络,只能够实现同一主机上容器的连接。当然,也可以使用 driver 属性来指定不 同的网络类型
* volumes 用于指引 Docker 来创建新的卷


compose常用命令



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

#启动
docker-compose up -d

#关闭
docker-compose down

#查看进程
docker-compose ps

#查看日志
docker-compose logs

#重新构建服务
docker-compose build

#开始服务
docker-compose start

#停止服务
docker-compose stop

#重启服务
docker-compose restart


### 官方提供的一个小demo


https://docs.docker.com/compose/gettingstarted/  
 编写dockerFile



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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:


* 从 Python 3.7 映像开始构建映像。
* 将工作目录设置为`/code`.
* 设置命令使用的环境变量`flask`。
* 安装gcc和其他依赖项
* 复制`requirements.txt`并安装 Python 依赖项。
* 向镜像添加元数据以描述容器正在侦听端口 5000
* `.`将项目中的当前目录复制到`.`镜像中的workdir。
* 将容器的默认命令设置为`flask run`。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

services:
web:
build: .
ports:
- “8000:5000”
redis:
image: “redis:alpine”


此 Compose 文件定义了两个服务:`web`和`redis` 。


该服务使用从当前目录中`web`构建的图像。`Dockerfile`然后,它将容器和主机绑定到公开的端口`8000`。此示例服务使用 Flask Web 服务器的默认端口`5000`。


在浏览器中输入 http://localhost:8000/ 以查看应用程序正在运行。


如果显示连接被拒绝,可以看下8000端口有没有被放开。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

#查看镜像
docker inspect


编辑compose.yaml项目目录中的文件以添加 服务的绑定挂载web



  • 1
  • 2
  • 3
  • 4
  • 5

services:
web:
build: .
ports:
- “8000:5000”
volumes:
- .:/code
environment:
FLASK_DEBUG: “true”
redis:
image: “redis:alpine”


新volumes密钥将主机上的项目目录(当前目录)挂载到/code容器内部,允许您动态修改代码,而无需重建映像。关键environment设置 FLASK\_DEBUG环境变量,它告诉flask run在开发模式下运行并在更改时重新加载代码。该模式仅应在开发中使用。


从项目目录中,键入`docker compose up`使用更新的 Compose 文件构建应用程序,然后运行它。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

docker compose up

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。**

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
[外链图片转存中…(img-M9Tybxz2-1713152994423)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/1009958
推荐阅读
相关标签
  

闽ICP备14008679号