C++GO语言微服务之数据卷实践②

目录

01 16-docker常用的网络模式

02 17-创建桥接网络

03 18-容器加入到指定网络中

04 19-容器添加到网络和从网络中删除

05 20-host网络的使用

01 21-dockerfile介绍

02 22-dockerfile演示

01 23-dockerfile的run和maintainer

02 24-RUN和EXPOSE关键字

03 25-ENTRYPOINT和CMD关键字

04 26-COPY,ADD,VOLUME关键字


01 16-docker常用的网络模式

- 容器连接网络

  ```shell
  docker network connect [OPTIONS] NETWORK CONTAINER
  ```

### 2.4 host网络

```shell
$ docker run -itd --name test3 --network host ubuntu bash
```

## 3. Dockerfile

### 3.1 Dockerfile介绍

```shell
# 编写dockfile文件
# 构建一个基于ubuntu的docker定制镜像
# 基础镜像
FROM ubuntu:v1.0

# 镜像作者
MAINTAINER panda kstwoak47@163.com

02 17-创建桥接网络

# 执行命令
RUN mkdir hello
RUN mkdir world
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update  
RUN apt-get install nginx -y

# 对外端口
EXPOSE 80
```

- 宿主机创建一个空目录, 将上边的dockerfile文件放到里边

- 在dockerfile对应的目录中执行一个命令, 构建新的镜像

03 18-容器加入到指定网络中

 ```shell
  docker build -t mynginx:v2.0 dockerfile所在的目录(.)
  -t, --tag: 指定构建出的镜像的名字
  ```

### 3.2 Dockerfile基础指令

- FROM

  ```dockerfile
  FROM 镜像名
  FROM 镜像名:tag
  # FROM必须要出现Dockerfile的第一行(除注释), 可以连续写多个FROM创建多个镜像.
  # 如果指定的镜像名本地仓库没有, 会从远程仓库pull到本地, 远程仓库也没有 -> 报错.
  
  ```

- MAINTAINER

  ```Dockerfile
  dockerfile维护者信息
  MAINTAINER 维护人员信息
  ```

04 19-容器添加到网络和从网络中删除

- RUN

  ```dockerfile
  # 构建镜像时候执行的shell命令, 如果命令有确认操作, 必须要加 -y
  # 如果命令太长需要换行, 行末尾需要加 \
  RUN shell命令
      RUN mkdir /home/go/test -p
  RUN ["mkdir", "/home/go/test", "-p"]
  ```

- EXPOSE

  ```dockerfile
  # 设置对外开放的端口
  # 容器和外部环境是隔离的, 如何向从外部环境访问到容器内部, 需要容器开发端口
  # 在使用的时候, 让宿主机端口和容器开放端口形成一个映射关系, 就可以访问了
  #     docker run -itd -p 8888:80
  EXPOSE 80
  ```

05 20-host网络的使用

### 3.3 Dockerfile运行时指令

- CMD

  ```dockerfile
  # 新镜像已经被制作完毕, 启动新镜像-> 得到一个容器
  # 容器启动后默认执行的命令
  # 一个dockerfile文件只能指定一个CMD指令
  # 如果指定多个, 只有最后一个有效
  # 该CMD会被 docker run指定的shell命令覆盖
  CMD shell命令
  CMD ["shell命令", "命令参数1", "命令参数2"]
  ```

- ENTRYPOINT

  ```dockerfile
  # docker容器启动之后执行的命令, 该命令不会被docker run指定的shell指令覆盖
  # ENTRYPOINT只能指定一个, 指定多个, 只有最后一有效
  # ENTRYPOINT 和 CMD可以同时指定
  # 如果想被docker run覆盖, 启动docker容器时可使用docker run --entrypoint
  ENTRYPOINT shell命令
  ENTRYPOINT ["shell命令", "命令参数1", "命令参数2"]
  ```

01 21-dockerfile介绍

- CMD ENTRYPOINT 综合使用

  ```dockerfile
  docker run -itd ubuntu 
  # 任何docker run设置的命令参数或者CMD指令的命令,都将作为ENTRYPOINT 指令的命令参数,追加到ENTRYPOINT指令之后
  ENTRYPOINT mkdir /home/go/a/b/c/d/e/f
  CMD -p
  mkdir /home/go/a/b/c/d/e/f -p 
  ```

### 3.4 Dockerfile文件编辑指令

- ADD

  ```dockerfile
  # 将宿主机文件拷贝到容器目录中
  # 如果宿主机文件是可识别的压缩包, 会进行解压缩 -> tar
  ADD 宿主机文件 容器目录/文件
  # 实例
  ADD ["宿主机文件", "容器目录"]
   - 宿主机文件一般放到Dockerfile对应的目录中
   - 容器目录, 有可能存在, 有可能不存在
        - 存在: 直接拷贝到容器目录
      - 不存在: 先在容器中创建一个, 再拷贝
  ADD ["a.txt", "/home/go/a.txt"]
   - 第二个参数如果指定的是一个文件名
     - 这个文件存在: 直接覆盖
     - 不存在: 直接拷贝

02 22-dockerfile演示

 COPY

  ```dockerfile
  # COPY 指令和ADD 指令功能和使用方式类似。只是COPY 指令不会做自动解压工作。
  # 单纯复制文件场景,Docker 推荐使用COPY
  COPY ["a.tar.gz", "/home/"]
  ```

- VOLUME

  ```dockerfile
  # 数据卷容器创建, 挂载点为/backup
  docker create -it --name contains -v /backup ubuntu bash
  # 其他容器挂载到数据卷容器上
  docker run -itd --volumes-from contains ubuntu bash
  
  # VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点
  # 通过VOLUME 指定挂载点目录是自动生成的。
  VOLUME ["/data"]

01 23-dockerfile的run和maintainer

## 3.5 Dockerfile环境指令

- ENV

  ```dockerfile
  # 设置环境变量,可以在RUN 之前使用,然后RUN 命令时调用,容器启动时这些环境变量都会被指定
  ENV <key> <value>                    (一次设置一个环境变量)
  ENV <key>=<value> ...                (一次设置一个或多个环境变量)
  ENV HELLO 12345
  ENV HELLO=12345
  ENV HELLO=12345 WORLD=12345 NIHAO=12345
  ```

- WORKDIR

  ```dockerfile
  # 切换目录,为后续的RUN、CMD、ENTRYPOINT 指令配置工作目录。相当于cd
  # 可以多次切换(相当于cd 命令),
  # 也可以使用多个WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。
  WORKDIR /path/to/workdir
  RUN a.sh
  WORKDIR /path
  WORKDIR to    # 相对路径
  WORKDIR workdir
  RUN pwd
  /path/to/workdir
  ```

02 24-RUN和EXPOSE关键字

- USER 

  ```dockerfile
  # 指定运行容器时的用户名和UID,后续的RUN 指令也会使用这里指定的用户。
  # 如果不输入任何信息,表示默认使用root 用户
  USER daemon
  ```

- ARG

  ```dockerfile
  # ARG 指定了一个变量在docker build 的时候使用,可以使用--build-arg <varname>=<value>来指定参数的值。
  ARG <name>[=<default value>]
  ```

03 25-ENTRYPOINT和CMD关键字

### 3.6 Dockerfile触发器指令

- ONBUILD

  ```dockerfile
  # 当一个镜像A被作为其他镜像B的基础镜像时,这个触发器才会被执行,
  # 新镜像B在构建的时候,会插入触发器中的指令。
  ONBUILD [command]

04 26-COPY,ADD,VOLUME关键字

 # 原始镜像 -> 纯净版
      -> 修改 ONBUILD ["echo", "hello,linux"]
         
  # 基于原始镜像制作新镜像 -> 镜像A
      -> 启动镜像A -> 不会输出hello, linux
      
  # 基于镜像A制作了镜像B
      -> 启动镜像B -> 会输出 hello, linux
  ```

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值