Docker学习记录

Docker

Docker技术学习:

一 、容器简介

二、什么是 Docker?

三、安装Docker

四、 docker镜像相关操作

五、 容器的日常管理

六、Docker 数据卷的管理

七、Dockerfile自动构建docker镜像

八、 Docker中的镜像分层

九、使用docker运行zabbix-server

十、 docker 仓库(registry)

十一 docker-compose编排工具

十二、重启docker服务,容器全部退出的解决办法

十三、Docker网络类型

十四、docker企业级镜像仓库harbor


Docker与虚拟机之间的区别:

  • Docker模拟的是使用操作系统,即多个容器共同使用(复用)同一个操作系统内核;而虚拟机是模拟、与宿主机共享硬件。在共享的硬件之上,安装自己的操作系统。

Docker架构
  1. 镜像(Imane): Docker镜像(image),相当于一个Root头文件系统,类似于使用虚拟机中操作系统ISO镜像
  2. 容器(Container):镜像和容器的关系,就像是面向对象设计中类的对象一样,镜像是静态的定义、容器的镜像运行的实体,容器可以被创建、启动、停止、删除、暂停等
  3. 仓库(Repository ):仓库可以看作代码控制中心,用来保存镜像。可分为官方镜像仓库(Docker hub)、私人仓库((Private Hub Registry))

​ 使用Docker info查看当前docker容器的总览情况.


配置国内Docker镜像加速器:

可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。把自己的专属加速地址放到下面的地址改一下,写入文件就可以了。

{
  "registry-mirrors": ["https://eu5rxjvf.mirror.aliyuncs.com"]
}

systemctl daemon-reload  #启动配置
systemctl restart docker  #重启docker服务

Docker命令 (基于CentOS 7)

  • 关于Docker服务命令
    1. Docker启动 Systemctl start Docker
    2. Docker关闭 systemctl stop Docker
    3. Docker查看状态 systemctl status Docker
    4. 重启: systemctl retstart docker
    5. 设置开机启动 systemctl enable docker
  • Docker镜像相关命令
    1. 查看镜像: 查看所有本地镜像

      docker images

      docker images -q # 查看所有镜像的id

    2. 搜索镜像:#从docker hub仓库搜索镜像

      docker search 镜像名称

    3. 拉取镜像: 从Docker Hub中拉取镜像到本地,镜像名称格式为: 名称:版本号

      docker pull Redis:5.0

    4. 删除镜像:删除本地镜像

      docker rmi 镜像id #删除指定本地镜像

      docker rmi docker images -q删除本地所有镜像

  • Docker容器相关命令
    • Docekr查看容器:

      docker ps # 查看正在运行的容器

      docekr ps -a # 查看历史所有容器

    • 创建并启动容器

      docker run 参数

      参数列表:

      • -i 保持容器运行
      • -t 为容分配一个伪输入终端
      • -d 以守护(后台)模式运行容器,创建之后在后台运行,需要使用docekr exec进入容器,退出后,容器不关闭
      • -it 创建的容器称为交互式容器; -id 容器为守护式容器
      • –name 为创建容器命名
    • 其他容器常规命令

      进入容器
      	docker exec 参数# 退出容器,不会关闭
      	exec命令执行事例:
      	docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
      停止容器
      	docke stop 容器名称|ID
      启动容器
      	docker start 容器名称|ID
      删除容器, 只能删除停止运行时状态
      	docker rm 容器名称|ID
      查看容器信息
      	docker inspeccct 容器名称|ID
      	
      

Docker容器的数据卷

##### 数据卷概念:

- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的**修改会立即同步**
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂载多个数据卷
数据卷作用:
  • 容器数据持久化
  • 外部机器和容器间通信
  • 容器之间数据交换

​ 使用方式:

创建启动容器时,使用-v参数设置数据卷
Docker run ... -v 宿主机(文件):容器内目录(文件)

注意事项:

- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂在多个数据卷
- 容器中操作没有权限:`--privileged=true`选项,这意味着你给了容器完全的权限
数据卷容器:
  • 创建一个容器,挂在一个指定目录,让其他容器继承自该容器(–volume-from );即递进关系同时挂载在指定目录中

  • 通过简单方式实现数据卷配置

    1. 启动c3数据卷容器,使用-v参数 设置数据卷容器 
    docker run -it --name=c3 -v /volume centos:7
    2. 创建c1 c2容器,使用--volumen-from参数,设置数据卷
    docker run -it --name=c1 --volumes-from c3 centos:7
    docker run -it --name=c2 --volumes-from c3 centos:7
    

Docker应用部署

内部容器对外开放端口,只能宿主机能够访问;而外部PC只能请求到宿主机,因此需要通过**-p端口映射参数**将容器服务端口映射到主机对外端口。

事例: -p 容器端口:物理机端口 映射端口

docker部署Mysql
docker部署tomcat

DockerFile

  1. Linux文件系统:

    BootFS:包含bootloader(引导加载程序)和kernel(内核)

    RootFS:root文件系统,包含的典型Linux上系统中的/dev,/proc, /bin,/etc等标准目录和文件

    不同的linux发行版本,bootfs相同,而rootfs由不同厂商各自编写定制

  2. Docker的本质: 不同版本对象的不同镜像堆叠

    Tomcat镜像 = jdk镜像+tomcat+linux-RootFS+宿主机BootFS

    着重强调 复用

Docker如何制作镜像

  1. 容器转化为镜像

    #容器制作为镜像
    Docker commit 容器id 镜像名称:版本号
    docker commit -m "提交描述信息" -a "xxx" -c "xxx" 镜像id|名称:版本 #提交镜像
    #镜像进行压缩传输
    docker save -o 压缩文件名称 镜像名称:版本号
    #镜像解压成为镜像
    docker load -i 压缩文件名称
    
  2. dockerfile

​ Dockerfile是一个创建镜像所有命令的文本文件,包含了一条条指令和说明, 每条指令构建一层,,通过docker build命令,根据Dockerfile的内容构建镜像,因此每一条指令的内容, 就是描述该层如何构建。有了Dockefile,,就可以制定自己的docker镜像规则,只需要在Dockerfile上添加或者修改指令,,就可生成docker 镜像。

#1.编写dockerfile文件

#2.执行DockerFile文件,创建 成为 镜像
docker build -f ./centos7-dockerfile -t tansl_centos7:1 .
-f: 指定当前dockerfile文件
-t:创建镜像名:版本号
‘.’: 文件生成位置

DockerFile 指令选项:

Dockerfile 指令选项:

FROM                  #基础镜像 。 (centos)
MAINTAINER            #镜像的作者和邮箱。(已被弃用,结尾介绍代替词)
RUN                   #镜像构建的时候需要执行的命令。
CMD                   #类似于 RUN 指令,用于运行程序(只有最后一个会生效,可被替代)
EXPOSE                #对外开放的端口。
ENV                   #设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。
ADD                   # 步骤:tomcat镜像,这个tomcat压缩包。添加内容。
COPY                  #复制指令,将文件拷贝到镜像中。
VOLUME                #设置卷,挂载的主机目录。
USER                  #用于指定执行后续命令的用户和用户组,
                       这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。
WORKDIR               #工作目录(类似CD命令)。
ENTRYPOINT            #类似于 CMD 指令,但其不会被 docker run 
                       的命令行参数指定的指令所覆盖,会追加命令。
ONBUILD               #当构建一个被继承Dokcerfile,就会运行ONBUILD的指令。出发执行。


注意:CMD类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
CMD 在docker run 时运行。
RUN 是在 docker build。
作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。
CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

LABEL(MAINTALNER已经被弃用了,目前是使用LABEL代替)
LABEL 指令用来给镜像添加一些元数据(metadata),以键值对的形式,语法格式如下:
LABEL <key>=<value> <key>=<value> <key>=<value> ...
比如我们可以添加镜像的作者:
LABEL org.opencontainers.image.authors="runoob"

Tips:构建镜像99%都是从scratch开始的,但是这个镜像是个虚拟的概念,并不实际存在,表示一个空白的镜像


Docker服务编排

​ 按照一定规则业务,批量的管理容器

Docker Compose

​ 批量编排多容器分布式部署的工具,使用步骤:

  1. 利用DockerFile定义运行环境镜像
  2. 使用docekr-compose.yml定义组成应用的各服务
  3. 运行docker-compose up启动应用

Docker私有仓库

  1. Docker搭建私有服务器 docker tag
  2. docker镜像制作- > docker镜像上传到私有仓库 push
  3. 私有仓库镜像,拉去到本地 pull拉去

参考资料:

Docker中文官网

docker入门,这一篇就够了

Docker 从入门到精通(新手建议收藏的教程)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值