课程内容
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:运行命令。
CMD 和 ENTRYPOINT:指定容器启动命令。
COPY 和 ADD:复制文件到镜像中。
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 |

php-apache环境搭建

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

这里无需进行映射端口,使用主机名(容器名)连接即可
创建结束后,我们查看该网络的信息
1 | docker network inspect my_self_bridge |

我们发现这两个container已经加入到网络中了
把dvwa源码扔到php的app目录

复制配置文件并修改

这里的db_server我们可以设置为dvwa-mysql(容器名)
修改完成后访问setup.php

发现没有mysqli拓展
php镜像官方提供了一个工具docker-php-ext-install用于安装拓展
1 | docker exec -it my-apache-php-app /bin/bash |
现在我们退出容器,重新启动容器

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

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

将kitten可执行文件上传

将镜像提交

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

构建python程序镜像(docker build)
dockerbuild文件编写
1 | FROM python:3.8 |
关于参数传递,可以使用,run的参数传递,环境变量,配置文件等

创建镜像docker build -t IMAGE:TAG .
运行docker run IMAGE args
思考&&todo
DONE dockerfile编写
