docker使用教程

前言

网上安装教程很多,ubuntu下的docker安装较为简单,具体的docker的安装教程网上搜索即可。

一、启动docker服务

首先测试docker是否已经启动,测试命令采用查看版本信息命令

docker --version

使用结果出现如下图所示:
在这里插入图片描述
提示:Cannot connect to Docker daemon. Is the docker daemon runing on this host,说明docker 服务未启动,需要启动docker服务

su root                 #切换到root用户
systemctl enable docker #设置开机自动启用docker服务

systemctl start docker  #启动docker 服务
或者
service docker start    #启动docker 服务
或者
start docker

2、关闭docker服务

关闭docker服务

service docker stop

或者

systemctl stop docker

Docker的镜像称为image,容器称为container。

对于Docker来说,image是静态的,类似于操作系统快照,而container则是动态的,是image的运行实例。

比如,有一个image名称为ubuntu,那么比如现在我们启动这个image的container并且进入到这个container的bash命令行中:

docker run -t -i ubuntu /bin/bash
docker run -it --name test ubuntu /bin/bash

其中的各个命令的结束如下所示:

  • docker run:启动container
  • ubuntu:你想要启动的image
  • -t:进入终端
  • -i:获得一个交互式的连接,通过获取container的输入
  • /bin/bash:在container中启动一个bash shell
    –name 表示命名容器

这样就进入container的内部了:
在这里插入图片描述
如果有运行中的container,可以在container所在的外部操作系统中运行:

docker ps

查看历史信息所运行的容器(container)包括运行中的,以及未运行的或者说是沉睡镜像。

docker ps -a

如果要退出就:

Ctrl-D

或:

root@af8bae53bdd3:/# exit

如果想再次打开这个container,运行:

docker start goofy_almeida

其中“goofy_almeida”是容器的名称。

3、进入container(容器)

使用“docker attach”命令进入
这个时候container运行在后台,如果想进入它的终端,则:

docker attach goofy_almeida

就可以了。

使用“docker exec -it”命令进入
使用“docker attach”命令进入container(容器)有一个缺点,那就是每次从container中退出到前台时,container也跟着退出了。

要想退出container时,让container仍然在后台运行着,可以使用“docker exec -it”命令。每次使用这个命令进入container,当退出container后,container仍然在后台运行,命令使用方法如下:

docker exec -it goofy_almeida /bin/bash
  • goofy_almeida:要启动的container的名称
  • /bin/bash:在container中启动一个bash shell

这样输入“exit”或者按键“Ctrl + C”退出container时,这个container仍然在后台运行,通过:

docker ps

就可以查找到。
退出container
输入:

exit

或者按键:

Ctrl + D

4、编写Dockerfile

  • Dockerfile中的每个指令执行完毕之后,都会提交为一个新的image,这样保证了指令之间不会相互影响
  • Dockerfile会尽可能的尝试重用之前已经构建的镜像
  • 可以通过在build命令中增加-no-cache的方式来金庸cache

docker需要注意的地方:

  • 只支持docker自己定义的一套指令,不支持自定义
  • 大小写不敏感,但是建议全部使用大写 根据dockerfile的内容顺序执行

docker指令:

FROM{基础镜像}

必须放在Dockfile的第一行,表示从哪个Baseimage开始构建。

RUN

  • 每一个RUN指令都会在一个新的container里边运行,并提交为一个image(镜像)作为下一个RUN的base
  • 一个Dockerfile中可以包含多个Run,按照定义顺序执行。 RUN支持两种运行方法
  • RUN这个会当作/bin/sh -c ”cmd“运行
  • RUN[”executable“,”arg1“,…],Docker会当成json的序列来解析,因此,必须使用双引号,而且executable需要是完整的路径

CMD

  • CMD的作用是作为知悉ingContainer时候的默认行为
  • 当运行Container的时候生命力Command,则不再使用image中的CMD所定义的命令
    一个Dockerfile中只能有一个有效的CMD,当定义多个CMD的时候,只能有最后一个才会起作用。

CMD定义的三种方式

  • CMD这个会当作/bin/sh -c ”cmd“来执行
  • CMD[“executable”,“arg1”,“arg2”]
  • CMD[“arg1”,“arg2”],这个时候CMD作为ENRYPOINT的参数

ENTRYPOINT

  • ENTRYPOINT的作用是把整个Container变成了一个可执行的文件,这样不能够通过替代CMD的方法来改变创建Container的方式,但是可以通过参数传递的方式,影响到Container的内部。

  • 每个Dockerfile只能够包含一个ENTRYPOINT,多个ENTRYPOINT只能最后一个能有效

  • 当定义了ENTRYPOINT以后,CMD只能够作为参数进行传递。

ADD&COPY

  • 当再源代码构建的方式下,可以通过ADD和COPY的方式,把Host上的文件或者目录复制到image
  • ADD&COPY的源必须再context路径下
  • 当src为网络URL的情况下,ADD只能可以把它下载到Dest的指定位置,这个再任何build情况的方式下都可以Work

ENV
ENV key value

  • 用来设置环境变量,后续的RUN可以使用它所创建的环境变量
  • 当创建基于该镜像的Container的时候,会自动拥有设置的环境变量

ONBUILD

  • ONBUILD作为一个trigger的标记,可以用来trigger任何Dockerfile中的指令 可以定义多个ONBULILD指令

  • 当下一个镜像B使用镜像A作为Base的时候,再FEOM A指令前,会先按照顺序执行再构建A时候定义的ONBUILD指令

  • ONBUILD<DOCKERFILE指令><Content>

VOLUME
用来创建一个再image之外的mount point 用来再多个Container之间实现数据共享,
运行使用Json array的方式定义多个Volume VOLUNE["/val/data1","/val/data2"]
或则plain text的情况下定义多个VOLUME指令。

5、创建镜像

首先需要创建一个Dockerfile文件
在这里插入图片描述
执行构建命令: docker build -t second:v1.0 .

注意最后有个点,代表使用当前路径的 Dockerfile 进行构建 ,

-t second : v1.0 给新构建的镜像取名为 second, 并设定版本为 v1.0 。
在这里插入图片描述
docker build: 用 Dockerfile 构建镜像的命令关键词。
[OPTIONS] : 命令选项,常用的指令包括 -t 指定镜像的名字,
-f 显示指定构建镜像的 Dockerfile 文件(Dockerfile 可不在当前路径下),
如果不使用 -f,则默认将上下文路径下的名为 Dockerfile 的文件认为是构建镜像的 “Dockerfile” 。
上下文路径|URL: 指定构建镜像的上下文的路径,构建镜像的过程中,可以且只可以引用上下文中的任何文件 。

可以用docker images 查看是否构建成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

绛洞花主敏明

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

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

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

打赏作者

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

抵扣说明:

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

余额充值