Docker系列-超级详细教你Linux安装并使用docker compose,如何使用docker-compose安装sqlserver

news/2024/12/21 23:46:24/文章来源:https://www.cnblogs.com/sugartang/p/18445334

docker compose是什么?

Docker Compose 和docker功能一样,为了运行容器服务,但是docker compose比docker更好的一点是:允许你在一个 YAML 文件中定义多个容器及其配置,并通过一条命令启动和管理这些容器。

为什么要使用docker compose?

通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务,然后一个命令来创建并启动所有服务。非常方便使用,类似devops K8S里的yaml文件用法.

安装独立的 docker compose

  • 可以同时参考官方文档:
  • docker compose 有不同版本, standalone和其他版本语法略有不同。
  • 请注意,Compose standalone使用-compose语法,而不是当前的标准语法Compose。 例如,使用Compose standalone时键入docker-compose up,而不是docker compose up。

执行命令,下载docker-compose的可执行环境:

curl -SL https://github.com/docker/compose/releases/download/v2.29.6/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

配置环境

目录调整
  • 将下载好的文件转移到/usr/local/bin目录,同时修改一下它的名字
  • 假如下载好的文件名为docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

配置权限

  • 给/usr/local/bin/docker-compose路径的文件可执行权限
chmod +x docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

使用docker-compose测试安装是否成功

测试方案一:

正常情况下执行下面命令即可知道当前安装版本,如果你安装的是其他版本,可以去掉中间-试一下~

docker-compose --version

测试方案二:

使用Compose standalone时键入docker-compose up,而不是docker compose up,如果你已经安装了其他版本的docker compose, 你可以执行 docker compose进行测试

docker-compose
测试示例
USER_01@xiaojinServer:~$ docker composeUsage:  docker compose [OPTIONS] COMMANDDefine and run multi-container applications with DockerOptions:--all-resources              Include all resources, even those not used by services--ansi string                Control when to print ANSI control characters ("never"|"always"|"auto") (default "auto")--compatibility              Run compose in backward compatibility mode--dry-run                    Execute command in dry run mode--env-file stringArray       Specify an alternate environment file-f, --file stringArray           Compose configuration files--parallel int               Control max parallelism, -1 for unlimited (default -1)--profile stringArray        Specify a profile to enable--progress string            Set type of progress output (auto, tty, plain, json, quiet) (default "auto")--project-directory string   Specify an alternate working directory(default: the path of the, first specified, Compose file)-p, --project-name string        Project nameCommands:attach      Attach local standard input, output, and error streams to a service's running containerbuild       Build or rebuild servicesconfig      Parse, resolve and render compose file in canonical formatcp          Copy files/folders between a service container and the local filesystemcreate      Creates containers for a servicedown        Stop and remove containers, networksevents      Receive real time events from containersexec        Execute a command in a running containerimages      List images used by the created containerskill        Force stop service containerslogs        View output from containersls          List running compose projectspause       Pause servicesport        Print the public port for a port bindingps          List containerspull        Pull service imagespush        Push service imagesrestart     Restart service containersrm          Removes stopped service containersrun         Run a one-off command on a servicescale       Scale servicesstart       Start servicesstats       Display a live stream of container(s) resource usage statisticsstop        Stop servicestop         Display the running processesunpause     Unpause servicesup          Create and start containersversion     Show the Docker Compose version informationwait        Block until the first service container stopswatch       Watch build context for service and rebuild/refresh containers when files are updatedRun 'docker compose COMMAND --help' for more information on a command.

安装失败解决方案

如果docker-compose安装失败,检查下你的路径权限。可以尝试执行下面命令:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

命令解析

  • 这条命令的作用是在 /usr/bin 目录下创建一个指向 /usr/local/bin/docker-compose 的符号链接。
  • 假设 /usr/local/bin/docker-compose 已经存在,并且是一个可执行文件。执行上述命令后,你可以直接在终端输入 docker-compose 而不需要指定完整路径。
  • 执行 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 后,会在 /usr/bin 目录下创建一个名为 docker-compose 的文件,这个文件实际上是一个指向 /usr/local/bin/docker-compose 的符号链接。
    这样做可以让 docker-compose 命令在系统路径中变得可访问,从而方便使用。
逐条具体分析:
  • sudo: 以超级用户权限执行命令。
  • ln: 创建链接的命令。
  • -s: 表示创建符号链接(symbolic link)。
  • /usr/local/bin/docker-compose: 源文件的路径。
  • /usr/bin/docker-compose: 符号链接的目标路径。
作用:
  • 简化路径: 使得用户可以在任何目录下直接运行 docker-compose 命令,而不需要指定完整的路径。
  • 全局可访问: 将 docker-compose 命令添加到全局路径中,使得所有用户都可以使用这个命令。

使用docker-compose安装sqlserver

搜索镜像

docker search mssql-server

拉取镜像

找到适合你的版本,拉取镜像,下面这个是我从官方文档里直接找到的镜像哇~

docker pull mcr.microsoft.com/mssql/server:2022-latest

运行容器,创建数据库

  • 密码应符合 SQL Server 默认密码策略,否则容器无法设置 SQL Server,会停止工作。 默认情况下,密码必须为至少八个字符且包含以下四种字符中的三种:大写字母、小写字母、十进制数字、符号。 可使用 docker logs 命令检查错误日志。
  • 假设你的密码为xiaojinlalala.123
创建服务文件

创建一个docker-compose.yml文件并定义SQL Server服务


version: '3.3'
services:sqlserver:image: mcr.microsoft.com/mssql/server:2022-latestcontainer_name: mssql-serverrestart: alwaysenvironment:- ACCEPT_EULA=Y- SA_PASSWORD=tangdoudou.123- MSSQL_SA_PASSWORD=tangdoudou.123ports:- 5433:1433volumes:- ./sqlserver:/var/opt/mssql
安装执行
sudo docker compose up
安装成功

执行结果:

USER_01@xiaojinServer:/docker-compose$ sudo docker compose up -d
WARN[0000] /docker-compose/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 1/1✔ Container mssql-server  Started                                                                                                                                                                        0.4s
USER_01@xiaojinServer:/docker-compose$

查看容器列表

docker ps -a

状态解释

  • 如果 STATUS 列显示 Up 状态,则 SQL Server 正在容器中运行,并且在侦听 PORTS 列中指定的端口。
  • 如果 SQL Server 容器的 STATUS 列显示 Exited,请参阅 SQL Server Docker 容器故障排除。
  • 一旦 SQL Server 错误日志显示消息(SQL Server is now ready for client connections. This is an informational message; no user action is required。 )就可连接此服务器。

查看容器内的 SQL Server 错误日志:

docker exec -t sqlserver01 cat /var/opt/mssql/log/errorlog | grep connection

连接数据库

方案一:使用可视化工具连接

下载DBever,连接数据库

方案一实际案例:

连接案例:

方案二:在容器内部使用 SQL Server 命令行工具 sqlcmd 实用程序 来连接 SQL Server

一般情况下,我们会使用可视化工具去连接数据库,如果你需要命令行方式连接的话,可以参考这个文档:在容器内部使用 SQL Server 命令行工具 sqlcmd 实用程序 来连接 SQL Server

方案二实际案例:

进入容器:
docker exec -it sqlserver01 "bash"

登录数据库,如果遇到certificate verify failed:self-signed certificate报错请参考下面的报错解决01。

/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "tangdoudou.123"

查询已经存在的数据库、查询数据库版本

SELECT name AS DatabaseName FROM sys.databases;
go

查询示例:

mssql@9f9XXXXXX:/$ /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "xiaojin的密码"
Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate].
Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish connection. For solutions related to encryption errors, see https://go.microsoft.com/fwlink/?linkid=2226722.
mssql@9f9XXXXXX:/$ /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "xiaojin的密码" -No
1> SELECT name AS DatabaseName FROM sys.databases;
2> go
DatabaseName
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb(4 rows affected)
1> SELECT name AS DatabaseName FROM sys.databases;
2> fo
3> go
Msg 102, Level 15, State 1, Server d046613904c3, Line 2
Incorrect syntax near 'fo'.
1> select @@version
2> go------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Microsoft SQL Server 2022 (RTM-CU15) (KB5041321) - 16.0.4145.4 (X64)Sep 19 2024 08:25:04Copyright (C) 2022 Microsoft CorporationDeveloper Edition (64-bit) on Linux (Ubuntu 22.04.5 LTS) <X64>(1 rows affected)
1>

报错解决01:

快速解决报错: SQL Server : SSL Provider: certificate verify failed:self-signed certificate

Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish connection. For solutions related to encryption errors, see https://go.microsoft.com/fwlink/?linkid=2226722.

解决方案:

  • 方案一:下载安装一个证书点击参考这里
  • 方案二:disable encryption with -No option[点击参考这里]((https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/connecting-with-sqlcmd)

使用-No:

-N[s|m|o]的解释说明:
Set the connection encryption mode to be Strict, Mandatory, or Optional respectively. Defaults to mandatory if not specified. ([s|m|o] added in sqlcmd 18.0)

/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "tangdoudou.123" -No

实际案例:
mssql@9f9XXXXXX:/$ /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "xiaojin的密码"
Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate].
Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish connection. For solutions related to encryption errors, see https://go.microsoft.com/fwlink/?linkid=2226722.
mssql@9f9XXXXXX:/$ /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "xiaojin的密码" -No
1> SELECT name AS DatabaseName FROM sys.databases;
2> go
DatabaseName
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb(4 rows affected)
1> SELECT name AS DatabaseName FROM sys.databases;
2> fo
3> go
Msg 102, Level 15, State 1, Server d046613904c3, Line 2
Incorrect syntax near 'fo'.
1> select @@version
2> go------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Microsoft SQL Server 2022 (RTM-CU15) (KB5041321) - 16.0.4145.4 (X64)Sep 19 2024 08:25:04Copyright (C) 2022 Microsoft CorporationDeveloper Edition (64-bit) on Linux (Ubuntu 22.04.5 LTS) <X64>(1 rows affected)
1>

结语

  • 今天就写到这里啦~
  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/808176.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手非常详细图文并茂教你 Docker 部署 SQL Server

前提条件linux服务器 服务器装好了Docker 引擎 1.8 及更高版本 至少 2 GB 的磁盘空间 至少 2 GB 的 RAM搜索镜像 docker search mssql-server拉取镜像 找到适合你的版本,拉取镜像,下面这个是我从官方文档里直接找到的镜像哇~ docker pull mcr.microsoft.com/mssql/server:202…

git报错集

报错集 1.打标签报错 前戏:在开发了基础的项目功能后,在推送到远端仓库后,打算给提交的版本打标签,报错了 $ git push origin --tags fatal: unable to access https://github.com/ICP-team/仓库名.git/: Failed to connect to github.com port 443 after 21072 ms: Could…

财务知识-20个常用的会计分录

财务知识——20个常用的会计分录

工具推荐:搜索和删除Windows上重复文件的神器:AllDup

​ AllDup是一款免费的重复文件查找工具,它能够帮助用户快速识别和管理计算机上的重复文件。这些文件可能包括文本、图片、音乐、视频等多种类型。AllDup使用快速查询算法,可以有效地搜索和定位重复项,从而帮助用户释放硬盘空间,组织文件结构,并提高系统性能。 下载地址:h…

工具推荐:完全免费的电脑 Epub 阅读器软件 Jane Reader

​ Jane Reader是一款现代化的电子书阅读器,支持EPUB格式,旨在提供类似于纸质书籍的阅读体验。它具有简洁、清爽的界面,支持自动多栏、多主题、直排模式等功能,并提供了一系列个性化设置,如自定义边距、行高、字体大小等。Jane Reader还内置了常用字体,如宋体、黑体、仿宋…

工具推荐:开源免费的文件备份恢复工具:Kopia

​ Kopia是一个开源的备份和恢复工具,适用于Windows、macOS和Linux操作系统。它提供了命令行界面(CLI)和图形用户界面(GUI),支持增量备份、客户端端到端加密、数据压缩和重复数据删除等功能。Kopia的设计注重安全性和效率,支持多种存储后端,如本地磁盘、网络文件系统或…

工具推荐:最佳快捷键启动、控制软件:HotkeyP

​HotkeyP是一款功能强大的热键管理软件,它允许用户自定义键盘快捷键来执行各种操作,如打开文件、运行程序、控制系统命令等。软件提供了高度的个性化定制,用户可以根据自己的工作流程和习惯来设置快捷键,从而提高工作效率。此外,HotkeyP还支持宏命令,用户可以通过宏来自…

博客网站搭建

关于我的博客网站搭建过程自定义博客网站搭建教程 搭建效果 浏览网址:https://www.cnblogs.com/Love-XiaoMeng前期准备博客园:你需要在此注册一个账号,同时你需要在博客园右上角开通我的博客然后你需要在博客后台管理网站中完成好相应设置如图,同时你需要注意一定要开启JS权…

FM的正交解调法

1.FM的模拟调制过程 ​ FM信号是一种频率调制信号,其携带的信息保存在其信号的频率中,通过改变载波的频率来实现基带数据的传输。 其函数表达式如下: \[s(t) = A*cos(w_c*t + K_f*\int m(\tau) d\tau) \]其中: A:表示载波幅度。 \(m(\tau)\):表示基带信号。 \(w_c\):表示载…

工具推荐:支持工作流的高颜值 Windows 搜索启动器:Fluent Search

Fluent Search是一款专为Windows 10和Windows 11设计的高效搜索工具,它能够快速查找运行中的应用程序、浏览器标签、书签、文件等,帮助用户无缝切换工作流程。该软件采用了微软提倡的Fluent Design,具有半透明磨砂质感、圆角图形设计、简洁明快的图标和配色,提供了类似于Wi…

工具推荐:免费好用的WebP格式转换工具:AnyWebP

AnyWebP是一个多功能的WebP格式转换工具,它既提供在线服务也有适用于Windows和macOS的离线客户端。该工具能够将WebP图片转换为JPEG、PNG、ICO等常见格式,同时也支持将这些格式的图片转换为WebP格式。AnyWebP特别适合需要在不同平台和设备之间传输图片的用户,尤其是那些需要…