day9_kls

课程内容

docker网络

docker中的网络模式

bridge

host

none

相关命令

查看:docker network ls,docker network inspect NETWORK

创建:docker network create -d TYPE network_name

加入:docker network connect NETWORK CONTAINER [CONTAINERS]

使用

在创建容器时使用--network 指定网络即可docker run --network NETWORK IMAGE

docker卷

基本用法

查看docker volume ls

创建docker volume create volume_name

删除docker volume rm VOLUME

使用

在创建容器时使用-v指定即可docker run -v VOLUME:xxx IMAGE

docker创建自己的镜像(dockerfile)

不使用dockerfile(docker commit 不推荐)

不使用dockerfile,基于CONIANER的修改生成新的镜像

使用docker commit CONTAINER IMAGE

不推荐使用:

难以维护

不透明,无法得知修改了什么

使用dockerfile

基本语法

FROM:指定基础镜像。

RUN:运行命令。

CMDENTRYPOINT:指定容器启动命令。

COPYADD:复制文件到镜像中。

WORKDIR:设置工作目录。

ENV:设置环境变量。

EXPOSE:声明端口。

VOLUME:定义挂载点。

LABEL:添加元数据。

生成镜像

docker build -t IMAGE docker_file_dirname

docker-compose

概念

docker-compose.yml是docker-compose启动所需的配置文件。默认是这个,如果你要使用其他的请在运行时指定docker-compose up -f /path/to/your_yml

命令

创建docker-compose up [options],常用的参数-d后台运行

启停docker-compose start/stop

删除docker-compose down

实例&&作业

dvwa站库分离(php-apache+mysql)

创建docker网络

1
docker network create -d bridge my_self_bridge

image.png

php-apache环境搭建

image.png

因拓展无法安装,后面这个我换成了php:8.0-apache,后面发现不是php版本的问题。dvwa官方推荐7.3及以上

创建mysql数据库

image.png

这里无需进行映射端口,使用主机名(容器名)连接即可

创建结束后,我们查看该网络的信息

1
docker network inspect my_self_bridge

image.png

我们发现这两个container已经加入到网络中了

把dvwa源码扔到php的app目录

image.png

复制配置文件并修改

image.png

这里的db_server我们可以设置为dvwa-mysql(容器名)

修改完成后访问setup.php

image.png

发现没有mysqli拓展

php镜像官方提供了一个工具docker-php-ext-install用于安装拓展

1
2
3
4
5
6
7
8
docker exec -it my-apache-php-app /bin/bash
# 为dg的安装提前安装相关依赖
apt-get update && apt-get install -y \
libjpeg-dev \
libpng-dev \
libfreetype6-dev \
zlib1g-dev
docker-php-ext-install mysqli dg pdo_mysql

现在我们退出容器,重新启动容器

image.png

创建第一个自己的镜像(docker commit)

拉取ubuntu镜像

image.png

创建一个ubuntu容器,并在后台运行

image.png

kitten可执行文件上传

image.png

将镜像提交

image.png

根据刚创建的镜像开启一个新的容器,查看/bin下是否有kitten

image.png

image.png

构建python程序镜像(docker build)

dockerbuild文件编写

1
2
3
4
5
6
7
FROM python:3.8
RUN mkdir /opt/app
WORKDIR /opt/app
COPY . .
RUN pip install --upgrade pip \
&& pip install -r requirements.txt
CMD ["python", "/opt/app/main.py"]

关于参数传递,可以使用,run的参数传递,环境变量,配置文件等

image.png

创建镜像docker build -t IMAGE:TAG .

运行docker run IMAGE args

思考&&todo

DONE dockerfile编写