docker 基本命令

docker 笔记(部分)

  • 查看docker的基本信息

docker version

docker info

docker image ls //查看镜像

docker image rm imageName//删除imageName

docker container run imageName //run imageName(如果image imageName不存在会去拉取)

docker container ls -a//查看所有container和其状态

docker container stop containerName or ID //stop container

docker container rm ID //删除container

docker container start ID//运行一个创建了但是停掉了的container

docker container ps -aq //列出所有container id

docker container stop $(docker container ps -aq) //停止所有的container

不能直接删除一个run 的container,但是可以-f 强制删除

容器的两种模式attached(前台) detached(后台)

docker image run -d -p 80:80 nginx //后台运行detach

docker attach id //detach -->attach

docker container logs id 查看detach的 id的 logs

docker container logs -f id// 动态跟踪

  • 交互:

docker exec -it ID sh(经常用)//进入一个正在运行的容器内部shell

docker container run -it containerName sh // 创建一个容器并且进入交互式模式

docker container top id

  • docker container run -d --p 80:80 --name 容器别名 nginx

上面命令执行的细节:

1.在本地查找是否有nginx这个image镜像,但是没有发现去远程的image registry查找nginx镜像(默认的registry是Docker Hub),而且下载最新版本的nginx镜像 (nginx:latest 默认)

2.基于nginx镜像来创建一个新的容器,并且准备运行

3.docker engine分配给这个容器一个虚拟IP地址

4.在宿主机上打开80端口并把容器的80端口转发到宿主机上

5.启动容器,运行指定的命令(这里是一个shell脚本去启动nginx)

  • image获取:

1.docker hub

docker image pull imageName:版本号//拉取image,版本号默认为lasted

docker image inspect imageId // 查看image详细信息.

docker image rm id(只有coantainer里面也rm 了才可以删除,stop也不行,或者强制删除)

2.离线导入导出

docker image save imagename -o filename//将image导出为一个文件

docker image load -i filename

3.dockerfile

docker image build -f dockerfilename -t imageName:tag .(.表示当前目录)

docekr image push userID/imageName:tag //push自己的image到docker hub.

docker image pull userID/imageName:tage//拉取user的版本为tag的image到本地.

  • docker commit

docker container commint containerID imageName:tag //将一个container 打包成一个image(用的少)

  • scratch

是一个空的镜像,什么都没有

dockerfile

镜像选择原则

官方镜像优于非官方的镜像,如果没有官方镜像,则尽量选择Dockerfile开源的

固定版本tag而不是每次都使用latest

尽量选择体积小的镜像

docker image build -f dockerFileNmae -t imageName .//将dockerFileName 构建为名字为imageName的镜像 .表示当前路径

  • FROM 选择基础镜像

  • RUN 主要用于在Image里执行指令,比如安装软件,下载文件等。尽量把语句写一个run里面

  • 文件复制和目录操作,COPY ADD

把本地的一个文件复制到镜像里,如果镜像没有目标文件,则会自动创建。比如把本地的 hello.py 复制到 /app 目录下。 /app这个镜像不存在,则会自动创建。

ADD和COPY区别就是复制的是一个gzip等压缩文件时,ADD会帮助我们自动去解压缩文件。需要自动解压缩的场合使用 ADD。

  • WORKDIR: 切换当前镜像的目录,如果不存在就创建目录
  • ENV ARG 环境变量

ENV 设置的变量可以在Image中保持,并在容器中的环境变量里

ARG 可以在镜像build的时候动态修改value, 通过 --build-arg

  • 容器启动命令CMD ENTRYPOINT:CMD可以用来设置容器启动时默认会执行的命令。

注意:如果docker container run启动容器时指定了其它命令,则CMD命令会被忽略并且如果定义了多个CMD,只有最后一个会被执行。但是ENTRYPOINT一定会执行**

  • DockerFile 技巧

1.合理使用缓存,把改变的尽量放到后面。

2.合理使用 .dockerignore

3.镜像的多阶段构建

4.尽量使用非root用户

docker的存储

Docker主要提供了两种方式做数据的持久化

  • Data Volume, 由Docker管理, 持久化数据的最好方式
  • Bind Mount,由用户指定存储的数据具体mount在系统什么位置

docker volume ls //查看volume DIRVER 和 VOLUMENAME

docker volume inspect VOLUMENAME //查看volume详细信息

dcoker volume prune //一次性删除所有volume

docekr container run -v localDir:containerDir imageName //把本地文件作为volume映射到容器。(如果两个不同的容器映射同一个本地的文件,在A容器里面修改volume对B容器可见)

Bind Mount

用户自己指定host机器的目录mount到container中。但是bind mount在不同的宿主机系统时不可移植的,比如Windows和Linux的目录结构是不一样的,bind mount所指向的host目录也不能一样。所以bind mount不能出现在Dockerfile中的原因,因为这样Dockerfile就不可移植了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,475评论 4 372
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,744评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,101评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,732评论 0 221
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,141评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,049评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,188评论 2 320
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,965评论 0 213
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,716评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,867评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,341评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,663评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,376评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,200评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,990评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,179评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,979评论 2 279

推荐阅读更多精彩内容

  • 课程链接:https://www.imooc.com/video/15640 Linux安装docker命令 wg...
    三忌阅读 231评论 0 0
  • Docker 笔记来源:https://docs.docker.com/ 和 《docker 容器和容器云》 此笔...
    WunHwan阅读 389评论 0 2
  • 摘自《Docker 容器与容器云(第2版)》点击查看我的博客原文 1. 从容器到容器云 1.1 云计算平台 经典云...
    苏易北阅读 2,116评论 0 6
  • 1、Docker简介 开源的应用容器引擎 打包环境和应用到一个轻量级,可移植的容器中,发布到任何 Linux 机器...
    Assassin007阅读 259评论 0 0
  • docker概念 镜像与容器 docker镜像是一个统一文件系统,由一系列只读层堆叠而成。容器则是在只读层堆顶加上...
    羽色云烟阅读 655评论 0 0