hw11————玩转 Docker 容器技术

@TOC

Docker核心概念

• 引擎与容器基本操作 – Docker命令
– 镜像、容器与文件卷的使用与管理
– 容器构建与应用容器化 – 以MySQL为例
• 容器进阶
– 存储、网络、仓库、监控与日志、管理工具 – 基于容器的CI/CD流程
• Go语言应用容器化
• Docker Engine API与开发

docker安装

参考

安装

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"

但是缺少服务端,且同样地拉取镜像也会有同样问题

在这里插入图片描述

所以需要添加 docker 用户组,用以下的命令即可:

          #添加docker用户组
sudo gpasswd -a $XXX docker   #检测当前用户是否已经在docker用户组中,其中XXX为用户名,例如我的,liangll
sudo gpasswd -a $USER docker  #将当前用户添加至docker用户组
newgrp docker                 #更新docker用户组

然后检查

sudo docker version

在这里插入图片描述

拉取 hello-world 镜像

在这里插入图片描述

运行镜像

sudo docker run -it ubuntu bash

在这里插入图片描述

Docker基本操作

显示本地镜像库内容

sudo docker images

在这里插入图片描述

获得帮助

在这里插入图片描述

显示运行中容器

在这里插入图片描述

显示所有容器

在这里插入图片描述

MySQL与容器化

拉取mysql镜像

docker pull mysql

在这里插入图片描述

构建docker镜像练习

# 创建并进入文件夹mydock
$ mkdir mydock && cd mydock
# 创建dockfile并输入以下内容
$ vi dockerfile
FROM ubuntu
ENTRYPOINT ["top","-b"]
CMD ["-c"]
# 构建镜像
$ docker build . -t hello
# 运行镜像
$ docker run -it --rm hello -H

在这里插入图片描述

使用MySQL容器

启动服务器
$ docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql
$ docker ps

在这里插入图片描述

启动客户端
$  docker run -it --net host mysql "sh"

在这里插入图片描述

创建卷并挂载
$ docker rm $(docker ps -a -q) -f -v
$ docker volume create mydb
$ docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=root -v mydb:/var/lib/mysql -d mysql

在这里插入图片描述

Docker存储

镜像与分层存储
– 最底层是建立在 Kernel 基础上的引导层 bootfs
• 支持高效堆叠的驱动
– Overlay2(通用)
– Aufs(遗留)
– Devicemapper
– Btrfs
– 基础(base)层
• Scratch (无 bin/lib)
• Busybox (基本shell,约3M)
• Alpine (带包管理,约5M)
• CoreOS(号称容器专用OS)
• Debian/Ubuntu (追求最新)
• CentOS/Fedora(追求稳定)
– 应用只读层
– 可读写的容器层
官方文档:About storage drivers, https://docs.docker.com/storage/storagedriver/
Docker存储
• 容器与分层存储
– 每个容器拥有自己的读写层
– 共享依赖层(只读)
– copy-on-write 策略
• 容器中应用数据
– 容器创建的文件在可写层
– 使用 mount
• Volumes,docker 管理文件
• Bind mounts,任意文件
• Tmpfs,内存卷

Docker网络

管理

sudo docker network ls

在这里插入图片描述
备制支持 ifconfig 和 ping 命令的 ubuntu 容器

docker run --name unet -it --rm ubuntu bash

在这里插入图片描述
启动另一个命令窗口,由容器制作镜像

docker commit unet ubuntu:net

在这里插入图片描述
创建自定义网络

docker network create mynet

在两个窗口创建 u1,u2 容器网络,并使用以下命令

~]# docker run --name u1 -it -p 8080:80 --net mynet --rm ubuntu:net bash
~]# docker run --name u2 --net mynet -it --rm ubuntu:net bash
~]# docker inspect u1
~]# docker network connect bridge u1
~]# docker network disconnect mynet u1

Docker 仓库

容器仓库在 cncf 技术栈中属于供给层
– 公共容器仓库服务
• Docker hub https://hub.docker.com/
• Amazon ECR
• … …
• 几乎所有容器云服务商都免费提供此服务!
– 私有容器仓库工具
• Docker Registry 2
• Vmware Harbor
• Sonatype Nexus 3
• 搭建私有容器仓库
– 请阅读官方指南
• https://docker.github.io/registry/deploying/
• 仅需要实验到 Stop a local registry
– Docker Registry 开源代码:https://github.com/docker/distribution
Docker 仓库(Registry)
• 阿里云容器镜像服务(免费)实践
– 访问 https://cr.console.aliyun.com
– 用淘宝或注册一个账号
– 选择“容器镜像服务”
– 常用仓库操作:如上传 hello-world 镜像
• 登陆 docker login --username= registry.cn-shenzhen.aliyuncs.com
• 标签 docker tag hello-world registry.cn-shenzhen.aliyuncs.com/pmlpml/repo:helloworld
• 上传 docker push registry.cn-shenzhen.aliyuncs.com/pmlpml/repo:hello-world
• 下载 docker push registry.cn-shenzhen.aliyuncs.com/pmlpml/repo:hello-world
• 标签 docker tag registry.cn-shenzhen.aliyuncs.com/pmlpml/repo:hello-world helloworld
• 删除 docker rmi registry.cn-shenzhen.aliyuncs.com/pmlpml/repo:hello-world
• 运行 docker run --rm hello-world
• 退出 docker logout registry.cn-shenzhen.aliyuncs.com

容器监控与与日志

检查docker的状态

sudo docker info

在这里插入图片描述

• 查看容器内进程
– Docker top
– Docker stats
• 容器详细信息
~]# docker info
… …
~]# docker info --format {{.ServerVersion}}
~]# docker inspect
… …
~]# docker inspect -f ‘{{.NetworkSettings.IPAddress}}’ 084f46eddf33

docker图形化管理工具

web图形化管理工具
– Portainer
• 单节点运行

 docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker容器技术是一种轻量级的虚拟化技术,可以快速搭建和部署应用程序。每天花5分钟玩转Docker容器技术,可以充分利用碎片化的时间,提高工作和学习效率。 首先,我们需要了解Docker容器技术的基本概念和原理。可以每天读取Docker容器的相关书籍或者阅读官方文档,逐步掌握其中的关键概念和技术细节。 接下来,在学习过程中,可以每天尝试使用Docker命令行工具来进行实践。比如,运行一个简单的Hello World容器,下载一个Docker镜像并在容器中运行一个简单的应用程序等。通过实际操作,可以更好地理解Docker容器技术的工作原理。 此外,深入学习Docker容器技术的最好方式之一是参与项目实战。可以每天尝试运行一些具有挑战性的容器化项目,比如部署一个多容器的Web应用程序,搭建一个容器化的开发环境等。通过实际的项目实践,可以更加深入地掌握和应用Docker容器技术。 另外,要善于利用网络资源,比如每天浏览相关的Docker容器技术博客、论坛或者社区,了解最新的技术发展和应用案例。可以关注Docker官方博客或者加入Docker用户社区,与其他Docker技术爱好者交流学习经验。 最后,坚持每天花5分钟玩转Docker容器技术,持之以恒。通过每天的实践和学习,逐渐提升自己的技术能力,深入理解和运用Docker容器技术,为个人的工作和学习带来便利和提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值