华为云云原生实践之Docker容器基础【与云原生的故事】

举报
孙小北 发表于 2022/04/28 23:35:13 2022/04/28
【摘要】 最近在学习云原生,基于华为云动手实践云原生之Docker容器。安装Docker服务、运行Docker容器、构建Docker容器、搭建私有仓库等

Docker介绍

Docker官方提供的构建方案有两种:1. 基于容器创建 ,2 基于Dockerfile创建。

购买华为云服务器

  • 进入华为云控制台
  • “服务列表”->“计算”->“弹性云服务器ECS”
  • 购买服务器

image-20220401173138186.png

SSH 连接到服务器

  • 复制IP地址 SSH 连接

image-20220401173329643.png

  • 打开Terminal,登录SSH
ssh root@124.71.230.29
# yes 输入密码

安装Docker容器服务

  • 命令行安装Docker
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
setenforce 0

# 配置Docker 配置镜像源
yum install -y yum-utils
yum-config-manager --add-repo https://sandbox-experiment-resource-north-4.obs.cn-north-4.myhuaweicloud.com/study-container/docker-ce.repo

image-20220401173902701.png
image-20220401174227956.png

  • 安装安装Docker容器服务,并开启相应服务
# 安装Docker
yum install -y docker-ce docker-ce-cli containerd.io

# 启动Docker
systemctl start docker

# 开机自启
systemctl enable docker

image-20220401174318803.png

  • 配置镜像加速
  • “服务列表”->“容器”->“容器镜像服务 SWR”,选择“镜像资源 > 镜像中心”,单击“+镜像加速器”,在弹出的对话框中获取镜像加速器地址。

image-20220401174548945.png
image-20220401174617023.png
查看地址:https://062724d4910026bc0f1ec013ca04b880.mirror.swr.myhuaweicloud.com

  • 在虚拟机中修改“/etc/docker/daemon.json”文件(如果没有,可以手动创建)
vi /etc/docker/daemon.json

# 修改为
{
	"registry-mirrors": ["https://062724d4910026bc0f1ec013ca04b880.mirror.swr.myhuaweicloud.com"]
}

按“Esc”,输入:wq保存并退出,重启docker。
:wq

image-20220401174759984.png

  • 重启Docker
systemctl restart docker

systemctl status docker

image-20220401174901959.png

运行第一个容器

#http容器
docker run -d -p 80:80 httpd
#运行结束后,显示未找到“httpd”镜像,下载镜像并创建“826cdd……”镜像。

#查看容器
docker container ls

#查看镜像
docker image ls

image-20220401175257341.png

  • 浏览器访问
    image-20220401175038844.png
  • 停止容器、打开容器、删除容器(先停止在删除)
#docker stop 容器ID
docker stop 6d2907e82b35

#docker start 容器ID
docker start 6d2907e82b35


删除容器前必须停止容器,键入如下命令,停止并删除httpd容器:
#docker stop 容器ID
#docker rm 容器ID
docker stop 6d2907e82b35
docker rm 6d2907e82b35

Docker commit构建容器镜像

#拉取centos7镜像:
docker pull centos:centos7

# 运行镜像
docker run -t -d centos:centos7

# 查看容器ID
docker container ls
- dcebe5bea959

image-20220401175706046.png

  • 进入该容器并验证vim可用性:
# docker exec -it 容器ID bash
docker exec -it dcebe5bea959 bash

vim

yum install -y vim

image-20220401175848681.png

若出现Failed to download metadata for repo ‘AppStream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist报错。请在容器内输入以下命令更换yum源,再重新安装vim。

cd /etc/yum.repos.d/

sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

yum update -y

yum install -y vim

vim --version

# 退出容器,将当前容器构建为新镜像。
exit

image-20220401175931861.png

  • Commit 容器到库里
#docker commit 容器ID centos-vim
docker commit dcebe5bea959 centos-vim

docker image ls

image-20220401180443479.png

  • 删除前一个容器,并利用centos-vim镜像运行一个新容器:
docker container ls

docker stop dcebe5bea959
docker rm dcebe5bea959

docker run -d -t centos-vim

docker container ls

image-20220401180502959.png

  • 验证vim可用性
docker exec -it daead925ce83 bash

vim --help

exit

image-20220401180643376.png

  • 删除上述容器
docker container ls
docker stop daead925ce83
docker rm daead925ce83

Dockerfile构建容器

  • Dockerfile构建容器镜像
    ①创建Dockerfile文件在/root路径下创建一个Dockerfile文件
# 创建文件
touch dockerfile
# 打开
vim dockerfile
输入i,将以下代码写入Dockerfile文件中,键入wq保存退出:

FROM centos:centos7
MAINTAINER Iris@huawei.com
ENV HOSTNAME webserver
EXPOSE 80
RUN yum install -y httpd vi && yum clean all
VOLUME ["/var/www/html"]
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]

image-20220401182745472.png

  • 使用docker build命令构建容器镜像
docker build -t httpd-centos -f dockerfile /root
  • 查看
docker image ls

docker run -d -p 80:80 httpd-centos

image-20220401182932157.png

  • 验证该容器Web服务页面

  • 在个人操作终端浏览器内输入http://EIP:80
    image-20220401182957062.png

  • 删除前面的容器

docker container ls
docker stop 06191bd28764
docker rm 06191bd28764

搭建私有仓库

  • 搭建私有镜像仓库Registry
  • 运行私有镜像仓库registry容器
docker run -d -p 5000:5000 registry
  • 私有镜像仓库服务监听端口为5000,此处利用-p 5000:5000

  • 将容器5000端口映射到主机5000端口。

  • 利用docker tag命令修改镜像名称:

docker tag httpd-centos localhost:5000/http:V1
  • 将本地镜像上传至私有镜像仓库:
docker push localhost:5000/http:V1

image-20220401183251617.png

  • 查看私有镜像仓库registry中镜像信息。列出所有的本地registry仓库的镜像:
curl -X GET http://localhost:5000/v2/_catalog
curl -X GET http://localhost:5000/v2/http/tags/list

image-20220401183350576.png

  • 删除本地容器镜像,并从私有镜像仓库下载:注意:删除镜像前需要先删除对应容器,否则会删除失败。
docker rmi localhost:5000/http:V1

docker rmi httpd-centos

docker pull localhost:5000/http:V1

【与云原生的故事】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/345260

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。