Docker学习笔记

Docker

查看容器日志

docker logs -f 容器id/name

查看容器内运行进程

docker top 容器id/name

检查容器底层信息

docker inspect 容器id/name

它会返回一个json文件,包含docker容器的配置和状态信息

查看容器占用磁盘大小

docker system df

# 查看 每个 image、container 详细大小:
docker system df -v

其他

  • 查询最后一次创建的容器:docker ps -l

Docker容器使用

创建容器

docker run -v </本地绝对路径>:</容器内绝对路径> -it ubuntu /bin/bash
  • -i: 交互式操作
  • -t: 终端
  • ubuntu: ubuntu 镜像
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
  • -v /本地绝对路径:/容器内绝对路径:将目录挂在到容器中,方便数据共享,数据持久化,独立于容器的生存周期
  • -v /本地绝对路径:/容器内绝对路径:roro表示 readonly 只读权限。

查看所有容器

docker ps -a

启动已停止运行的容器

docker start 容器id/name

后台运行

docker run -itd -P --name 别名 镜像名 /bin/bash
  • -d: 后台运行,加上此参数,默认不会进入容器
  • --name: 容器名称, 可以不指定,默认是随机生成的

停止容器

docker stop 容器id/name

重启容器

docker restart 容器id/name

进入容器

容器在后台运行时,此刻想进入容器,可以使用如下命令:

  • attach,此命令exit退出时会停止容器
docker attach 容器id/name
  • exec, 此命令exit退出时不会停止容器
docker exec -it 容器id/name /bin/bashsh

导出容器快照文件

docker export 容器id/name > 导出路径/快照name.tar   

导入容器快照文件

  • 使用备份文件导入
docker import 快照name.tar 镜像name
  • 使用url或者某个目录导入
docker import http://example.com/exampleimage.tgz example/imagerepo

删除容器

删除容器时,容器必须是停止状态,否则会报错

docker rm -f 容器id/name

容器网络

  • -P: 启动容器后,自动创建端口映射,将容器内使用的端口随机映射到主机上
  • -p 5000:5000: 将容器内使用的5000端口映射到主机上的5000端口
  • 查看容器端口映射情况, docker port 容器id/name

Docker镜像使用

列出本地镜像列表

docker images
  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

同一仓库镜像可以有多个tag,代表不同的版本,使用REPOSITORY:TAG来定义不同的镜像

获取/载入 镜像

# 使用docker pull来获取ubuntu镜像
docker pull ubuntu

查找镜像

docker hub 网址为 https://hub.docker.com/

docker search httpd
  • NAME: 镜像仓库源的名称
  • DESCRIPTION: 镜像的描述
  • OFFICIAL: 是否 docker 官方发布
  • stars: 类似 Github 里面的 star
  • AUTOMATED: 自动构建

删除镜像

docker rmi 镜像id/name

创建镜像

  • 从已经创建的容器中更新镜像,并且提交这个镜像 更新镜像
  • 使用Dockerfile指令来构建镜像 构建镜像

更新镜像

docker run -t -i ubuntu:15.10 /bin/bash
docker commit -m="has update" -a="update" 镜像id update/ubuntu:v2

构建镜像

docker build -t ubuntu:v2 .
  • -t ubuntu:v2: 指定创建的镜像名称
  • .: 指定当前目录,Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

设置镜像标签

docker tag 镜像ID update/ubuntu:v2

Dockerfile

FROM 基础镜像

为映像构建指定基础镜像,会先在docker主机上查找该基础镜像,如果不存在会从docker hub上查找拉取。

# FROM语法
FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>
# <image>:指定作为base image的名称
# <tag>:base image的标签,为可选项,省略时默认为 latest;
# <digest>为校验码
FROM <image> [AS <name>] 指定从一个镜像构建起一个新的镜像名字
FROM <image>[:<tag>] [AS <name>] 指定镜像的版本 Tag

MAINTANIER(已经废弃,使用LABEL更加灵活)

# MAINTANIER语法
MAINTAINER  <name> <email>

LABEL

如果 base image 中也有标签,则继承,如果是同名标签,则覆盖。 为了减少图层数量,尽量将标签写在一个 LABEL 指令中去

# LABEL语法
LABEL <key>=<value> <key>=<value> <key>=<value> ...

WORKDIR

为接下来的 Dockerfile 指令指定当前工作目录,RUN、CMD、COPY、ADD 的工作目录都会同步变更

# WORKDIR语法
WORKDIR <path>
WORKDIR /app/test

ENV

在构建的镜像中设置环境变量,在后续的 Dockerfile 指令中可以直接使用,也可以固化在镜像里,在容器运行时仍然有效

# ENV语法
# 如果<value>中存在空格,需要转义或用引号"括起来
ENV <key>=<value> <key>=<value> <key>=<value> ...
# 如果 base image 中也有环境变量,则继承,如果是同名环境变量,则覆盖。 为了减少图层数量,尽量将环境变量写在一个 ENV 指令中去

也可以在容器运行时指定环境变量,替换镜像中的已有变量, docker run --env <key>=<value> 。 使用ENV可能会对后续的 Dockerfile 指令造成影响,如果只需要对一条指令设置环境变量,可以使用这种方式: RUN <key>=<value> <command>

VOLUME

挂在目录到容器内,指定数据持久化的目录,官方语言叫做挂载

VOLUME ["宿主机绝对路径"]

Docker挂载主机目录后Docker访问出现cannot open directory .: Permission denied
解决办法: 在挂载目录后多追加一个 --privileged=true即可

RUN

# 构建镜像时要执行的命令

RUN <command>
RUN ["executable", "param1", "param2"]

ADD

# 将本地的文件添加复制到容器中去,压缩包会解压,可以访问网络上的文件,会自动下载

ADD ["<src>",... "<dest>"]

COPY

功能和 ADD 一样,只是复制,不会解压或者下载文件

CMD

# 启动容器后执行的命令,和 RUN 不一样,RUN 是在构建镜像是要运行的命令
当使用 docker run 运行容器的时候,这个可以在命令行被覆盖
CMD ["executable", "param1", "param2"]

ENTRYPOINT

# 执行命令,和 CMD 一样,只是这个命令不会被命令行覆盖
ENTRYPOINT ["executable", "param1", "param2"]

EXPOSE

# 暴露对外的端口(容器内部程序的端口,虽然会和宿主机的一样,但是其实是两个端口)
EXPOSE <port>
EXPOSE 80
# 容器运行时,需要用 -p 映射外部端口才能访问到容器内的端口

USER

指定运行命令时所使用的用户

USER <user>:[<group>]
USER test

ARG

设置构建镜像是要传递的参数

ARG <name>[=<value>]
ARG name=demo
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ljjopq123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值