『亚马逊云科技产品测评』活动征文|基于aws ec2快速搭建docker环境

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道

前言

我们之前开发中有时会遇到这样的问题:在本地开发好功能后,部署到服务器,或者其他人拉到本地接着开发时,会出现功能无法使用的情况。

而且我们平常搭建环境也需要耗费很长时间。对于团队协作时来说,每有新人进来,都需要浪费这些可以避免的时间。而且搭建环境时,也常常会产生的各种问题,导致项目代码运行异常。

如果使用了 Docker 的话,只需最开始的人写好开发容器,其他人只需要 pull 下来,即可完成项目环境的搭建,能有效避免无意义的时间浪费。

所以今天就说下怎么在服务器上部署下docker,并简单运行

准备云服务器
登录

点击我的账户->aws管理控制台。可以跳转到登录页面
在这里插入图片描述
如果是新用户可以先注册。新用户可以免费1年使用服务器
在这里插入图片描述

控制台
  • 进入控制台后,点击服务->计算->EC2
    在这里插入图片描述
  • 创建实例
    选择完要创建实例的地区,点击启动新实例
    在这里插入图片描述
    这里选择默认系统就可以了,如果你想要其他系统,可以选择你想要的系统。
    在这里插入图片描述
    配置登录秘钥,这个文件要保存好,后续登录需要用到
    在这里插入图片描述
    可以修改下配置储存的大小,因为给到免费用户的有30G,而默认的只有8G
    在这里插入图片描述
    配置后基础信息之后,点击右边的启动实例就可以了,注意不要超过免费套餐的范围。
    可以看到列表已经有服务器信息了
    在这里插入图片描述
  • 连接到实例
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
docker
安装
方式一:使用系统包管理器

特别说明: 因为我选择的是亚马逊 Linux 2023,所以使用以下命令来安装

sudo yum install -y docker

如果是亚马逊 Linux 2,运行以下命令:

 sudo amazon-linux-extras install docker

在这里插入图片描述
安装完成后,查看docker版本

docker -v # 查看docker版本

在这里插入图片描述

启动并加入开机启动

sudo systemctl start docker   #启动
sudo systemctl enable docker  #开机自启

在这里插入图片描述

查看下docker状态
在这里插入图片描述

方式二:使用二进制文件安装

下载二进制文件
可以从https://download.docker.com/linux/static/stable/ ,选择你想要下载的二进制文件

#下载二进制安装包
 wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.7.tgz
#解压压缩包
 tar -zxvf docker-20.10.7.tgz
 #将解压docker目录下的所有文件拷贝到/usr/bin下
 cp docker/* /usr/bin/

在这里插入图片描述

以systemd的方式管理docker

增加docker组

groupadd  docker

安装两个单元文件(service 和 socket)到 /usr/lib/systemd/system/ 中

cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
Requires=docker.socket 
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500
[Install]
WantedBy=multi-user.target
EOF
cat > /usr/lib/systemd/system/docker.socket << EOF
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF

我使用systemctl start docker 启动失败

提示:Job for docker.service failed because the control process exited with error code.
See “systemctl status docker.service” and “journalctl -xeu docker.service” for details.

使用 dockerd & 启动时,提示“failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Iptables not found”

在这里插入图片描述
在这里插入图片描述
说明Iptables 没有安装,安装Iptables

yum install iptables -y

在这里插入图片描述
重新执行systemctl start docker,启动成功
在这里插入图片描述
现在docker已经安装完成,并且运行起来了

我们通过运行 hello-world 镜像来验证Docker是否正确安装。

可以看到运行成功,这样我们就成功使用二进制文件安装了docker

在这里插入图片描述

简单使用

使用docker部署一个redis服务

  • 拉取redis镜像
sudo docker pull redis:7.0.12

这里我们拉取了一个7.0.12版本的redis镜像
在这里插入图片描述

  • 启动redis容器
sudo docker run --restart=always -p 6379:6379 --name myredis -d redis:7.0.12  --requirepass redispwd

在这里插入图片描述
– restart always 在容器退出时总是自动重启它
– name myredis 为容器指定一个名称,这里是"myredis"
– requirepass redispwd 设置了Redis服务器的密码
-p 6379:6379: 将主机上的6379端口映射到容器的6379端口上,使得外部可以通过主机的6379端口访问Redis容器
-d 以后台模式运行容器,在后台运行而不阻塞终端

  • 进入redis容器
sudo docker exec -it myredis /bin/bash

使用redis-cli与redis数据库交互
效果:
在这里插入图片描述

总结

可以看到我们使用docker来部署一个服务是非常简单的,只需要拉取镜像运行容器就可以了。而且我们只要指定好镜像的版本就不用担心环境不一致的问题

猜你喜欢

转载自blog.csdn.net/2301_79448738/article/details/134244435