华为云云原生实践之Docker容器基础【与云原生的故事】
【摘要】 最近在学习云原生,基于华为云动手实践云原生之Docker容器。安装Docker服务、运行Docker容器、构建Docker容器、搭建私有仓库等
Docker介绍
Docker官方提供的构建方案有两种:1. 基于容器创建 ,2 基于Dockerfile创建。
购买华为云服务器
- 进入华为云控制台
- “服务列表”->“计算”->“弹性云服务器ECS”
- 购买服务器
SSH 连接到服务器
- 复制IP地址 SSH 连接
- 打开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
- 安装安装Docker容器服务,并开启相应服务
# 安装Docker
yum install -y docker-ce docker-ce-cli containerd.io
# 启动Docker
systemctl start docker
# 开机自启
systemctl enable docker
- 配置镜像加速
- “服务列表”->“容器”->“容器镜像服务 SWR”,选择“镜像资源 > 镜像中心”,单击“+镜像加速器”,在弹出的对话框中获取镜像加速器地址。
查看地址: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
- 重启Docker
systemctl restart docker
systemctl status docker
运行第一个容器
#http容器
docker run -d -p 80:80 httpd
#运行结束后,显示未找到“httpd”镜像,下载镜像并创建“826cdd……”镜像。
#查看容器
docker container ls
#查看镜像
docker image ls
- 浏览器访问
- 停止容器、打开容器、删除容器(先停止在删除)
#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
- 进入该容器并验证vim可用性:
# docker exec -it 容器ID bash
docker exec -it dcebe5bea959 bash
vim
yum install -y vim
若出现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
- Commit 容器到库里
#docker commit 容器ID centos-vim
docker commit dcebe5bea959 centos-vim
docker image ls
- 删除前一个容器,并利用centos-vim镜像运行一个新容器:
docker container ls
docker stop dcebe5bea959
docker rm dcebe5bea959
docker run -d -t centos-vim
docker container ls
- 验证vim可用性
docker exec -it daead925ce83 bash
vim --help
exit
- 删除上述容器
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"]
- 使用docker build命令构建容器镜像
docker build -t httpd-centos -f dockerfile /root
- 查看
docker image ls
docker run -d -p 80:80 httpd-centos
-
验证该容器Web服务页面
-
在个人操作终端浏览器内输入http://EIP:80
-
删除前面的容器
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
- 查看私有镜像仓库registry中镜像信息。列出所有的本地registry仓库的镜像:
curl -X GET http://localhost:5000/v2/_catalog
curl -X GET http://localhost:5000/v2/http/tags/list
- 删除本地容器镜像,并从私有镜像仓库下载:注意:删除镜像前需要先删除对应容器,否则会删除失败。
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)