衡水网站建设地方,新网域名证书下载,酒店网站建设项目,制作微信小程序步骤学习笔记网址推送#xff1a;wDocker 10分钟快速入门_哔哩哔哩_bilibili
docker是用来解决什么问题的#xff1f; 例如当你在本地主机写了个web应用#xff0c;而你打算将该应用发送给其他客户端进行案例测试和运行#xff0c;若是传统做法#xff0c;就比较复杂#xf…学习笔记网址推送wDocker 10分钟快速入门_哔哩哔哩_bilibili
docker是用来解决什么问题的 例如当你在本地主机写了个web应用而你打算将该应用发送给其他客户端进行案例测试和运行若是传统做法就比较复杂
1.第一种方法是在等待端需要配置相同软件数据库、Web服务器等还不一定能使案例运行起来。
2.第二种方法是模拟完全相同的本地开发环境使用虚拟机可虚拟机的运行会在每一次不同案例的传送选择新的虚拟机类型和硬件选择体积臃肿性能也会受到一定的影响。
3.第三种方法就是docker的使用。 docker在概念上与虚拟机非常类似但是却轻量很多docker不会去模拟底层的硬件而是为每一个应用提供完全隔离的运行环境而该种环境在docker种也被称为container/容器并且docker在使用中是完全可以做到跨系统的。
docker内有三大重要概念1.Dockerfile2.Image/镜像3.Container/容器。 Image镜像可以等同于虚拟机的快照Snapshot内部包含了所需部署的应用程序及相关联的所有库通过镜像可以创建许多个不同类型的Container容器这里的容器可以理解为多台运行起来的虚拟机每个容器是独立运行的而各个容器中则包含了所运行的程序。
Dockerfile则类似于一个自动化脚本可以看作是一个引导文件其功能类似于在虚拟机中安装和创建软件和前置设置而在docker中则是通过该脚本自动化完成了。
Docker的安装和使用
windos和mac用户可在官网直接下载一个Docker Desktop的应用或者winows10以上还可以使用WSL2windows下的linux子系统来运行docker
而在linux系统中则可直接使用包管理工具进行安装
若使用的是vscode可以使用安装docker的扩展。
Docker应用部署
1.首先在需要配置部署的根目录下创建一个Dockerfile文件 2.在Dockerfile文件的第一行需要使用FROM命令指定一个基础镜像base image,这里使用FROM可极大简便程序运行的前奏可在docker hub中找到各种不同类型的操作系统不同的操作系统提供不同的包管理这里的操作系统指的只是内核以上的系统应用实际系统仍然是docker下面的linux内核3.8是版本slim-buster是一个标签Tag
FROM python:3.8-slim-buster 3.第二行通过WOEKDIR指定了之后所有Docker命令的工作路径working directory
WOEKDIR /app
4.第三行通过COPY命令将所有程序拷贝到Docker镜像中COPY 本地路径目标路径第一个参数代表本地文件“.”代表程序根目录下的所有文件第二个参数代表Docker镜像中的路径“.”表示当前的工作路径也就是之前指定的app目录
COPY .. 5.第四行通过RUN创建镜像时可运行任意的shell命令echo pwd rm这些指令都是合法的。
RUN pip3 install -r requirements.txt
6.通过上述所有命令即可完成一个Docker镜像的创建。 7.在镜像创建完成后会使用到CMD来指定当Dcoker容器运行起来以后要执行的命令容器≠镜像和之前RUN命令不一样RUN是创建docker时使用的而CMD时当你在运行容器时才可以使用的操作CMD [“可执行文件”“参数1”“参数2”]。 8.接下来可以在TERMINAL中通过docker build来创建一个镜像 方法中的-t制定了我们镜像的名字-t: tag/标签最后面的“.”则是告诉docker应该在当前目录下寻找这个Dockerfile不可省略。第一次调用docker build会比较慢docker会先下载必要的镜像文件然后逐行运行我们的指令后续由于会保留缓存保留每一个操作该操作也在docker中被称为分层则会相对较快。
docker build -t my-finance . 9. 有了镜像后则可通过docker run来启动一个容器需要注意的是-p参数它会将容器中的一个端口映射到本地主机上这样才可以通过主机访问容器中的Web应用或其他前面的80是我们本地主机的端口而后面的5000则是容器上的端口不可搞反而-d--detached参数则是让容器在后台运行的操作这样容器的输出就不会直接显示在控制台
docker run -p 80:5000 -d my-finance 10.完成上述操作后则可在服务端的主机上运行本机的程序应用。 可通过docker desttop图形化界面可以看到应用在后台的全部输出这对于调试十分方便同时我们还可以看到当前容器的各种信息该处的containers中显示了我们创建的所有容器可以选择停止重启删除他们也可通过shell进行控制。
操作命令
列举所有容器docker ps
停止容器docker stop 容器 ID
重启容器docker restart 容器 ID
删除容器docker rm 容器 ID
启动一个远程Shelldocker exec -it 容器 ID /bin/bash 需要注意的是当删除一个容器时所有数据会同时消失不过可以使用docker提供的Volume数据卷进行数据保存可以当作是本地主机和不同容器中共享的文件夹当你在某一个容器中修改了Volume的数据它会同时反映在其他的容器上可通过docker volume create来创建一个数据卷。随后在启动容器时通过-v进行参数指定将这个数据卷挂载到容器的某一个路径上如案例所示当前数据卷my-finance-data挂载到了/etc/finance这个路径下向该路径写入的任何数据都会被永久保存在这个数据卷中。
docker volume create my-finance-data
docker run -dp 80:5000 -v my-finance-data:/etc/finance my-finance 前文的案例只是涉及单个容器而在实际运行中则可以使用多个容器相互运行并行操作如可以将一个容器运行web应用另一个容器进行数据库系统的运行这样可以做到数据和应用逻辑的有效分离。 docker compose
创建docker-compose.yml文件进行配置分别定义web容器和数据库db容器 同时还可以通过volumes指定数据卷用来永久存放数据 定义完成后在终端使用docker compose up -d进行运行所有容器。 与之相对应的可以使用docker compose down来停止并删除所有的容器