Docker 备忘

Stella981
• 阅读 454
  • C/S架构:
    •   客户端发出命令给服务器端(内含守护进程),守护进程执行命令后将结果传回给客户端。(可以远程访问,可以本地访问)
  • 容器内部操作:

  Docker 备忘 Docker 备忘

可写层下面都是只读的,操作时需要什么文件会被复制到可写层,原来只读的文件会被隐藏

Docker的操作

  • service docker start #启动服务

  • docker search tutorial       #寻找名字叫做tutorial的镜像名称

容器的操作

  花式启动:

  • docker run learn/tutorial echo 'fuck the world' #利用指定镜像启动一个容器,并执行指定命令
  • docker run learn/tutorial apt-get install ping   #利用指定镜像启动一个容器,并安装软件,此处操作均位于读写层
  • docker run 镜像名字 命令 命令的参数              #这种执行过一次命令之后容器就停止了
  • docker run --name=自定义容器名  -i -t ubuntu /bin/bash      #自定义容器的名字,利用ubuntu镜像启动交互式容器
  • docker run  -i -t image  /bin/bash                       #启动一个交互式的容器,这样可以不断交互的使用容器 -i是启动输入 -t是分配tty
  • docker exec -it 容器ID bash

查看容器与情况

  • docker ps -l  或 -a         # -l是查看最新运行的容器,还可以看到容器的状态、执行的命令, -a是查看所有的容器
  • docker ps                      #查看正在运行的容器
  • docker inspect 16cce3a57417 #后接容器名字或ID。查看容器的参数,包括执行的命令、对应的物理路径
  • docker logs [-t 时间戳][-f  一直跟随日志][--tail 10  只显示最新的10条] 容器名或ID   #查看容器内部运行情况(命令和输出)
  • docker top 容器名或ID      #查看容器内的进程情况

  容器的其他操作

  • docker start -i 容器名字或ID   #启动已停止的容器  -i为交互式
  • docker rm 容器ID或名字        #删除已经停止的容器
  • docker  start/stop/restart  -i  容器名字或ID   #重启、停止
  • docker kill 容器名字或ID      #强行直接停止容器

  有关守护模式

  • docker 进入容器后  按下ctrl+P  和ctrl+Q来以守护模式运行docker。守护模式不可交互,通常用来运行应用或者服务
  • docker attach  容器名或ID  从守护模式中重新进入交互模式
  • docker run -d ubuntu  /bin/sh  -c "while 1;do echo fucktheword;sleep 1;done"    # -d代表deattach,从镜像中后台运行,相当于守护模式
  • docker exec -it -d  容器ID或名字 /bin/bash           #在正在运行的容器里增加进程 (-i -t 启用输入、tty  -d:dettach 后台运行)可配合监控服务来监督docker,补刀一个命令

容器的端口映射

  • docker run -P -i  -t ubuntu /bin/bash   #自动随机映射端口
  • Docker 备忘 # 指定映射端口,如果不指定 在第二次运行容器时容器的IP、宿主机被映射的端口会改变
  • docker run --name='fuck' -p 8188:80 -p 8187:443 -i -t webdevops/php-nginx /bin/bash  #通过-p可以连续指定多个端口映射,是最常用的宿主机/容器映射方法
  • docker port ID或容器名   #查看映射情况

 镜像的操作      存储:/var/lib/docker  修改源环境:https://blog.csdn.net/michel4liu/article/details/80747676

cat  /etc/docker/daemon.json
{
  "registry-mirrors": ["https://0gkz13he.mirror.aliyuncs.com"]
}

  概念:仓库(repostoary)、源(register)、TAG,仓库:tag可以表示唯一镜像。这里一个一个源头是众多仓库的集合,一个仓库可以有很多镜像(用tag区分),即便一个镜像也可以有不同tag

  • docker pull learn/tutorial   #下载对应的镜像,这里包括  用户名/镜像名
  • docker commit 16cce3a57417 learn/ping    #根据容器更改提交一个镜像,后面接目前容器的ID和 自定义的镜像名字
  • docker images 镜像ID或仓库:tag              #查看对应的镜像
  • docker images                #查看当前有哪些镜像,分别有镜像ID、名称、时间、大小
  • docker  rmi  仓库名:TAG   #仅删除当前TAG
  • docker rmi    镜像ID          # 直接删除镜像及其所有TAG
  • docker push learn/ping #将镜像上传到docker hub或其他镜像仓库
  • docker search  [-s 3]  镜像名       #寻找镜像,对应的 -s 3 寻找3星以上的仓库
  • docker pull   [-a]    仓库名:TAG     #下载对应的仓库和TAG  不添加TAG默认拉latest,加上-a默认拉仓库的所有tag

容器及镜像的备份迁移:

  • docker commit -p 233afe104f41(容器ID)  nginxbackup(自拟定)    #将容器备份成镜像
  • docker save -o ~/nginxback.tar  nginxbackup            #将镜像打包为tar文件存到指定目录
  • docker load -i  ~/nginxback.tar           #将备份的文件恢复为镜像
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这