Docker笔记

资源
7 步精简 Docker 镜像几百MB(上)
Dockerfile最佳实践
Docker中文文档

安装Docker

#安装Docker
wget -qO- https://get.docker.com/ | sh

#设置开机自启
sudo systemctl enable docker
sudo systemctl start docker

#添加用户到docker组,后续不用每次都sudo执行命令
sudo groupadd docker
sudo usermod -aG docker $USER

镜像管理

#镜像仓库
docker search   搜索镜像,如 docker search ubuntu 
docker pull    从docker-hub下载镜像,docker pull ubuntu:16.04
docker login   登录docker-hub账号,方便后面将自己的镜像同步到docker-hub服务器端
docker push   将自己建立的镜像同步到docker-hub中

#本地镜像管理
docker images   查看本地镜像
docker rmi   删除指定镜像,可指定-f参数强制删除
docker tag   标记某镜像,docker tag ubuntu:15.10 runoob/ubuntu:v3,将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像
docker history   查看镜像的创建历史
docker save   将指定镜像打包,docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3,将镜像runoob/ubuntu:v3 生成my_ubuntu_v3.tar文档
docker import   从归档文件中创建镜像,docker import  my_ubuntu_v3.tar runoob/ubuntu:v4,从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为runoob/ubuntu:v4
docker build   从dockerfile创建镜像,docker build  -t biodocker:v1 .

容器操作

docker ps    列出运行的容器的信息
docker inspect    获取容器/镜像的元数据
docker top   查看容器中运行的进程信息,支持 ps 命令参数,docker top mymysql
docker attach :连接到正在运行中的容器
docker events   从服务器获取实时事件
docker logs   获取容器的日志,docker logs -f mynginx,跟踪查看容器mynginx的日志输出
docker port   列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口,docker port mymysql,查看容器mynginx的端口映射情况
docker cp   主机与容器之间的数据拷贝,docker cp /www/runoob 96f7f14e99ab:/www/,将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下
docker commit   从容器创建一个新的镜像
docker diff   检查容器里文件结构的更改
docker run   创建一个新的容器并运行命令,常用方式为docker run -it ubuntu:16.04
docker start/stop/restart   启动,停止,重启一个容器,docker start ubuntu
docker kill   杀掉一个运行中的容器
docker rm   删除一个容器
docker pause/unpause   暂停/恢复容器中所有的进程
docker exec   在运行的容器中执行命令,docker exec -it mynginx /bin/sh /root/runoob.sh,在容器mynginx中以交互模式执行容器内/root/runoob.sh脚本

#################################################################
一个使用dockerfile创建镜像的栗子:

docker build --no-cache=true -t biodocker:v1
# --no-cache:不使用缓存,每条指令都重新生成镜像(速度会很慢)
# -f:明确指定Dockerfile
# -t:给生成的镜像打上标签

dockerfile中的命令

FROM

第一条指令必须为 FROM 指令。并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个 FROM 指令(每个镜像一次)。
格式为 FROM <image>FROM <image>:<tag>

MAINTAINER

格式为 MAINTAINER <name>,指定维护者信息。

RUN

把复杂的或过长的 RUN 语句写成以 \ 结尾的多行的形式,以提高可读性和可维护性。

RUN apt-get update && apt-get upgrade -y && \
    apt-get install -y \
    bzip2 \
    wget
EXPOSE

在Dockerfile中你可以映射私有和公有端口,但永远不要通过Dockerfile映射公有端口。这样运行多个镜像的情况下会出现端口冲突的问题。

EXPOSE 80:8080    # 80映射到host的8080,不提倡这种用法
EXPOSE 80   # 80会被docker随机映射一个端口
ADD COPY

虽然 ADDCOPY 功能类似,但推荐使用 COPYCOPY 只支持基本的文件拷贝功能,更加的可控。而 ADD 具有更多特定,比如tar文件自动提取,支持URL。 通常需要提取tarball中的文件到容器的时候才会用到 ADD

CMD ENTRYPOINT

配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。
每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。
CMDENTRYPOINT 支持两种语法:

CMD /bin/echo
CMD ["/bin/echo"]
VOLUME

格式为 VOLUME ["/data"]
创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。

USER

指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。

WORKDIR

WORKDIR 的路径始终使用绝对路径可以保证指令的准确和可靠。 同时,使用 WORKDIR来替代 RUN cd ... && do-something 这样难以维护的指令。
格式为 WORKDIR /path/to/workdir
为后续的 RUNCMDENTRYPOINT 指令配置工作目录。

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

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,468评论 0 120
  • docker基本概念 1. Image Definition 镜像 Image 就是一堆只读层 read-only...
    慢清尘阅读 8,720评论 1 21
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,734评论 0 7
  • “诶,你们知道吗?前日京城里来了两位神探,是皇帝陛下特地聘来查这次案件的。” “对啊,听说还只是两个女子,其中年小...
    原小尚阅读 427评论 4 3
  • 《正义联盟》终于上映了,这个霸占了IMAX预告整整大半年的电影,我跟着期待了整整大半年的DC英雄片终于在我不知道的...
    思伊Yukrystal阅读 725评论 1 2