一、 docker与docker compose安装
如果已安装 Docker Desktop,则已经安装了完整的 Docker,包括 Docker Compose。
1、安装docker
在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 版本库。之后,您可以从版本库安装和更新 Docker。
1)设置Docker 版本库。
-
允许
apt
通过 HTTPS 使用存储库更新apt
包索引并安装包:$ sudo apt-get update $ sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
-
添加 Docker 的官方 GPG 密钥:
$ sudo mkdir -p /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
-
使用以下命令设置版本库:
$ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
2)安装 Docker Engine
-
更新
apt
包索引,安装最新版本的 Docker Engine、containerd 和 Docker Compose,或者进入下一步安装特定版本:$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
运行
apt-get update
时收到 GPG 错误?您的默认 umask 可能设置不正确,导致无法检测到 repo 的公钥文件。运行以下命令,然后再次尝试更新您的存储库:
sudo chmod a+r /etc/apt/keyrings/docker.gpg
-
要安装特定版本的 Docker Engine,请在 repo 中列出可用版本,然后选择并安装:
a. 列出您的版本库中可用的版本:
$ apt-cache madison docker-ce docker-ce | 5:20.10.16~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages docker-ce | 5:20.10.15~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages docker-ce | 5:20.10.14~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages docker-ce | 5:20.10.13~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
b. 使用第二列中的版本字符串安装特定版本,例如 5:20.10.16~3-0~ubuntu-jammy 。
$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io docker-compose-plugin
-
通过运行
hello-world
镜像来验证 Docker Engine是否已正确安装。$ sudo service docker start $ sudo docker run hello-world
此命令下载测试镜像并在容器中运行它。当容器运行时,它会打印一条消息并退出。
Docker Engine已安装并正在运行。该docker
组已创建,但未向其中添加任何用户。需要使用sudo
来运行 Docker 命令。
3)添加用户组(以非root用户身份管理Docker)
Docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。默认情况下,Unix 套接字归root用户所有,其他用户只能使用sudo。 Docker 守护程序始终以root用户身份运行。
如果您不想在docker
命令前加上sudo
,请创建一个名为 Unix 组docker
并将用户添加到其中。当 Docker 守护进程启动时,它会创建一个可供docker
组成员访问的 Unix 套接字。
要创建docker
组并添加您的用户:
-
创建
docker
组。$ sudo groupadd docker
-
将您的用户添加到
docker
组中。$ sudo usermod -aG docker $USER
-
注销并重新登录,以便重新评估您的组成员身份。
如果在虚拟机上进行测试,可能需要重新启动虚拟机才能使更改生效。
在桌面Linux环境(如X Windows)上,完全注销会话,然后重新登录
在 Linux 上,您还可以运行以下命令来激活对组的更改:
$ newgrp docker
-
验证您可以在没有sudo的情况下运行docker命令。
$ docker run hello-world
此命令下载测试镜像并在容器中运行它。当容器运行时,它会打印一条消息并退出。
如果在将用户添加到Docker组之前使用sudo运行Docker CLI命令,您可能会看到以下错误,这表明您的~/.docker/目录是由于命令没有
sudo
权限导致的。
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied
要解决此问题,请删除~/.docker/目录(它会自动重新创建,但会丢失任何自定义设置),或使用以下命令更改其所有权和权限:
$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R
4)将 Docker 配置为开机启动
大多数当前的 Linux 发行版(RHEL、CentOS、Fedora、Debian、Ubuntu 16.04 和更高版本)用于systemd管理系统启动时启动的服务。在 Debian 和 Ubuntu 上,Docker 服务默认配置为在启动时启动。要在启动时为 Docker 和 Containerd自动启动其他发行版,请使用以下命令:
$ sudo systemctl enable docker.service
$ sudo systemctl enable containerd.service
要禁用此行为,请改用disable
。
$ sudo systemctl disable docker.service
$ sudo systemctl disable containerd.service
2、安装docker compose
要安装 Compose:
1)使用存储库安装
注:这些说明假设您已经安装了 Docker Engine 和 Docker CLI,现在想要安装 Compose 插件。
对于 Compose Standalone,请参阅安装 Compose Standalone。
如果已经设置了 Docker 版本库,请跳至第 2 步。
-
设置版本库。在以下位置查找特定于发行版的说明:
-
更新包索引,并安装最新版本的 Docker Compose:
-
Ubuntu, Debian:
$ sudo apt-get update $ sudo apt-get install docker-compose-plugin
-
基于 RPM 的发行版:
$ sudo yum update $ sudo yum install docker-compose-plugin
-
-
通过检查版本来验证 Docker Compose 是否已正确安装。
$ docker compose version Docker Compose version vN.N.N
其中vN.N.N是代表最新版本的占位符文本。
2)更新Compose
要更新 Compose,请运行以下命令:
-
Ubuntu, Debian:
$ sudo apt-get update $ sudo apt-get install docker-compose-plugin
-
基于 RPM 的发行版:
$ sudo yum update $ sudo yum install docker-compose-plugin
3、配置docker镜像加速器
官方在国内的镜像加速地址:https://registry.docker-cn.com
在不同的操作系统下,配置加速器的方式略有不同,下文将介绍主要操作系统的配置方法:
第一种配置方法:
建议通过daemon config进行配置。使用配置文件/etc/docker/daemon.json(没有时新建该文件),添加以下内容(可添加多个镜像源),重新加载daemon.json文件并重启Docker。
{
"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}
$sudo systemctl daemon-reload
$sudo systemctl restart docker
或
$sudo service docker restart
第二种配置方法:
打开Ubuntu的配置文件/etc/default/docker,只需要在这个配置文件中添加加速器的配置项,重启Docker即可。
方式1:打开/etc/default/docker
文件(需要sudo
权限),在文件的底部加上一行。
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
$ sudo service docker restart
或
$sudo systemctl restart docker
方式二:使用命令行
$echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=https://registry.docker-cn.com\"" | sudo tee -a /etc/default/docker
$sudo service docker restart
或
$sudo systemctl restart docker
二、go安装
# 安装包下载地址:
https://studygolang.com/dl - go语言中文网
https://go.dev/dl/ - go官网
1、环境变量(Go1.14及之后的版本不需要配置)
GOROOT
和GOPATH
都是环境变量,其中GOROOT
是我们安装go开发包的路径,而从Go 1.8版本开始,Go开发包在安装完成后会为GOPATH
设置一个默认目录,Go1.14版本之后,都推荐使用go mod
模式来管理依赖环境了,也不再强制我们把代码必须写在GOPATH
下面的src目录了,你可以在你电脑的任意位置编写go代码。所以也就不需要我们再自己配置GOPATH了,使用默认的即可。
如果想配,可以使用以下方法配
bashrc 与 profile 都用于保存用户的环境信息,bashrc用于非交互式non-loginshell,而profile用于交互式login shell。
~/.profile 可以设定本用户专有的路径,环境变量,等,它只能登入的时候执行一次
~/.bashrc 也是某用户专有设定文档,可以设定路径,命令别名,每次shell script的执行都会使用它一次
# 1. 使用wget工具下载安装包
$ wget https://dl.google.com/go/go1.19.1.linux-amd64.tar.gz
# 2. 解压tar包到/usr/local
$ sudo tar zxvf go1.19.1.linux-amd64.tar.gz -C /usr/local
# 3. 用vi打开~./bashrc,配置环境变量
$ vim ~/.bashrc
# 4. 增加下面的环境变量,保存退出
export GOROOT=/usr/local/go
export GOPATH=$HOME/go #注: go1.8版本之后,默认生成GOPATH目录,即$HOME/go(/home/用户名/go)
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
# 5. 使环境变量立即生效, 一些命令二选一
$ source ~/.bashrc //~ 代表主目录
$ . ~/.bashrc
# 6. 检测go是否安装好
$ go version
#######################################################################################
1、下载二进制包:go1.19.1.linux-amd64.tar.gz。
2、将下载的二进制包解压至 /usr/local目录。
tar -C /usr/local -xzf go1.19.1.linux-amd64.tar.gz
3、配置环境变量: Linux下有两个文件可以配置环境变量,其中/etc/profile是对所有用户生效的;
$HOME/.profile是对当前用户生效的,根据自己的情况自行选择一个文件打开,添加如下两行代码,保存退出。
export GOROOT=/usr/local/go
export GOPATH=$HOME/go #注: go1.8版本之后,默认生成GOPATH目录,即$HOME/go(/home/用户名/go)
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
如果在终端执行以上两行命令,只能暂时添加 PATH,关闭终端下次再登录就没有了。
4、添加后需要执行以下命令生效:
source ~/.profile
或
source /etc/profile
go官方安装方法
- 将下载的存档解压缩到 /usr/local,在 /usr/local/go 中创建一个 Go 树。
重要提示:此步骤将在解压之前删除 /usr/local/go 上的先前安装(如果有)。请在继续之前备份所有数据
例如,以root或通过sudo运行以下命令
:rm -rf /usr/local/go && tar -C /usr/local -xzf go1.19.3.linux-amd64.tar.gz
- 将 /usr/local/go/bin 添加到
PATH
环境变量中。可以通过将以下行添加到您的 $HOME/.profile 或 /etc/profile (用于系统范围的安装)中做到这一点:
export PATH=$PATH:/usr/local/go/bin
注意:对配置文件所做的更改可能要等到您下次登录计算机时才会生效。要立即应用更改,只需直接运行 shell 命令或使用诸如
source $HOME/.profile
.- 通过打开命令提示符并键入以下命令来验证您是否已安装 Go:
$ go version
- 确认该命令打印已安装的 Go 版本。
2、GOPROXY
默认GoPROXY配置是:GOPROXY=https://proxy.golang.org,direct
,由于国内访问不到https://proxy.golang.org
,所以我们需要换一个PROXY,这里推荐使用https://goproxy.io
或https://goproxy.cn
。
可以执行下面的命令修改GOPROXY:
//全局生效
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
或者
//当前终端生效(优先级高,即当前终端设置完代理之后,在其他终端再次设置新的代理,只要当前终端不关闭,新设置的代理对当前终端不生效)
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
三、protoc相关安装
首先确定自己当前linux版本(当前版本为x86_64)
uname -a
Linux localhost.localdomain 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 16:36:51 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
1、protoc安装
命令行安装:
注:请尽量采用包管理器方式进行安装,以确保安装的完整性。
//Linux, using apt or apt-get, for example:
apt install -y protobuf-compiler
protoc --version // Ensure compiler version is 3+
安装包安装:
如果一定要自行下载zip包安装预编译的版本或自行编译安装,请参考zip包中readme.txt
文件的说明进行操作,确保include
下的所有东西(通常是google
目录,里面是一系列.proto
后缀的文件)都已经正确放置在您的include路径下,如/usr/local/include/
目录中,以确保protoc在编译过程中能成功找到。
我们把protoc
放在/usr/local/bin
可执行程序目录中,这样全局都可以访问到,同时把include
目录的内容也复制到/usr/local/include/
中
注:解压protoc
压缩包后,可以看到 readme.txt
文件
大致意思是安装protoc,
只需将bin
目录下的二进制文件放在某个位置就行,如果打算用其中包含的其他类型,就需要将include
目录下的内容也复制到某个地方,例如输入/usr/local/include/
第一种:直接解压到/usr/local/目录下,执行一下命令;
进入protoc页面,选择适合自己操作系统的压缩包文件,解压到目录中
unzip protoc-21.6-linux-x86_64.zip -d /usr/local/
此时,/usr/local/bin/下面就会出现protoc。
第二种:
1)进入protoc 页面,选择适合自己操作系统的压缩包文件
2)解压protoc-x.x.x-x86_64.zip
并进入protoc-x.x.x-x86_64文件夹下的bin目录
cd protoc-x.x.x-x86_64/bin
3)将文件夹里的protoc
二进制文件移动到path(被添加到环境变量的任意path)下。(如$GOPATH/bin
,不建议直接将其和系统下的path放在一起。$GOPATH为你本机的实际文件夹地址)
mv protoc /usr/local/bin
注:如果不打算用其中的其他类型,则protoc的安装到此就结束了。如果打算用其中包含的其他类型,就需要将include
目录下的内容也复制到其他地方,则需要继续按照以下步骤进行安装。
4)进入protoc-x.x.x-x86_64文件夹下的include目录
cd protoc-x.x.x-x86_64/include
5)把include
目录的内容也复制到/usr/local/include/
中
mv google /usr/local/include
6)查看安装结果
protoc --version
libprotoc x.x.x
2、protoc-gen-go/protoc-gen-go-grpc 安装
第一种:执行以下命令即可
//会自动安装到默认的GOPATH的bin(安装go时自动生成的)目录下
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
第二种:安装包 (建议解压安装到$GOPATH/bin中
)
进入protoc-gen-go 以及protoc-gen-go-grpc页面,下载对应的安装包
直接解压到目录中或解压后移动到 /usr/local/bin (或$GOPATH/bin
)目录中
tar zxvf protoc-gen-go.v1.28.1.linux.amd64.tar.gz -C /usr/local/bin
3、其他
//会自动安装到默认的GOPATH的bin(安装go时自动生成的)目录下
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
go install github.com/go-kratos/kratos/cmd/protoc-gen-go-http/v2@latest
go install github.com/google/gnostic/cmd/protoc-gen-openapi@latest
四、grpc安装
// grpc (或者git clone https://github.com/grpc/grpc-go 然后复制到google.golang.org/grpc)
go get -u google.golang.org/grpc
五、Wire安装
搜索 Google wire,在GitHub中找到wire的安装命令进行安装
go install github.com/google/wire/cmd/wire@latest
问题一:
安装好wire之后,在wire.go的同级目录的终端执行wire命令即可生成wire_gen.go。若在使用wire命令的时候出现如下错误,说明有使用cgo调用c的库。
解决办法:
1、Windows系统
1)下载mingw64,并安装
2)将安装目录下的bin文件夹目录添加到Path环境变量中
3) 测试是否安装成功
打开cmd命令行,输入:
gcc -v
如果出现版本信息,则表示安装成功。
MinGW64说明:
可在mingw64(即下图所在链接)下载对应的安装包,或者在线安装(对应的选项解释如下)
x86_64 是64位,i686 是32位的意思
posix 是跨平台的意思,win32 仅限Windows
尾缀是指生成的可执行程序和dll所运行的位数,sjlj可以运行在32位也可以运行在64位,seh仅限运行在64位,drawf仅限32位
最新版最新版
或Summary 最新版
2、Linux系统
1. 安装GCC
sudo apt-get update //如果下载特别慢,可以先进行升级
//以下选择其中一个进行安装即可
sudo apt-get build-dep gcc
sudo apt-get install gcc
sudo apt-get install build-essential //包含 GCC 和其他各种编译器,如 g++ 和 make
2. 查看是否安装成功
gcc --version
注:查看该软件包的依赖关系(此步骤不影响安装,仅仅是查看依赖关系等):
apt-cache depends build-essential
问题二:
安装好gcc之后,再次执行wire,有可能会出现以下错误
执行 sudo apt-get install build-essential 可能出现以下错误(遇到类似的问题都可以用方法1去找对应的包进行解决):
解决方法1、下载安装包进行安装
1)去https://pkgs.org搜索libc6,找到libc6 (= 2.35-0ubuntu3)的deb包,并下载。
点击进去,选择如下二进制链接进行下载包
2)按照下列命令安装即可:
sudo apt install ./libc6_2.35-0ubuntu3_amd64.deb
需要查看自己系统相关的信息可以参考以下命令
//查看内核版本
cat /proc/version
uname -a
uname -r
//查看linux版本信息
lsb_release -a
cat /etc/issue
cat /etc/os-release
//查看linux是64位还是32位
getconf LONG_BIT
file /bin/ls
//直接查看系统的架构
dpkg --print-architecture
arch
file /lib/systemd/systemd
解决方法2、换源
可以通过 查看自己系统上的版本号,根据自己的系统版本换对应版本的源
lsb_release -a
部分Ubuntu系统LTS版本代号
Ubuntu 16.04 代号为:xenial
Ubuntu 17.04 代号为:zesty
Ubuntu 18.04 代号为:bionic
Ubuntu 19.04 代号为:disco
Ubuntu 20.04 代号为:focal
Ubuntu 22.04 代号为:jammy
1、通过界面换源
在“下载自(或from)”里选择“其他(other)”,选择阿里源, 最后点击“关闭”,等重新载入完成即可
2、通过编辑文件换源
换阿里源,编辑这个文件。
sudo gedit /etc/apt/sources.list
#阿里源 Ubuntu22.04
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
换源之后,执行命令进行更新
sudo apt-get update
sudo apt-get upgrade
再执行安装命令,就会安装成功,会发现执行wire时出现的问题也就解决了
sudo apt-get install build-essential