docker学习笔记二

1.docker-compose相关

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

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

1.1 查看docker compose 是否安装成功

[root@**** ~]# docker-compose --version
docker-compose version 1.25.1, build a82fef07

1.2 Linux chmod命令

Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令.

语法

chmod [-cfvR] [--help] [--version] mode file...

参数说明

mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]

其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

其他参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
  • –help : 显示辅助说明
  • –version : 显示版本

1.3 yml 配置 释义

示例

# yaml 配置实例
version: '3.7'
services:
    minio:
    image: minio/minio:latest
    container_name: minio
    ports:
      - \"9000:9000\"
      - \"9090:9090\"
    restart: always
    command: server /data --console-address":9090\"
    environment:
      MINIO_ACCESS_KEY:adminadmin
      MINIO_SECRET_KEY:123456123456
    logging:
      options:
         max-size: \"50M\"
         max-file: \"10\"
        driver: json-file
    volumes:
      - /docker-test/minio/data:/data
  • version 本 yml 依从的 compose 哪个版本制定的;
  • build 指定为构建镜像上下文路径:

例如 webapp 服务,指定为从上下文路径 ./dir/Dockerfile 所构建的镜像:

version: "3.7"
services:
  webapp:
    build: ./dir

或者,作为具有在上下文指定的路径的对象,以及可选的 Dockerfile 和 args:

version: "3.7"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
      args:
        buildno: 1
      labels:
        - "com.example.description=Accounting webapp"
        - "com.example.department=Finance"
        - "com.example.label-with-empty-value"
      target: prod
  • context:上下文路径。
  • dockerfile:指定构建镜像的 Dockerfile 文件名。
  • args:添加构建参数,这是只能在构建过程中访问的环境变量。
  • labels:设置构建镜像的标签。
  • target:多层构建,可以指定构建哪一层。

2.docker基础相关

2.1 查看容器环境变量

如果我们需要查看ENV设置的环境变量,可通过以下方法进行查看。

使用docker inspect查看

docker inspect 157ae08f8e18

或者

使用docker exec查看

docker exec -it <CONTAINER-NAME> OR <CONTAINER-ID> env

2.2 docker cp命令

**docker cp 😗*用于容器与主机之间的数据拷贝。

语法

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

OPTIONS说明:

  • **-L 😗*保持源目标中的链接

实例

将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。

docker cp /www/runoob 96f7f14e99ab:/www/

将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。

docker cp /www/runoob 96f7f14e99ab:/www

将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。

docker cp  96f7f14e99ab:/www /tmp/

3.docker安装nginx

安装nginx,并进行一系列的配置,来满足其容器、代理的角色。

3.1 创建文件目录

mkdir -p /opt/docker/nginx/conf/conf.d
mkdir -p /opt/docker/nginx/html
mkdir -p /opt/docker/nginx/logs
  • conf 和conf.d分别用于保存配置文件
  • html用于放置静态文件
  • logs用于保存日志

3.2 拷贝默认配置

  • 启动一个最基础的容器 并获取其对应的容器 ld
docker run --name my-nginx -p 80:80 -d nginx
docker ps | grep my-nginx
  • 第二步,拷贝容器中默认的配置文件(目的是在启动容器前修改配置文件,启动容器时挂载卷时自动同步配置文件)
docker cp fcacea22e26d:/etc/nginx/nginx.conf /opt/docker/nginx/conf/nginx.conf
docker cp fcacea22e26d:/etc/nginx/conf.d /opt/docker/nginx/conf
docker cp fcacea22e26d:/usr/share/nginx/html /opt/docker/nginx

# 拷贝完之后就停止并删除容器
docker stop fcacea22e26d
docker rm fcacea22e26d

3.3 正式run容器

docker run \
-p 80:80 \
-p 6079:6079 \
--name JCXX_nginx \
--add-host=gm-minio:192.168.1.108 \
--restart=always \
-v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /opt/docker/nginx/html:/usr/share/nginx/html \
-v /opt/docker/nginx/logs:/var/log/nginx \
-d \
nginx

参数说明:

  • --add-host来添加域名和IP信息到容器的/etc/hosts文件中;
  • --add-host参数最好在--name后面,避免启动报错;
  • –restart=always 一直保持运行,自动启动
  • -v 宿主机与容器的映射关系

容器重启、重新加载

docker exec -t 容器id nginx -t
docker exec -t 容器id nginx -s reload

临时

docker run -d  -p 6079:6079 -p 80:80 -v /workspace/docker_nginx/html:/usr/share/nginx/html --add-host gm-minio:192.168.1.108 --name JCXX_nginx nginx:latest

参数说明:

  • --add-host 使用该参数可以配置多个host.

4.Dockerfile

示例

FROM centos7_jdk8:v1
ADD *.jar gm-auth.jar
ENTRYPOINT ["java","-Xmx1024m","-jar","/gm-auth.jar"]

参数说明:

  • 以centos7_jdk8:v1为基础镜像;基础镜像中安装了java运行环境依赖jdk;
  • ADD 指令和 COPY 的使用类似(同样需求下,官方推荐使用 COPY)
  • COPY
    复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
    格式:
COPY [--chown=<user>:<group>] <源路径1>...  <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>",...  "<目标路径>"]
  • ENTRYPOINT 传参数

类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。