docker学习记录1

2020-05-07  本文已影响0人  nnnnxcj

Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。

FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz

以上执行会创建 3 层镜像。可简化为以下格式:

FROM centos
RUN yum install wget \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
    && tar -xvf redis.tar.gz

Docker 容器网络连接

简单连接两个容器还可以使用 docker run --link
--link <name or id>:alias(其中,name和id是源容器的name和id,alias是源容器在link下的别名)
如:运行连接opentsdb的grafana容器,

不使用link直接创建的容器是互相隔离的,无法连接(或者使用下面的创建docker网络将其连接起来)

参照虚拟机,我们可以将好几台虚拟机的网络进行配置,从而是它们的网络连通。docker 同样有类似的东西,docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。

创建一个新的 Docker 网络
docker network create -d bridge test-net

查看网络
docker network ls

运行容器 test01、test02 连接到 test-net
docker run -itd --name test01 --network test-net ubuntu /bin/bash
docker run -itd --name test02 --network test-net ubuntu /bin/bash

在容器内部查看ip
ip addr

注意:

  1. 类似 ip 主机名这样的容器配置一般在启动容器时设置,并不提倡去容器内部更改,感觉也是这样好一点
  2. 一般启动集群的时候,用写好的 docker-compose.yml 去启动,或者将设置写成 start-container.sh 这样比较好

docker cp
将容器文件拷到主机

docker volume

docker数据卷 -v参数
把docker中运行的数据持久化,使得容器之间数据可以共享

使用 docker-compose

Compose 使用的三个步骤:
使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。

安装docker-compose
python3 -m pip install docker-compose
验证 docker-compose -v

endpoint和cmd类似一个意思

alinode 官方镜像分析并提取 Dockerfile
https://www.52cik.com/2018/10/01/docker-alinode-dockerfile.html
从 Docker 镜像中提取 Dockerfile
https://www.52cik.com/2018/10/01/dockerfile-from-image.html

指定 ENTRYPOINT 指令为 shell 模式时,会完全忽略命令行参数

参考https://www.cnblogs.com/sparkdev/p/8461576.html
https://www.hi-linux.com/posts/25523.html

上一篇 下一篇

猜你喜欢

热点阅读