微信平台优化营商环境心得体会2023
Docker是一个开源的应用容器引擎,由Go语言开发,基于Linux内核技术。Docker通过将应用及其依赖打包到可移植的容器中,实现了应用的快速部署和高效管理。Docker容器具有轻量级、快速启动、可移植性强等特点,能够显著提升资源利用率和开发效率。它广泛应用于开发、测试、生产等环境,是微服务架构和DevOps文化中的关键工具。Docker还提供了丰富的社区支持和生态系统,助力企业快速构建和部署应用。
docker有两个版本,一个是无界面的docker engine,另一个是有界面的docker desktop。
查看官网:https://docs.docker.com/engine/install/centos/
查看链接可能需要科学上网
当前Linux版本:
lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: AlibabaCloud
Description: Alibaba Cloud Linux release 3 (Soaring Falcon)
Release: 3
Codename: SoaringFalcon
由于docker官方网络原因,简简单单的安装也颇费周折,最后总算是安装成功了,详细记录如下:
1、卸载老版本
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
2、配置docker仓库
sudo yum install -y yum-utils
# 配置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
注意:上面这个官方链接可能访问不了(不翻墙),或者太慢,换成阿里云的镜像即可
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
下面是命令的详细解释:
yum-config-manager
:这是yum
工具包中的一个实用程序,用于管理 yum 仓库的配置文件。它允许你添加、删除、启用或禁用仓库,而无需直接编辑仓库的配置文件。--add-repo
:这个选项告诉yum-config-manager
你要执行的操作是添加一个新的 yum 仓库。https://download.docker.com/linux/centos/docker-ce.repo
:这是 Docker CE 官方为 CentOS 系统提供的 yum 仓库的 URL。这个仓库包含了 Docker CE 的所有包和依赖项,使得安装和更新 Docker CE 变得简单。
3、安装最新版docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
官方的镜像访问不了
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker CE Stable - x86_64 0.0 B/s | 0 B 02:00
Errors during downloading metadata for repository 'docker-ce-stable':- Curl error (28): Timeout was reached for https://download.docker.com/linux/centos/8/x86_64/stable/repodata/repomd.xml [Connection timed out after 30000 milliseconds]
官方镜像访问不了,换成阿里云的就可以了
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@iZm5e33cshwe0x9z1t5yleZ ai]# sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker CE Stable - x86_64 69 kB/s | 66 kB 00:00
Dependencies resolved.
.................................
.........................Verifying : docker-ce-cli-1:26.1.3-1.el8.x86_64 10/12 Verifying : docker-ce-rootless-extras-26.1.3-1.el8.x86_64 11/12 Verifying : docker-compose-plugin-2.27.0-1.el8.x86_64 12/12 Installed:containerd.io-1.6.32-3.1.el8.x86_64 docker-buildx-plugin-0.14.0-1.el8.x86_64 docker-ce-3:26.1.3-1.el8.x86_64 docker-ce-cli-1:26.1.3-1.el8.x86_64 docker-ce-rootless-extras-26.1.3-1.el8.x86_64 docker-compose-plugin-2.27.0-1.el8.x86_64 fuse-overlayfs-1.13-1.0.1.al8.x86_64 fuse3-3.3.0-17.al8.x86_64 fuse3-libs-3.3.0-17.al8.x86_64 libcgroup-0.41-19.2.al8.x86_64 libslirp-4.4.0-2.al8.x86_64 slirp4netns-1.2.3-1.al8.x86_64 Complete!
安装过程会出现两次需要确认的步骤Is this ok [y/N]: y
输入y就可以了
4、启动docker
启动
systemctl start docker
重启
systemctl restart docker
开机启动
systemctl enable docker
查看状态:已经启动
systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset>Active: active (running) since Sat 2024-08-03 00:52:32 CST; 18min agoDocs: https://docs.docker.comMain PID: 3810220 (dockerd)Tasks: 11Memory: 37.5MCGroup: /system.slice/docker.service└─3810220 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/conta>
查看状态:没有启动
systemctl status docker
?.docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Active: inactive (dead)Docs: https://docs.docker.com
5、查看版本
docker version
docker version
Client: Docker Engine - CommunityVersion: 26.1.3API version: 1.45Go version: go1.21.10Git commit: b72abbbBuilt: Thu May 16 08:34:39 2024OS/Arch: linux/amd64Context: defaultdocker --version
Docker version 26.1.3, build b72abbb
6、运行hello world测试
出现如下日志说明测试通过
sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.
由于特殊原因,出现连接超时,如下提示。需要配置国内镜像
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Retrying in 1 second
docker: error pulling image configuration: download failed after attempts=6: dial tcp 199.16.156.11:443: i/o timeout.
See 'docker run --help'.
7、配置镜像
由于官方镜像被墙,所以需要配置其他可访问镜像
sudo vim /etc/docker/daemon.json
在daemon.json 中写入如下配置,没有就新建
{"registry-mirrors": ["https://ustc-edu-cn.mirror.aliyuncs.com/","https://ccr.ccs.tencentyun.com/","https://docker.m.daocloud.io/"]
}
保存配置后重启docker。systemctl restart docker
如果重启报错,使用命令查看错误原因:journalctl -xe | grep docker
8、使用docker安装一个应用
安装MQTT协议的broker EMQX
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest
docker run
: 这是Docker的一个基本命令,用于从镜像启动新的容器。-d
: 这个选项告诉Docker以“分离模式”(detached mode)运行容器,即容器在后台运行。--name emqx
: 这个选项允许你为容器指定一个名称,这里是emqx
。给容器命名使得后续管理(如停止、删除、查看日志等)更加方便。-p 1883:1883
: 这个选项将容器的1883端口映射到宿主机的1883端口。MQTT协议的默认端口是1883,这个映射使得外部客户端可以通过宿主机的1883端口与EMQX通信。-p 8083:8083
: 这个选项将容器的8083端口映射到宿主机的8083端口。EMQX使用8083端口提供HTTP API和Dashboard服务,允许你通过Web界面管理EMQX。-p 8084:8084
: 这个选项将容器的8084端口提供给WebSocket服务。-p 8883:8883
: MQTT over SSL/TLS的默认端口是8883。这个映射使得外部客户端可以通过SSL/TLS加密的方式与EMQX通信。-p 18083:18083
: 类似于8083端口,但18083通常用于HTTP API的加密版本(HTTPS)。emqx/emqx:latest
: 这指定了要使用的Docker镜像的名称和标签。emqx/emqx
是镜像的仓库名和所有者名,`la
还有另外一种 基于Cloudflare Workers 的 Docker 镜像代理工具的方式:https://github.com/cmliu/CF-Workers-docker.io/tree/main