Docker常用操作命令

Docker 三大组件

仓库:存放各种各样已经打包好的Docker应用
镜像:按照Docker的规则制作的应用。类似操作系统iso,通过其完成各种应用的部署
容器:;利用镜像创建容器:启动预先定义好的进程与用户交互,对提 供服务。类似虚拟机本身(可以启动,停止,删除),一个镜像可以创建多个名字不同的容器。

容器

create

docker create 创建一个新容器..
docker create ubuntu:latest
用docker create 容器处于停止状态,需docker start +容器ID 启动

run

Docker run :创建一个新的容器并运行一个命令
是docker create 和 docker start 组合

-name 指定容器名字
-i让容器标准输入打开,通常与 -t 同时使用;
-t为容器重新分配一个伪输入终端
-it以交互式进入容器
-d 指定容器运行于前台还是后台
-p 指定容器暴露的端口
-e 指定环境变量
--env 从指定文件读入环境变量
--link添加链接到另一个容器

#启动centos里面的bash并且进行交互式操作
docker run -it centos /bin/bash

 #进入该容器
docker exec -it ID /bin/bash

#进入该容器,退出,容器会停止运行
docker attach +ID /bin/bash 


 #没有直接进入该界面,其在后台运行
docker run -itd centos /bin/bash

#-name给容器自定义名字
docker run -itd --name web centos:latest bash 

#--rm让容器退出后直接删除,(不能和-d使用)
docker run --rm -it centos bash -c "sleep 30" 

#镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data1映射到容器的/data
docker run -p 80:80 -v /data1:/data -d nginx:latest

attach/ exec

docker exec :进入容器内运行命令
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端

以root身份进入该容器,并启动一个bash,可以连续执行命令
docker exec -it 容器名/ID /bin/bash
exit 退出

docker attach进入后台运行容器
docker attach 容器名/ID
Ctrl + q退出,容器也会停止

attach与exec主要区别
attach直接进入容器启动命令的终端,不会启动新的进程.T退出容器会停止而exec不会
exec 在容器中打开新的终端,并且可以启动新的进程

rm

docker rm :删除一个或多少容器
-f :通过SIGKILL信号强制删除一个运行中的容器
-v :-v 删除与容器关联的卷

# 删除所有已经停止的容器
docker rm $(docker ps -qa)  

#批量删除所有退出容器
docker rm  $(docker -qa -f status=exited)   

#杀死所有正在运行的容器
docker kill $(docker ps -qa)   

ps

docker ps 列出容器正在运行显 = docker container ls
-a 显示所有的容器,包括未运行的
-q 显示容器 ID
--no-trunc:显示完整id号(128位)默认显示16位
-s 显示容器文件大小
-l 最近创建容器
通常使用
docker ps -qa

pause/unpause

让容器暂停工作且不占用CPU
暂停
docker pause +names
恢复
docker unpause +names

start/stop/restart/kill

docker start +names
docker stop +names
docker kill +names #快速终止
docker restart +names

#无论容器因何种原因退出,都立即重启  --restart=always
docker run -d -restart=always httpd

#如果启动进程退出代码非0,则重启容器,最多重启3次
docker run -d  --restart=on-failure:3  httpd

rename

docker rename 原容器名 新容器名

export/import

docker export导出容器,可以迁移到其他机器
docker import 将导入的文件。成为镜像

将容器生成文件
docker export container_id>file.tar
cat file.tar|docker import – wu #生成wu镜像

docker基本信息

显示 容器 详细信息
docker inspect 容器

获取容器的运行历史信息
docker logs +容器
-f 跟踪守护式容器的日志
-s 最新日志

eg:
docker run -d centos bash -c "while:;do ehco "123";sleep 1;done"
docker logs +ID #会显示123
可用docker stop ID 终止掉

docker top 容器进程
docker top + 容器
docker stats 容器占用系统资源情况
docker diff containerID
列出改动了容器的存储层
显示一个镜像的历史
docker version #查看版本
docker info //查看docker系统的信息

镜像

images

docker images : 列出本地镜像 或 docker image ls (--help)
-a 显示所有镜像
-q 只显示镜像ID
--no-trunc :显示完整的镜像信息

#列出镜像
docker images 

#显示具体镜像信息
docker images hello-world

#直接列出镜像包含镜像ID和仓库名
docker images --format "{{.ID}}: {{.Repository}}"

pull

docker pull : 从镜像仓库中拉取(下载)或者更新指定镜像
格式:docker pull [选项] [Docker Registry地址]<仓库名>:<标签>

#从docker hub拉取ubuntu镜像
docker pull ubuntu \\默认下载最新
docker pull Ubuntu:14.04 \\指定下载版本

#从私有库拉取ubuntu镜像
docker pull 192.168.200.11:5000/ubuntu/14.04.3.tar:latest

#3 从hub.c.163.com仓库拉取镜像
docker pull hub.c.163.com/library/mysql:latest
:latest 标记最新版本
本地镜像都保存在docker宿主机的/var/lib/docker目录下

push

docker push + name 上传镜像到仓库(默认上传到DockerHub官方仓库)

# 将本地镜像test:latest 添加新的标签user/test:latest
docker tag  test:latest  user/test:latest 
docker push user/test:latest

save/load

docker save:把现有镜像,导出一个文件
docker load:将该文件恢复本地镜像

#把现有镜像,导出一个文件
docker save -o aming-centos.tar aming/centos(现有镜像或ID都行)

#使用该文件恢复本地镜像
docker load < aming-centos.tar

commit

运行容器时,做的任何文件修改都会被记录于容器存储层里。且docker commit ,可以将容器的存储层保存下来成为镜像

增量的生成一个镜像。将容器保存为一个镜像(可标注镜像名和作者信息)当没有镜像名也成悬挂镜像

docker commit :从容器创建一个新的镜像。
格式:docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
-q 显示Image ID
--no-trunc 显示完整长度Image ID

步骤

  1. 运行容器
  2. 修改容器
  3. 将容器保存为新的镜像

运行ubuntu镜像,并进入交互模式
docker run –it centos –name wzs
yum –y install vim #在centos镜像中添加vim工具
docker ps #查看容器名
docker commit +容器名 +自定义名
docker images #查看镜像

#将容器保存为镜像
docker commit \
    --author "Tao Wang <twang2218@gmail.com>" \
    --message "修改了默认网页" \
    webserver \
nginx:v2
#或者
docker commit -a “wzs” -m “install httpd” +ID(写前几位就行) +新容器名字
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容