资讯

展开

容器指南之容器架构及常用指令

作者:快盘下载 人气:

1.docker 系统架构

Docker daemon:守护进程。通过 docker daemon命令启动,它负责容器的创建、运行和监控,还负责镜像的构建和储存。

Clinet:客户端。通过 HTTP和Docker守护进程通信。

Registry:寄存服务。负责存储和发布镜像。

容器指南之容器架构及常用指令

1.1.底层技术

cgroups,负责管理容器使用的资源(例如CPU和内存的使用)。

namespace,负责容器之间的隔离,确保系统的其他部分与容器的文件系统、主机名、用户、网络和进程都是分开的。

1.2.周边技术

网络连接,通过Docker的联网插件结构,用户可以用其他方案取代Overlay驱动程序。

服务发现,解决方案包括Consul、SkyDNS

服务编排和群集管理,Kubernets。

1.3.Dockerfile 指令

ADD,从构建环境的上下文或远程URL复制文件到镜像。添加本地归档文件会自动解压。一般使用相对简单的COPY指令复制构建文件和目录。

CMD,当容器启动时执行指定的指令。如果定义了 ENTRYPOINT ,该指令将被解释为ENTRYPOINT的参数(确保使用 exec格式)。

COPY,复制文件到镜像。它有2中方式,COPY src dest以及COPY[ "src","dest" ],如果路径中有空格,必须使用JSON数组的格式。

ENTRYPOINT,设置一个于容器启动时运行的可执行文件。

ENV,设置镜像内的环境变量,这些变量可以被随后的指令引用。

EXPOSE,向Docker表示该容器将会有一个进程监听所指定的端口。

FROM,设置 Dockerfile使用的基础镜像,随后的指令皆执行于这个镜像上。

MAINTAINER,镜像作者的元数据。

ONBUILD,指定当镜像被用作另一个镜像的基础镜像时将会执行的指令。

RUN,在容器执行指定的指令,并把结果保存下来。

USER,设置任何后续的RUN、CMD或ENTRYPOINT指令执行时所用的用户。

VOLUME,指定为数据卷的文件或目录。如果该文件或目录已经在镜像中存在,当容器启动时,它会被复制到这个卷;如果提供了多个参数,会被解释成多个数据卷。

WORKDIR,对任何后续的RUN、CMD、ENTRYPOINT、ADD或COPY指令设置工作目录。

1.4.容器互联

其中 -p 8000:80将主机的 8000端口转发到容器的 80端口。或者可以使用 -P选项让Docker自动选择一个主机上未使用的端口。

docker run -d -p 8000:80 nginx
ID=$(docker run -d -P nginx)
docker port $ID 80

容器架构

容器间的连接主机网络无法看见。连接的初始化通过docker run传入 --link CONTAINER:alias参数,其中 CONTAINER是目标容器的名称,而 alias是主容器用来称呼目标容器的一个本地名称。

使用 Docker的连接也会把目标容器的别名和ID添加到主容器的 /etc/hosts,允许主容器通过名称找到目标容器。

docker run -d --name myredis redis
docker run --link myredis:redis debian env

Docker博客

默认情况下,无论是否已经建立了显式连接,容器之间可以相互通信。如果想要防止尚未连接的容器能够互联,可以在启动Docker守护进程式加上 --icc=false和 --iptables。

2.常用的容器指令

2.1.存储相关

docker system df
docker system prune
docker system prune -a
docker image ls -a
docker image rm <name_or_id>
docker container ls -a
docker container stop <name_or_id>
docker container rm <name_or_id>

2.2.网络相关

docker network ls
docker network rm <name_or_id>

2.3.执行相关

docker volume ls
docker exec mysql /usr/bin/mysqldump -u root -pmysecret mydb > backup.sql
docker exec mysql /usr/bin/mysqldump -u root -pmysecret -r mydb | Set-Content backup.sql
docker cp mycontainer:/some/file ./host/directory
docker volume rm <name>
docker volume prune
docker system prune -a --volumes
docker exec -it <name> bash
docker exec -it <name> sh

2.4.centos删除docker0虚拟网卡

# 停止docker服务
service docker stop
# 用ip命令使docker0网卡down掉
ip link set dev docker0 down
# 删除网卡
brctl delbr docker0

3.参考资料

容器指南之第一个容器​​https://blog.51cto.com/waringid/5904849​​

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!