👇前言
国内常见的云平台有: 阿里云、腾讯云、华为云等等...
我这边是用的华为云的Flexus应用服务器L实例应用宝塔Ubuntu zz.04.2 LTS
Linux宝塔查看服务器是centos还是Ubuntu还是debian,用这个cat /etc/*release*
命令行。
我的是宝塔的ubuntu系统,所以来到docker的manual的开发文档的engine下面,找到ubuntu的安装教程,
💯安装Docker ------ 部署
添加Docker官方的GPG秘钥
第一步:sudo apt-get update
设置Docker 的 apt 存储库。也就是在首次安装Docker引擎之前,需要设置一下Docker的存储库。之后呢,就可以从存储库安装和更新Docker了。
js
sudo apt-get update
这个是ubuntu系统的用来(1)连接ubuntu软件源,(2)、检查可用的软件包更新、(3)获取相关信息。
📝Ubuntu DNS 配置报错以及解决记录 - Temporary failure resolving -> 报错原因排查
报错❌❌❌:出现这个错误Temporary failure resolving 'repo.huaweicloud.com'
. 报错如下:
问题解决: 意思就是说出现了临时的解析错误。
一般发生这种错误,就是表明系统无法将域名转换为IP地址。当我们用
repo.huaweicloud.com
,DNS服务器就会去找相应的IP地址。然后报这个错就是代表DNS查询失败,导致无法解析域名。
所以说如果要解决这个问题就是解决DNS的问题,要么是网络不行了什么网站都查不出,要么就是DNS配置不正确。有两种原因,该网址有问题。解决方案:第一,换网址换镜像,或者直接到官网下载到本地,再导入云服务器上;第二,需要配置正确的DNS。
一一排查:
(1)、ping google
js
ping www.google.com
如果ping不通,就说明访问不了一些国外的东西,即使你本机上有🪜,云服务器端那边我们本地也没有办法共享过去;
(2)、再来 ping baidu
js
ping www.baidu.com
如果都ping不通,就说明DNS配置有问题。
修改resolv.conf
Linux系统的DNS解析配置文件,命令行如下:
js
vim /etc/resolv.conf
js
nameserver 8.8.8.8
或者
nameserver 144.144.144.144
// 修改`nameserver`为`8.8.8.8`或者是`114.114.114.114`, 或者两者都可以写上去,按顺序去找这些公共的DNS的。
📚DNS配置原理说明
其中,
8.8.8.8
是谷歌公共的DNS的ip地址之一;144.144.144.144
是中国电信的公共DNS的ip地址之一。另外, Cloudflare的是1.1.1.1
, OpenDNS的是208.67.222.222
。nameserver 8.8.8.8
代表进行域名解析时可以使用google公共的DNS服务器的ip地址去进行域名解析。
当然,可以同时配多个,按书序去连接这些DNS服务器,直到找到可用的服务器或者解析成功为止。然后重新去ping一下我们想要下载的资源网址域名,或者ping谷歌和百度,就是可以访问正常了。
第二步:sudo apt-get install ca-certificates curl
安装ca-certificates
和curl
软件包
第三步:sudo install -m 0755 -d /etc/apt/keyrings
创建一个名为/etc/apt/keyrings
目录,并给这个目录读写和操作的权限。
这边我们统一使用一下国内的docker源------国内阿里云镜像,切换的命令行配置如下:
js
sudo add-apt-repository "deb http://mirrors.aliyun.com/docker-ce/linux/ubuntu/docker-ce.repo $(lsb_release -cs) stable"
第四步:下载Docker在Ubuntu的安全密钥文件并保存
js
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
将Docker软件源添加到Apt源列表
js
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable"
echo
: 用于在终端输出指定的文本或者字符串;deb
:用于定义Debian或者Ubuntu系统软件源;arch=$(dpkg --print-architecture)
:$()
这种写法就是
bash
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
💯Ubuntu安装docker成功
输入docker version
查看docker是否安装成功,并且查看版本version等信息。
💯玩转docker ------ 实战
既然我们在云服务器端安装完成docker了,我们可以在这上面做一些好玩有趣的事,比如:
- 在云服务器上部署自己的vue或者react项目、自己的博客网站
- 部署自己的ci/cd 一套自动化构建和自动化部署流程
- 等等...
我们先来看看docker hub这个网站, docker hub 就是一个用来存和共享docker镜像的这么一个平台,像前端的npm网站,像php的packagist网站等等,我们可以类比学习,这样想就可以拉近学习的距离,不会觉得这个东西远在天边而很快放弃。
镜像操作
比如我们拉一下nginx的景象,使用命令docker pull nginx
:
如果其中拉镜像发生报错,❌ 错误如下:docker error pulling image configuration: download failed after attempts=6: dial tcp xxx:xxx: i/o timeout,那就说明可能是网络有问题,可能是魔法网络国内外等等的问题导致下载超时的问题,那么我们可以设置:
解决 ✅: (1)、使用命令sudo mkdir -p /etc/docker
,去创建/etc/docker/
目录; (2)、使用命令sudo vim /etc/docker/daemon.json
, 创建并配置docker镜像配置文件, 文件内容如下:
拉完nginx镜像
js
docker pull nginx
查看镜像列表
js
docker images
检索 docker search
比如: docker search nginx
下载 docker pull
比如: docker search nginx
, 如果后面没加版本,它会默认帮我们拉最新的镜像,安装指定版本就是docker pull nginx:1.23
通过冒号:这种加版本。由于我之前拉过了,所以它表示我已经是成功拉群了最新的nginx镜像了。
当然可以同时安装不同版本的同一镜像。
列表 docker images
docker images
: 查看所有安装的镜像
删除 docker rmi
比如: docker rmi xxx
, xxx代表镜像id, 这个镜像id通过docker images
获得。或者通过docker rmi nginx:latest
或者 docker rmi nginx:1.26.0
。
容器操作
运行 docker run
docker run -d -name mynginx nginx
指定端口跑镜像
打开ip地址便可以看到:
查看 docker ps
停止 docker stop
- 停止正在运行的容器,
docker stop mynginx
- 强制停止,
docker stop --force mynginx
启动 docker start/restart
- 有个容器已经停止了,可以用start去启动,
docker start mynginx
- 有个容器已经开跑了,想要对它进行重启,
docker restart mynginx
删除 docker rm
进入 docker exec
在容器中执行命令,docker exec it mynginx /bin/bash
js
// 在mynginx的容器中启动一个交互的bash shell
docker exec -it mynginx /bin/bash
// 进入Nginx的默认html文件目录
cd /usr/share/nginx/html/
// 编辑index.html文件
vi index.html
// 输出Hello,Docker
echo "<h1>Hello, Docker.</h1>" > index.html
状态 docker stats / 日志 docker logs
- 查看容器的实时资源使用情况,如CPU、内存、磁盘等,
docker stats mynginx
- 查看容器的实时日志,
docker logs mynginx
推送 docker push
推送我们自己本地的镜像到docker hub
,就像发布npm包一样。在别的机器,或者别人可以拉下来使用。
js
// 登录
docker login
// 标记要推送的镜像
docker tag mynginx:v1.0 your_remote_repostitory/mynginx:v1.0
// 推送镜像到docker hub官方仓库
docker push your_remote_repostitory/mynginx:v1.0
☎️ 希望对大家有所帮助,如有错误,望不吝赐教,欢迎评论区留言互相学习。感谢阅读,祝您开发有乐趣。