docker之入门基础(一) - 概念与介绍

docker学习

学习链接:
https://yeasy.gitbooks.io/docker_practice/introduction/what.html
https://www.cnblogs.com/boshen-hzb/p/6400272.html

(一)docker简介

1. 什么是docker

2. 什么是docker镜像(image)

如何修改默认镜像仓库来源:
打开/etc/default/docker文件(需要sudo权限),在文件的底部加上一行:
DOCKER_OPTS="–registry-mirror=https://registry.docker-cn.com"
也可以修改为国内的镜像源,如阿里、中科大等

3.什么是docker容器(Container)

可以理解为是镜像对应的一个实例

4. 什么是Docker Registry 服务

一个 Docker Registry 服务中可以包含多个 仓库(Repository);每个仓库可以包含多个 标签(Tag);每个标签对应一个镜像。

5.什么是docker仓库(Repository)

6. 什么是docker 守护进程(Docker Daemon)

7. 什么是docker client

Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信

(二)如何构建docker镜像

若不想某些文件在构建时被添加到镜像中,类似git,根目录添加一个.dockerignore文件,将文件写入即可。

1. 手工构建docker 镜像

2. 使用dockerfile自动构建

2.1 什么是dockerfile

用于配置自动构建容器镜像的一个文本文件,通过特定语法进行编写,具体命名参考下节。

2.2 dockerfile 相关命令

FROM
定义了使用哪个基础镜像 启动构建流程。基础镜像可以为任意镜像。如果基础镜像没有被发现,Docker将试图从Docker image index来查找该镜像。
FROM命令必须是Dockerfile的首个命令,可出现多次

#Usage 1: FROM [image name] – 不带tag,默认拉最新的
#Usage 2: FROM [image name]:tag – 携带tag
#Usage 3: FROM microsoft/[image name]:tag – 指定哪个namespace
docker hub官方仓库默认组(namespace)为:library

如果不是官方docker hub服务下载,而是第三方,则:
#Usage 4: FROM microsoft/[image name]:tag –

MAINTAINER
用于声明作者,并应该放在FROM的后面,理论上可以放在任意位置
#Usage: MAINTAINER [name]

ADD
它的基本作用是从源系统的文件系统上复制文件到目标容器的文件系统
1)如果是一个目录,只会复制目录下的内容,而目录本身则不会被复制

COPY


执行命令:

RUN
在镜像构建的过程中执行(build镜像时使用),在之前commit的层之上形成新的层
通常用于安装应用和软件包
#Usage: RUN [command]

CMD
1)CMD的目的是为了在启动容器时提供一个默认的命令执行选项
2)CMD设置的命令能够被docker run命令后面的命令行参数替换
3)此命令会在容器启动且 docker run 没有指定其他命令时运行,若docker run携带 命令 则会忽略掉CMD
4) Dockerfile 中只能使用一次,如果有多个,则只有最后一个会生效
Usage 1: CMD application “argument”, “argument”, …

ENTRYPOINT
1)配置 容器启动后 执行的命令,并且不可被 docker run 命令提供的参数覆盖
2)如果你结合CMD命令和ENTRYPOINT命令,你可以从CMD命令中移除“application”而仅仅保留参数,参数将传递给ENTRYPOINT命令。
3)每个 Dockerfile 中只能有一个ENTRYPOINT,当指定多个时,只有最后一个生效
ENTRYPOINT exec top -b

若要忽略任何CMD或者docker run命令行选项,为了确保docker stop能够停止长时间运行ENTRYPOINT的容器,确保执行的时候使用exec选项

#Usage: ENTRYPOINT application “argument”, “argument”, …
#Remember: arguments are optional. They can be provided by CMD
#or during the creation of a container.

区别:
使用 RUN 指令安装应用和软件包,构建镜像。
如果 Docker 镜像的用途是运行应用程序或服务,应该优先使用 Exec 格式的 ENTRYPOINT 指令。CMD 可为 ENTRYPOINT 提供额外的默认参数,同时可利用 docker run 命令行替换默认参数。
如果想为容器设置默认的启动命令,可使用 CMD 指令,用户可在 docker run 命令行中替换此默认命令。


WORKDIR
WORKDIR命令,用于设置CMD指明的命令的运行目录
#Usage: WORKDIR /path
1)可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd

ENV
设置环境变量,变量以”key=value”的形式存在
#Usage: ENV key value
ENV # 只能设置一个变量
ENV = … # 允许一次设置多个变量

VOLUME
VOLUME命令用于让你的容器访问宿主机上的目录。
#Usage: VOLUME ["/dir_1", “/dir_2” …]

EXPOSE
EXPOSE用来指定端口,使容器内的应用可以通过端口和外界交互;将容器 端口暴露出来, 允许外部连接这个端口。
1)告诉 Docker 服务端容器对外映射的本地端口,需要在 docker run 的时候使用-p或者-P选项生效。
#Usage: EXPOSE [port]
EXPOSE 8080

USER
USER命令用于设置运行容器的UID。
#Usage: USER [UID]

2.3 如何编写dockerfile

尽量基于现有镜像,根据所要构建的镜像用途,安装应用、服务等,修改、添加文件,设置执行入口

3 构建镜像

docker image built -t [namespace/]image_name[:tag] .
这里 . 代表- DockerFile 所在路径

(三)如何运行一个容器

docker [container] run --name my-test [-it] image_name
常用参数:
-p 8000:3000: 容器的 3000 端口映射到本机的 8000 端口
-p 127.0.0.2:8080:80: 将容器的 80 端口映射到127.0.0.2的8080端口(指定下容器运行的IP)
-P(大写) :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口。
默认情况下,都是绑定 tcp 端口,如果要绑定 udp 端口,可以在端口后面加上 /udp
-p 127.0.0.2:8080:80/udp
[可以通过 访问127.0.0.2:8080来访问容器的80端口]

-it:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器
–name: 启动的container name

-v: 将主机中某目录 挂载 到容器某目录
–volume:“PWD/”:/var/www/html:将当前目录(PWD)映射到容器的/var/www/html,当前目录的任何修改,都会反映到容器里面,进而被外部访问到

–rm:停止运行后,自动删除容器文件

-d:容器启动后,在后台运行

–link wordpressdb:mysql,表示 容器要连到wordpressdb容器,冒号表示该容器的别名是mysql

–cpuset=“0-2” or --cpuset=“0,1,2”:
绑定容器到指定CPU运行

(四)docker命令

1)权限问题:
命令需要root权限,可以执行下述命令添加docker到用户组中:
sudo usermod -aG docker $USER

2)重启docker:
sudo systemctl daemon-reload
sudo systemctl restart docker

docker container inspect container-id :
Docker的底层信息,返回一个 JSON 文件记录着 Docker 容器的配置和状态信息

docker port container:
使用 docker port 可以查看指定 (ID或者名字)容器的某个确定端口映射到宿主机的端口号

docker top container [portid]:
来查看容器内部运行的进程

(五)docker问题定位

(六)docker工具

Compose :
是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。
#启动所有服务
$ docker-compose up
#关闭所有服务
$ docker-compose stop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值