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 指令指定的程序。