docker重点笔记

基础核心指令

// 登录自己的Hub,可以官网注册个,方便存储私有镜像
docker login
 
镜像部分:
// 查看镜像
docker images
// 搜索flink相关镜像
docker search flink
// 拉取自身Hub或者官方镜像
docker pull yyoc97/dev:test
// 推送远程仓库
docker push yyoc97/dev:test
// 删除镜像  -f强制,(容器操作rm,参数类似)
docker rmi 容器name/id -f
// 保存hello-world镜像到本地
docker save -o hello.tar hello-world
// 装载本地ubuntu_test镜像到docker环境,再使用docker images查看
docker load < ubuntu_test.tar 
// 通过Dockerfile创建镜像, /tmp/docker_builder/为Dockerfile路径,build_repo/first_image为生成镜像标签
docker build -t build_repo/first_image /tmp/docker_builder

容器部分:
// 查看容器,-a全部,-q停止中的 
docker ps -a -q
// 根据镜像单独创建容器,返回容器id,
docker create ubuntu:lastest
// 直接运行创建,-d后台运行,--name名字为test,--add-host初始网络映射,-v挂载目录,-p 指定端口映射,-P随机端口,
docker run -d --name test --add-host server.shop.test.com:10.40.10.29  -v  /data/logs/test:/data/logs -p 8600:8080 jar-app 
// 启动、停止或者重启容器
docker start/stop/restart  容器name/id
// 进入docker终端
docker exec -it 容器id或容器名  /bin/bash
// 共享其他容器数据卷 --volumes-from
docker run -d --volumes-from dbdata --name db1 nginx
// 容器互联,容器可以共享网络,run的启动参数带上
--link name:alias

相关原理

原理

Docker 的基础是Linux容器(LXC)等技术。在LXC的基础上Docker进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。Linux 命名空间、控制组和 UnionFS 三大技术支撑了目前 Docker 的实现,也是 Docker 能够出现的最重要原因。

  • NameSpace
    是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法
  • Cgroups:
    Cgroups是Linux内核功能,它让两件事情变成可能:限制Linux进程组的资源占用,列如:CPU、内存、磁盘 I/O 和网络带宽。
  • Union文件系统:
    在union文件系统里,文件系统可以被装载在其他文件系统之上,其结果就是一个分层的积累变化。

优势

  • 高效的部署和扩容
  • 更高的资源利用率
  • 更简单的管理

常见异常

Error response from daemon: No such container: bd1

操作容器时,有时候不能通过容器name,要根据id来指定。可能是有些名字被系统预暂用的缘故。

Dockerfile样例

一般而言,分为四部分:基础镜像信息,维护者信息、镜像操作指令和容器启动时执行指令。

# 第一行必须指定基于的基础镜像
FROM ubuntu

# 维护者信息
MAINTAINER docker_user [email protected]

# 镜像操作指令,可以多条
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN bash -c 'touch test.txt'

# 容器启动时执行指令
CMD /user/sbin/nginx

编排和监控

资源管控一直是生产环境中不容忽视的重点,常用的组件有k8s、CAdvisor、DataDog等

发布了62 篇原创文章 · 获赞 33 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/yyoc97/article/details/88377244