IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker备忘 -> 正文阅读

[系统运维]docker备忘

1、初识docker

1.1 docker基础

1.1.1 物理机、虚机、docker对比

在这里插入图片描述

上图为物理机、虚机、docker的大致对比。

特性容器虚机
启动速度秒级分钟级
性能接近原生较弱
内存代价很小较多
硬盘使用一般为MB一般为GB
运行密度单机支持上千个容器一般为十几个
隔离性安全隔离完全隔离
迁移性优秀一般

1.1.2 使用docker

加载镜像

docker load -i myubuntu.tar
docker load < myubuntu.tar

从仓库拉取docker镜像

# 搜索可用的镜像
docker search ubunut
# 拉取镜像,默认为tag为latest
docker pull ubuntu 
# 拉取指定tag的镜像
docker pull ubuntu:18.04
# 查看拉取到的镜像
docker images | grep ubuntu
# 查看镜像的详细信息
docker inspect ubuntu:18.04
# 删除镜像
docker rmi ${image_id}
docker rmi ubuntu:18.04
# 强制删除镜像
docker rmi -f ${image_id}
docker rmi -f ubuntu:18.04

运行拉取的镜像

docker run --name image_test --net=host -itd ${image_id} /bin/bash
# -v[挂载] 宿主机目录:容器内目录
# -p[端口映射] 宿主机端口:容器内端口
docker run --name image_test --net=host -v /tmp:/tmp -p 8080:8080 -itd ${image_id} /bin/bash

查看容器信息

docker inspect ${container_id}

进入容器

docker exec -it ${container_id} /bin/bash

杀死容器

docker kill ${container_id} && docker rm ${container_id}

创建镜像

# 基于容器创建镜像
docker commit -m="image message" ${container_id} myubuntu:18.04
# 基于dockfile创建镜像,执行此命令能进入dockefile所在的文件路径下
docker build -t myubuntu:18.04 . #注意后面有个点

保存镜像

# 保存镜像到本地
docker save ${container_id} > myubuntu.tar
docker save myubuntu.tar ${container_id}
# 推送镜像到远程仓库
docker push ${registry}/${image_name}:${iamge_tag}

拷贝文件

# 从宿主机拷贝至容器内
docker cp file_path ${container_id}:file_path
docker cp /tmp/test.txt af8sdsddefg:/tmp/
# 从容器拷贝文件至宿主机
docker cp ${container_id}:file_path file_path
docker cp af8sdsddefg:/tmp/test.txt /tmp/

1.1.3 Dockerfile

指令作用
ARG定义创建镜像过程中使用的变量
FROM指定创建镜像使用的基础镜像
LABEL为生成的镜像添加元数据标签信息
EXPOSE声明镜像内服务监听的端口
ENV指定环境变量
ENTRYPOINT指定镜像的入口命令,可以理解为启动脚本
VOLUME创建一个数据卷挂载点
USER指定运行容器的用户名或者UID
WORKDIR配置工作目录
ONBUILD创建子镜像时指定自动执行的操作命令
STOPSIGNAL指定退出的信号值
HEALTHCHECK配置所启动容器如何进行健康检查
SHELL指定默认shell类型
RUN运行指定命令
CMD启动容器是指定默认执行的命令,不同于启动脚本
ADD添加内容到镜像
COPY复制内容到镜像

ARG

格式:ARG < name > [ = < default value >]
当镜像编译成功后,ARG指定的变量将不再存在(ENV指定的在)

FROM

格式:FROM < image >:< tag >
任何一个Dockerfile的第一条指令必须为FROM命令

EXPORE

格式:EXPORE < port >
该指令只是起到了声明的作用,并不会自动完成端口的映射

ENV

格式: ENV < key >=< value >
指定的环境变量可以被后续RUN命令使用,镜像启动的容器中也会存在

ENTRYPOINT

格式:ENTRYPOINT [“exectable”,“param1”,“param2”],exec调用执行
格式:ENTRYPOINT command param1 param2,shell中执行
此时,CMD指定值讲作为根命令的参数,每个Dockerfile中只能有一个ENTRYPOINT,当指定多个时,只有最后一个起作用,在运行时,可以被–entrypoint参数覆盖掉,如docker run --entrypoint

RUN

每条RUN指令将在当前镜像基础上执行指定的命令,并提交为新的镜像层,当命令较长时,可以使用\来换行,避免出现太多的层。

CMD

格式:CMD [“exectable”,“param1”,“param2”],相当于执行exectable param1 param2,推荐方式
格式:CMD command param1 param2,在默认的shell中执行,提供给需要交互的应用
格式:CMD [“param1”,“param2”],提供给ENTRYPOINT的默认参数
每个Dockerfile只能有一条CMD指令,如果指定了多条命令,只有最后一条会被执行,如果用户启动容器时候手动指定了运行的命令(作为run命令的参数),则会覆盖掉CMD指定的命令


ps:好久没写博客了,是时候该把博客捡起来了(感谢某人的督促,不然我也懒得写😑),今天主要是写了一些docker的基本知识,写的很杂很乱,后面有时间在接着整理吧【2022/1/23日深夜于北京】

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 11:21:19  更:2022-01-24 11:22:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 8:20:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码