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基础的文档笔记希望对你有用 -> 正文阅读

[系统运维]docker 的最基础知识命令,可以当作笔记来看,学习还是要看相关的课程视频,自此整理了一套docker基础的文档笔记希望对你有用

https://www.docker.com: docker官网 https://docs.docker.com: docker文档学习 https://hub.docker.com: docker仓库地址 E586rs:云服务登录密码

docker容器没有相应命令:(这是乌班图的下载方式) 更新源库:apt-get update 安装vim:apt-get install vim

安装docker: 一:在线yum仓库安装

  1. yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 2.yum install -y yum-utils device-mapper-persistent-data lvm2 :安装docker必备工具

3.yum-config-manager \ :安装docker的yum源 -add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum-config-manager \ 安装docker的yum源 --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repe

Step 3: 更新并安装Docker-CE

 ? ? 阿里云的dicker下载仓库(网上可以搜到)

4.更新yum索引:yum makecache fast 5.安装docker docker-ce docker-ce社区 ee 企业版y yum install docker-ce docker-ce-cli containerd.io

启动dockers:systemctl start docker 升级docker引擎:1.去docker官方下载对应系统的安装包 2.安装下载号的docker包:yum install -y 包的位置 卸载docker:1.yum remove docker-ce docke-ce-cli containerd.io 2.yum rm -rf 路径 有了镜像才可以下载容器

docker常用命令:

1.docker version:docker版本信息 ? 2.docker info: 显示docker的系统信息,包括镜像和容器的数量 ? 3.docker --help:显示帮助信息 ? 4docker images :docker镜像显示 ? --all , -a 显示所有图像(默认隐藏中间图像) ? --digests 显示摘要 ? --filter , -f 根据所提供的条件进行滤波器输出 ? --format 使用 Go 模板打印图像 ? --no-trunc 不截断输出 ? --quiet , -q 仅显示数字 ID

5.docker search:docker搜索
            --automated 废弃仅显示自动生成
            --filter , -f       根据所提供的条件进行滤波器输出
            --format        使用 Go 模板进行漂亮打印搜索
            --limit 25  搜索结果的最大数量
            --no-trunc  不截断输出
            --stars , -s        废弃仅显示至少 x 星
            例:focker search 服务镜像名字如(mysql) 后面在家相应的选项
6.docker pull:dicker镜像下载
        --all-tags , -a     下载存储库中所有标记的图像
        --disable-content-trust true    跳过图像验证
        --platform      实验(守护神)API 1.32+设置平台,如果服务器是多平台功能
        --quiet , -q        抑制详细输出
        例:docker pull 服务名字:版本号(下载服务版本号对于的镜像)
7.docker rm:删除docker容器:
        --force , -f        强制删除正在运行的容器(使用 SIGKILL) 
        --link , -l      ? ? ? ? ? ? ?  删除指定的链接
        --volumes , -v      删除与容器关联的匿名卷
     ? ? ? ? ? ? ? 例:docker rm -f $(docker ps -aq):删除所有容器
         ? ?  或:docker ps -a -q|xargs docker rm
     ? ? ? ? ? ? ? 例子:docker rm -f 容器ID :删除某个容器;但是正在后台运行的容器不可以删除
8.docker rmi:删除docker镜像:
        --force , -f        强制删除图像
        --no-prune      不要删除未标记的父母
        例子:删除所有:docker rmi -f $(docker images -qa):递归删除所有查出来的镜像
     ? ? ? ? ? ? ?  例:docker rmi -f id号(docker images 查出来的id号)  
9.docker run :docker 运行:在容器中运行命令
        --add-host      添加自定义主机到 IP 映射(主机:ip)
        --attach , -a       连接到 STDIN、STDOUT 或 STDERR
        --blkio-weight      块 IO(相对权重),介于 10 和 1000 之间,或 0 禁用(默认 0)
        --blkio-weight-device       块 IO 权重(相对设备重量)
        --cap-add       添加 Linux 功能
        --cap-drop      放弃 Linux 功能
        --cgroup-parent     容器的可选父 cgroup
        --cidfile       将容器 ID 写入文件
        --cpu-count     CPU 计数(仅窗口)
        --cpu-percent       CPU 百分比(仅窗口)
        --cpu-period        限制 CPU CFS(完全公平的调度程序)周期
        --cpu-quota     限制 CPU CFS(完全公平的调度程序)配额
        --cpu-rt-period     API 1.25+以微秒为单位限制 CPU 实时周期
        --cpu-rt-runtime        API 1.25+以微秒为单位限制 CPU 实时运行时间
        --cpu-shares , -c       CPU 共享(相对权重)
        --cpus      API 1.25+CPU 数量
        --cpuset-cpus       允许执行的 CPU (0-3, 0,1)
        --cpuset-mems       允许执行的 MEM (0-3, 0,1)
        --detach , -d       在后台运行容器并打印容器 ID
        --detach-keys       覆盖分离容器的键序列
        --device        将主机设备添加到容器
        --device-cgroup-rule        将规则添加到 cGroup 允许的设备列表
        --device-read-bps       限制设备读取速率(字节/秒)
        --device-read-iops      限制设备读取速率(IO/秒)
        --device-write-bps      将写入速率(字节/秒)限制为设备
        --device-write-iops     将写入速率(IO/秒)限制为设备
        --disable-content-trust true    跳过图像验证
        --dns       设置自定义 DNS 服务器
        --dns-opt       设置 DNS 选项
        --dns-option        设置 DNS 选项
        --dns-search        设置自定义 DNS 搜索域
        --domainname        容器 NIS 域名
        --entrypoint        覆盖图像的默认入口点
        --env , -e      设置环境变量
        --env-file      在环境变量文件中读取
        --expose        暴露端口或一系列端口
        --gpus      API 1.40+要添加到容器的 GPU 设备("全部"通过所有 GPU)
        --group-add     添加要加入的其他组   
        --health-cmd        命令运行以检查运行状况
        --health-interval       运行检查之间的时间(ms=s=m=h)(默认 0s)
        --health-retries        报告不正常行为所需的连续故障
        --health-start-period       API 1.29+容器的开始周期在开始运行状况重倒数 (ms\s\m\h) (默认 0s) 之前初始化
        --health-timeout        允许运行一个检查的最大时间(ms=s=m=h)(默认 0s)
        --help          打印用法
        --hostname , -h     容器主机名
        --init          API 1.25+在容器内运行一个 init,该容器转发信号并收获进程
        --interactive , -i      即使未连接,也保持 STDIN 打开
        --io-maxbandwidth       系统驱动器的最大 IO 带宽限制(仅窗口)
        --io-maxiops        系统驱动器的最大 IOps 限制(仅窗口)
        --ip            IPv4 地址(例如 172.30.100.104)
        --ip6           IPv6 地址(例如,2001:db8:33)
        --ipc           要使用的 IPC 模式
        --isolation         容器隔离技术
        --kernel-memory     内核内存限制
        --label , -l            在容器上设置元数据
        --label-file        在标签的行分隔文件中读取
        --link      将链接添加到另一个容器
        --link-local-ip     容器 IPv4/IPv6 链路本地地址
        --log-driver        容器的日志记录驱动程序
        --log-opt       日志驱动程序选项
        --mac-address       容器 MAC 地址(例如 92:d0:c6:0a:29:33)
        --memory , -m       内存限制
        --memory-reservation        内存软限制
        --memory-swap       交换限制等于内存加交换:'-1',支持无限制交换
        --memory-swappiness -1  调整容器内存交换(0 到 100)
        --mount     将文件系统装载附加到容器
        --name      为容器分配名称
        --net       将容器连接到网络
        --net-alias     为容器添加网络范围别名
        --network       将容器连接到网络
        --network-alias     为容器添加网络范围别名
        --no-healthcheck        禁用任何容器指定的运行状况检查
        --oom-kill-disable      禁用 OOM 杀手
        --oom-score-adj     调整主机的 OOM 首选项 (-1000 到 1000)
        --pid       要使用的 PID 命名空间
        --pids-limit        调整容器皮斯限制(设置为 -1 无限制)
        --platform      实验(守护神)API 1.32+设置平台,如果服务器是多平台功能
        --privileged        向此容器授予扩展权限
        --publish , -p      将容器的端口发布到主机
        --publish-all , -P(大写P) 将所有公开端口发布到随机端口
                -p ip:主机端口:容器端口
                -p 主机端口:容器端口(常用)
                -p 容器端口
                容器端口
        --read-only     将容器的根文件系统装载为只读
        --restart   no  重新启动策略,在容器退出时应用
        --rm        容器退出时自动移除容器
        --runtime       用于此容器的运行时
        --security-opt      安全选项
        --shm-size      大小 /开发/shm
        --sig-proxy true    代理接收到进程的信号
        --stop-signal   SIGTERM 停止容器的信号
        --stop-timeout      API 1.25+停止容器的超时(以秒为单位)
        --storage-opt       容器的存储驱动程序选项
        --sysctl        Sysctl 选项
        --tmpfs     装载 tmpfs 目录
        --tty , -t      分配伪 TTY
        --ulimit        乌利米特选项
        --user , -u     用户名或 UID(格式:<name{uid>\:<组\gid>\)
        --userns        要使用的用户名空间
        --uts       要使用的 UTS 命名空间
        --volume , -v       绑定装载卷
        --volume-driver     容器的可选卷驱动程序
        --volumes-from      从指定的容器中装载卷(两个或多个容器之间实现数据共享)
        --workdir , -w      容器内的工作目录    
        例:dcoker run -it 下载的容器名字如(centos) centos /bin/bash:启动并进入容器  
        例:docker run -d centos——后台启动centos
         ? ? ?  常见问题: 当后台启动这个容器和发现停止了 ,是因为:docker容器使用后台运行
             ? ? ? ? 就必须要有一个前台进程,docker发现没有应用,就会自动停止。
?
9.1(重要部分)——数据卷容器:(实现两个或多个容器之间的数据共享,实现热备份工作,即使其中的centos01死掉数据也会有,centos02和centos03数据也可以共享同步)
 ? ? ? ? ?  使用命令:docker run -it  --volumes-from
    第一步(创建一个新的容器):
        docker run -it --name centos01  镜像ID
    第二步(新的容器centos02和centos01容器链接实现数据同步共享备份):
        docker run -it --name centos02 --volumes-from centos01 镜像ID
    第三步(新的容器centos03和centos01,02 容器链接实现数据同步共享备份):
        docker run -it --name centos03 --volumes-from centos01 镜像ID

10.docker ps:列出容器:

--all , -a 显示所有容器(默认显示刚刚运行) ? --filter , -f 根据所提供的条件进行滤波器输出 ? --format 使用 Go 模板进行漂亮的打印容器 ? --last , -n -1 显示 n 个上次创建的容器(包括所有状态) ? --latest , -l 显示最新创建的容器(包括所有状态) ? --no-trunc 不截断输出 ? --quiet , -q 仅显示数字 ID ? --size , -s 显示文件总大小

11.容器的关闭,启动,重启:

docker start 容器ID :启动容器 ? --attach , -a 连接STDOUT/STDER 和前进信号 ? --checkpoint 实验(守护神)从此检查点还原 ? --checkpoint-dir 实验(守护神)使用自定义检查点存储目录 ? --detach-keys 覆盖分离容器的键序列 ? --interactive , -i 附加容器的 STDIN ? docker restart 容器ID :重启容器 ? --time , -t 10 秒等待停止,然后杀死容器 ? docker stop 容器ID :停止当前正在运行的容器 ? --time , -t 10 秒等待停止, 然后杀死它 ? docker kill 容器ID :强制停止当前容器 ? --signal , -s KILL 发送到容器的信号

12.docker logs:docker日志:查看容器日志信息

--details 显示提供给日志的额外详细信息 ? --follow , -f 跟随日志输出 ? --since 显示自时间戳(例如 2013-01-02T13:23:37)或相对(例如 42m 42 分钟)以来的日志 ? --tail all 从日志末尾显示的行数 ? --timestamps , -t 显示时间戳 ? --until API 1.35+在时间戳(例如 2013-01-02T13:23:37)或相对(例如 42m 42 分钟)之前显示日志 ? 例:docker -logs -tf --tail 10 容器ID:显示对应的容器ID后10行的日志内容

13.docker top 容器ID:查看容器中进程信息

例子:docker top 容器ID

14.docker inspect 容器ID:查看容器的元数据

--format , -f 使用给定的 Go 模板格式化输出 ? --size , -s 如果类型是容器,则显示总文件大小 ? --type 返回指定类型的 JSON ? 例子:docker inspect 容器ID

15.进入当前正在运行的容器(通常容器都是使用后台方式运行的)(是起一个备份配置文件数据的作用)

命令: ? 方法一:docker exec -it 后台运行的容器ID /bin/bash:进入容器开启一个新的终端 ? 方法二:docker attach 容器ID:进入容器正在执行的终端,不会启动新的进程 ? ctrl+p+q:推出当前容器不关闭

16.从容器内拷贝文件到主机上:(手动复制 只起一个备份作用)

命令: docker cp ? --archive , -a 存档模式(复制所有 uid/gid 信息) ? --follow-link , -L 始终在代码中跟随符号SRC_PATH ? 例子:docker cp 容器ID:容器内的绝对路径 主机上的某个绝对路径

17.docker stats :用于运行容器的实时数据流

--all , -a 显示所有容器(默认显示刚刚运行) ? --format 使用 Go 模板的漂亮打印图像 ? --no-stream 禁用流式统计,仅提取第一个结果 ? --no-trunc 不要截断输出 ? CONTAINER ID和Name 容器的ID和名称 ? CPU %和MEM % 主机的CPU和容器使用的内存的百分比 ? MEM USAGE / LIMIT 容器使用的总内存,以及允许使用的总内存量 ? NET I/O 容器通过其网络界面发送和接收的数据量 ? BLOCK I/O 容器从主机上的块式设备读取和编写的数据量 ? PIDs 容器创建的过程或线程数 ? 例子:docker stats

  1. docker commit :提交容器成为一个新的副本镜像

    --author , -a 作者(例如,"约翰·汉尼拔·史密斯hannibal@a-team.com") ? --change , -c 将 Dockerfile 指令应用于创建的图像 ? --message , -m 提交消息 ? --pause , -p true 提交期间暂停容器 ? 例子:docker commit -a="jzk" -m="x修改信息描述“ 容器ID 新的镜像名字

19.容器数据卷(容器的持久化和同步操作!容器间也可以数据共享)(可以挂在多个目录)

测试例子1:(docker run -it -v 主机目录:容器内目录) ? docker run -it -v /hmoe/dockermount:/hmoe centos /bin/bash (把centos容器内的/home目录挂在到主机的/home/dockermount下)

 ? ?  测试列子2:(mysql)
    docker run -d -p 3310:3306 -v /hmoe/dockermountmysql/conf:/etc/mysql/conf.d -v /hmoe/dockermountmysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:版本
    (把mysq容器内的目录放到主机的目录下,-e:配置mysql环境(密码)。)
?
 ? ? # 具名和匿名挂载(匿名和具名挂载会将数据卷放到/var/lib/docker/voluem下)
    1.匿名挂载:(不指定主机目录也不指定容器卷的名字,直接写容器内的目录,这种方式就是匿名挂载  匿名挂载默认挂载目录是:/var/lib/docker/voluem/容器名字是docker自己创建的/_data)
     ? ? ? 例子:docker run -d  -v  容器内目录 镜像名称
?
    2.具名挂载:(所有的docker容器内的卷,没有指定目录的情况下都是在:/var/lib/docker/volumes/自己写的卷名/_data
     ? ? ? 例子:docker  run -d  -v  卷名:容器内目录  镜像名称
?
    3.指定路径挂载 {就是指定主机目录和容器内的目录实现数据的同步挂载方式为指定路径挂载(例1和例2)}(指定路径挂载的数据不会出现在voluem中)(主机的最后一条路径最后是空的)
 ? 扩展:
 ? ?  通过-v 容器内路径:ro,rw 改变(ro:只读/rw:读写)读写权限
 ? ? ? ? docker run -d -v 卷名:容器内的路径:ro 或者 rw  镜像名称
 ?       #ro : 设置ro权限只能通过通过宿主机来操作,容器内部是无法操作的
    #rw: 可读可写
?
9.1(重要部分)——数据卷容器:(实现两个或多个容器之间的数据共享,实现热备份工作,即使其中的centos01死掉数据也会有,centos02和centos03数据也可以共享同步,容器之间配置信息的传递,数据容器卷的生命周期一直持续到没有容器使用为止)
 ? ? ? ? ?  使用命令:docker run -it  --volumes-from(需要结合dockerfile或者有挂载的容器来实现,因为在创建这些时只有其中一个挂载了本地数据才可以同步共享其他)
    第一步(创建一个新的容器):
        docker run -it --name centos01  镜像ID
    第二步(新的容器centos02和centos01容器链接实现数据同步共享
        docker run -it --name centos02 --volumes-from centos01 镜像ID
    第三步(新的容器centos03和centos01,02 容器链接实现数据同步共享备份):
        docker run -it --name centos03 --volumes-from centos01 镜像ID
    #一旦设置了容器权限,容器对我们挂载出了的内容就有权限限定了,而如果是只读就不可以在容器内修改数据,只能在挂载出了的数据卷或者目录来修改容器数据)
  1. docker volume(docker volume容器卷的创建和查看)

    1.docker volume create (创建新的卷) ? --driver,-d local 指定音量驱动程序名称 ? --label 为卷设置元数据 ? --name 指定音量名称 ? --opt,-o 设置驱动程序特定选项

 ? ? 2.docker volume inspect (查看卷的元数据)
    --format,-f     使用给定的 Go 模板格式化输出
 ?  3.docker volume ls (查看所有的volume卷(包括匿名挂载的和具名挂载的)
    --filter,-f     提供筛选值(例如"悬空=真实")
    --format        使用 Go 模板的精美打印卷
    --quiet,-q      仅显示卷名称
 ? ? 4. docker volume rm(删除一个或多个volume卷)
    --force,-f      强制移除一个或多个卷
 ? ? 5. docker volume prune(删除所有本地未使用的卷,值没有挂载的只是创建出来了没用的)
    --filter        提供筛选器值(例如"标签+标签")
    --force,-f      不要提示确认

21.初始dockerfile(dockerfile 是用来创建docker镜像的构建文件,命令脚本!通过这个脚本可以生成一个镜像,dockerfile就是一个脚本,里面是一些命令来实现脚本对镜像和容器进行操作)

21.1docker history  镜像ID ? : (查看镜像的操作历史)
  构建步骤:
1.编写一个dockefile 文件
2.通过 docker bulid 构建成为一个镜像
3.docker run 运行此镜像测试
4.docker push 发布镜像(可以发布到:dockersHub和阿里云镜像仓库)
?
dockerfile构建过程(dockerfile是面向开发的)
 ? ? ? 基础知识:
1.每个保留关键字(指令)都是必须是大写字母
2.执行从上到下顺序执行
3.#表示注释
4.每个指令都会创建提交一个新的镜像层,并提交

dockerfile的指令: 1.FROM :基础镜像,就是docker images的镜像** 2.MAINTAINER : 镜像是谁写的,姓名+邮箱 3.RUN : 镜像构建的时候需要运行的命令 4.ADD : 编译镜像时复制文件到镜像中(可以用COPY 代替效果和结果一样)(ADD复制安装包的话会自动解压,COPY只是复制而不会过多操作,一般文件和文件夹) 5.WORKDIR : 镜像的工作目录 6.VOLUME : 挂载的目录 7.EXPOSE : 保留端口配置,指定对外的端口 8.CMD : 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替换 9.ENTRYPOINT : 指定这个容器启动的时候要运行的命令,可以追加命令 10.ONBUILD : 当构建一个被继承dockerfile这个时候就会运行ONBUILD的指令,出发指令 11.CP :类似ADD,将我们文件拷贝到镜像中 12.ENV : 构建的时候设置环境变量** CMD和ENYPOINT的区别: 1.如果容器是通过CMD 启动的执行的命令 在启动容器是添加参数书无效的 2.如果容器是通过ENTGRYPOINT 启动的执行的命令 在启动容器时是可以在后面追加参数的

例子:构建tomcat: 1.准备镜像文件 tomcat压缩包,jdk压缩包 2.编写dockerfile文件,官方命名Dockerfile ,build会自动寻找这个文件,就不需要-f指定了

        FROM centos

MAINTAINER

?? COPY readme.txt /usr/local/readme.txt ?

ADD jdk-8u11-linux-x64.tar.gz /usr/local/ ?

ADD apache-tomcat-9.0.33.tar.gz /usr/local/ ?

RUN yum -y install vim ?

ENV MYPATH /usr/local ?

WORKDIR $MYPATH ?

ENV JAVA_HOME /usr/local/jdk1.8.0_11 ?

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

? ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.33

? ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.33 ?

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin ?

EXPOSE 8080 ?

CMD /usr/local/apache-tomcat-9.0.33/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.33/bin/logs/catalina.out

3.构建镜像:docker build -f Dockerfile -t centos/tomcat .

4.启动镜像

5.访问测试

6.发布网页项目

22.docker build( 用于启动使用dockerfile脚本实现创建镜像等一系列操作)

使用方法:docker build

--add-host      添加自定义主机到 IP 映射(主机:ip)
--build-arg     设置生成时间变量
--cache-from        要考虑为缓存源的图像
--cgroup-parent     容器的可选父 c 组
--compress      使用 gzip 压缩构建上下文
--cpu-period        限制 CPU CFS(完全公平的调度器)周期  
--cpu-quota     限制 CPU CFS(完全公平的调度器)配额
--cpu-shares,-c     CPU 股票(相对权重)
--cpuset-cpus       允许执行的 CPU (0-3, 0,1)
--cpuset-mems       允许执行的 MEM (0-3, 0,1)
--disable-content-trust true    跳过图像验证
--file,-f       多克档案的名称(默认是"路径/多克档案")(dockerfile脚本文件的所在位置)
--force-rm      始终拆下中间容器
--iidfile       将图像 ID 写入文件
--isolation     容器隔离技术
--label     为图像设置元数据
--memory,-m     内存限制
--memory-swap       交换限制等于内存加掉期:"-1",启用无限交换
--network       API 1.25+在构建过程中为 RUN 说明设置联网模式
--no-cache      在构建图像时不要使用缓存
--output,-o     API 1.40+输出目的地(格式:类型=本地,删除路径)
--platform      API 1.38+如果服务器具有多平台功能,则设置平台
--progress  auto    设置进度输出类型(自动、纯、tty)。使用普通显示容器输出
--pull      始终尝试拉取图像的新版本
--quiet,-q      在成功时抑制生成输出并打印图像 ID
--rm    true    成功构建后拆下中间容器
--secret        API 1.39+要暴露到生成的秘密文件(仅当已启用 BuildKit 时):ID=神秘,src=/本地/秘密
--security-opt      安全选项
--shm-size      大小 /开发/shm
--squash        实验(戴蒙)API 1.25+将新构建的层挤压成单个新层
--ssh       API 1.39+SSH 代理插座或密钥以暴露到构建(仅当已启用 BuildKit 时)(格式:默认|=id= |=键=
--stream        流连接到服务器以协商构建上下文
--tag,-t        以"名称:标签"格式命名并选择标签(就是新的镜像名字和版本标识)
--target        设置目标构建阶段以构建。
--ulimit        乌利米特选项

例子:docker build -f /jzk/docker/ceshi/dockerfilecentros -t jzk/centos0.1 . (执行dockerfilecentos 脚本文件,并新的镜像名字是jzk/centos0.1)(最后必须要有. 点很重要)

 22.1: docker bulider(build的管理命令,创建——build——删除)
3.删除生成缓存:
使用方法:docker builder prune
    --all,-a        删除所有未使用的生成缓存,而不仅仅是悬垂缓存
    --filter        提供筛选值(例如"直到+24h")
    --force,-f      不要提示确认
    --keep-storage      用于缓存的磁盘空间量

23.发布自己镜像

1.进入dockerHub页面

2.注册账号并登录

3.在服务器上提交自己的镜像

docker login

--password,-p密码
--password-stdin从斯坦丁取密码
--username,-u用户名

docker login -u jzk2020

输入密码 :

4.docker tag(标记 ID 引用的图像)

例子 docker tag 0e5574283393 fedora(docker的注册用户名,我的环境是jzk2020)/httpd:1.0(将带有 ID"0e5574283393"的本地图像标记到带有"版本1.0"的"Fedora"存储库中)

注意:删除tag标签引用必须要用标签名字和自己写的版本号

5.登录完毕后就可以提交镜像了,就是一步 docker push

--all-tags,-a将所有标记图像推入存储库
--disable-content-trusttrue跳过图像签名
--quiet,-q抑制冗长的输出

docker push jzk/centos-tomcat:1.0

docker logout:注销退出登录

24.发布到阿里云

1.登录阿里云

2.找到容器镜像服务

3.创建命名空间(在阿里云的容器镜像服务里创建)

4.创建容器镜像

5.浏览阿里云信息

6.根据阿里云的提示来做相应操作(只是虚拟实验并不是真是环境)

1. 登录阿里云Docker Registry

$ docker login --username=jzkadmin registry.cn-beijing.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

2. 从Registry中拉取镜像

$ docker pull registry.cn-beijing.aliyuncs.com/jzk-centos/centos-tomcat01:[镜像版本号]

3. 将镜像推送到Registry

$ docker login --username=**** registry.cn-beijing.aliyuncs.com
$ docker tag [ImageId] registry.cn-beijing.aliyuncs.com/jzk-centos/centos-tomcat01:[镜像版本号](必须是阿里云用户名的tag标签)
$ docker push registry.cn-beijing.aliyuncs.com/jzk-centos/centos-tomcat01:[镜像版本号]

请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

4. 选择合适的镜像仓库地址

从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-beijing.aliyuncs.com 作为Registry的域名登录。

5. 示例

使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。

$ docker imagesREPOSITORY ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TAG ? ? ? ? ? ? ? ? IMAGE ID ? ? ? ? ?  CREATED ? ? ? ? ? ? VIRTUAL SIZEregistry.aliyuncs.com/acs/agent ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  0.7-dfb6816 ? ? ? ? 37bb9c63c8b2 ? ? ?  7 days ago ? ? ? ?  37.89 MB$ docker tag 37bb9c63c8b2 registry-vpc.cn-beijing.aliyuncs.com/acs/agent:0.7-dfb6816

使用 "docker push" 命令将该镜像推送至远程。

$ docker push registry-vpc.cn-beijing.aliyuncs.com/acs/agent:0.7-dfb6816

25.docker save 和docker load

dockers save——将一个或多个图像保存到焦油存档(默认情况式传输到 STDOUT )

姓名,速记违约描述
--output,-o写到文件,而不是性病

例子1: dockers save 镜像名称 > 保存命名的压缩文件 (.tar)

例子2:--output的用法:

$docker save -o fedora-all.tar fedora
?
$ docker save -o fedora-latest.tar fedora:latest

使用 gzip 🔗将图像保存到焦油.gz文件

您可以使用 gzip 来保存图像文件,并使备份变小。

 ?  docker save myimage:latest | gzip > myimage_latest.tar.gz

docker load——从焦油存档或 STDIN 加载图像

姓名,速记违约描述
--input,-i从焦油存档文件中阅读,而不是从STDIN阅读
--quiet,-q抑制负载输出

例子1:docker load < busybox.tar.gz(加载由docker save 保存的压缩文件 busybox.tar.gz)

例子2:docker load --input fedora.tar (--input 的用法)

26.Docker 网络(ip addr 查看所有IP)

1.原理:

1.每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,j就会有一个网卡docker0

桥接模式,使用的技术是evth-pair技术

2.容器和容器之间是可以ping通的

3.每启动一个容器都会新添加一个带ip的网络(docker分配的)

结论:每个docker容器在不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可以ip

2.docker使用的是linux的桥接,宿主机中是一个docker容器的网桥-docker0, docker中的所有的网络接口都是虚拟的,虚拟的传达效率高

3.docker如果把某个容器删掉同时docker的分配的虚拟网卡会消失

2.--link(docker run里的一个容器网络连接功能)不常用

1.用法:

                --link      将链接添加到另一个容器
                --link-local-ip     容器 IPv4/IPv6 链路本地地址

2.技术应用:

1.可以实现容器和容器之间的网络互相ping通,(相当于路由条目) ? 2.先以启动的容器为目标(容器1),让容器2ping连接容器1——(docker run -it --name tomcat02 ---link tomcat01 tomcat)

这样容器2就可以连通容器1(相当于正向给一个路由条目,然而做了这个路由条目之后容器2只可以连通容器1,容器1反向连通不了容器2

因为少一个对应的路由条目)

3.容器2就在容器2本地配置了容器1的IP加到了自己的网络中(/etc/hosts)

3.docker network (docker 网络)

命令描述
docker network connect [docker网络连接]将容器连接到网络
docker network create [docker网络创建]创建网络
docker network disconnect [docker网络断开]将容器与网络断开连接
docker network inspect [docker网络检查]在一个或多个网络上显示详细信息
docker network ls [docker网络ls]列表网络
docker network prune [docker网络修剪]删除所有未使用的网络
docker network rm [docker网络rm]删除一个或多个网络

1.docker network connect [docker网络连接] ——将容器连接到网络

姓名,速记违约描述
--alias为容器添加网络范围别名
--driver-opt网络的驱动程序选项
--ipIPv4 地址(例如,172.30.100.104)
--ip6IPv6 地址(例如,2001:db8::33)
--link添加链接到另一个容器
--link-local-ip为容器添加链接本地地址

2.docker network create [docker网络创建]——创建网络

姓名,速记违约描述
--attachableAPI 1.25+ 启用手动容器附件
--aux-address网络驱动程序使用的辅助 IPv4 或 IPv6 地址
--config-fromAPI 1.30+ 复制配置的网络
--config-onlyAPI 1.30+ 创建仅配置网络
--driver,-dbridge管理网络的驱动程序
--gateway主子网的 IPv4 或 IPv6 网关
--ingressAPI 1.29+ 创建群路由网格网络
--internal限制外部访问网络
--ip-range从子范围分配容器 ip
--ipam-driverIP 地址管理驱动程序
--ipam-opt设置IPAM驱动程序特定选项
--ipv6启用 IPv6 网络
--label在网络上设置元数据
--opt,-o设置驱动程序特定选项
--scopeAPI 1.30+ 控制网络范围
--subnet以 CIDR 格式表示网络段的子网

3.docker network disconnect [docker网络断开]——将容器与网络断开连接

姓名,速记违约描述
--force,-f强制容器与网络断开连接

4.docker network inspect [docker网络检查]——在一个或多个网络上显示详细信息

姓名,速记违约描述
--format,-f使用给定的 Go 模板格式化输出
--verbose,-v用于诊断的冗长输出

5.docker network ls [docker网络ls]——列表网络

姓名,速记违约描述
--filter,-f提供筛选值(例如"驱动+桥")
--format使用 Go 模板的漂亮打印网络
--no-trunc不要截断输出
--quiet,-q仅显示网络 ID

6.docker network prune [docker网络修剪]—— 删除所有未使用的网络

姓名,速记违约描述
--filter提供筛选值(例如"直到<时间戳>")
--force,-f不要提示确认

7.docker network rm [docker网络rm]——删除一个或多个网络

删除网络

要删除名为"我的网络"的网络:

  $ docker network rm my-network

删除多个网络

要在单个命令中删除多个网络,请提供多个网络名称或 ID。以下示例删除带有 ID 的网络和名为:docker network rm``3695c422697f``my-network

  $ docker network rm 3695c422697f my-network

当指定多个网络时,命令会尝试依次删除每个网络。如果删除一个网络失败,命令将继续到列表中的下一个网络,并尝试删除该命令。命令报告每次删除的成败。

4.网络模式:

bridge:桥接 docker默认

none : 不配置网络

host : 和宿主机共享网络

container : 容器网络连通(用的少)

1.自定义网络

例子:docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet (创建一个新的docker网络,名称为mynet)

docker run -it -P --name tomcat-net-01 --network mynet tomcat

docker run -it -P --name tomcat-net-02 --network mynet tomcat

启动两个容器并以--net来连接网络,这样这个容器会分配mynet网络的网络ip,并且这两个容器可以互通。

2.网络连通(不同网络网段)

例子:docker network connect mynet tomcat03(让mynet的自定义网络连接到另一个自定义网络的tomcat03容器) ? connect会将tomcat03加到自己的自定义网络mynet中并分配一个ip,使其可以连通

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 12:07:58  更:2021-08-16 12:09:10 
 
开发: 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年12日历 -2024/12/28 18:57:34-

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