Docker工具

    科技2025-04-21  14

    1、基础知识

    1.1 概念 Docker是一个用于快速环境部署/搭建的工具。角色组成 组件描述Docker镜像它是一个只读的文件,就类似于我们安装操作系统时候所需要的那个iso光盘镜像,通过运行这个镜像来完成各种应用的部署。这里的镜像就是一个能被docker运行起来的一个程序。Docker容器容器就类似于我们运行起来的一个操作系统,而且这个操作系统启动了某些服务。这里的容器指的是运行起来的一个Docker镜像。Docker仓库仓库就类似于我们在网上搜索操作系统光盘的一个镜像站。这里的仓库指的是Docker镜像存储的地方。

    官方资料:

    Docker 官网:http://www.docker.com

    Github Docker 源码:https://github.com/docker/docker

    安装docker apt install docker-ce -y

    检查服务

    systemctl [start|stop|restart|status|...] docker docker version|info

    注意:

    安装前:只有eth0和lo网卡

    安装后:docker启动后,多出来了docker0网卡,网卡地址172.17.0.1

    加速配置

    # 定制加速仓库 echo '{"registry-mirrors": ["https://kcmn5udq.mirror.aliyuncs.com"]}' > /etc/docker/daemon.json # 重启服务 systemctl restart docker

    2、基础管理

    2.1、镜像管理

    基本实践

    搜索线上的nginx镜像文件

    # 需要联网 docker search [image_name]

    获取

    docker pull [image_name]

    查看

    docker images <image_name>

    历史(查看镜像文件创建历史记录)

    docker history [image_name]

    进阶实践

    标签(起个别名)

    docker tag [old_image]:[old_version] [new_image]:[new_version]

    示例: 多了一个镜像,但镜像的ID是一样的(表示的是同一个镜像,知识起了个别名)

    python@ubuntu:~$ docker tag nginx:latest new_nginx:v1.0 python@ubuntu:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE new_nginx v1.0 f949e7d76d63 12 months ago 126MB nginx latest f949e7d76d63 12 months ago 126MB mysql 5.7.22 0d16d0a97dd1 2 years ago 372MB delron/fastdfs latest 8487e86fc6ee 2 years ago 464MB delron/elasticsearch-ik 2.4.6-1.0 095b6487fb77 2 years ago 689MB

    删除

    docker rmi [image_id/image_name:image_version] (注意:删除的有别名的镜像的时候,删除的是image_name,如果删除镜像id,那么该镜像会被删除)。这里示例删除别名镜像: python@ubuntu:~$ docker rmi new_nginx:v1.0 Untagged: new_nginx:v1.0 python@ubuntu:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest f949e7d76d63 12 months ago 126MB mysql 5.7.22 0d16d0a97dd1 2 years ago 372MB delron/fastdfs latest 8487e86fc6ee 2 years ago 464MB delron/elasticsearch-ik 2.4.6-1.0 095b6487fb77 2 years ago 689MB

    导出

    docker save -o [包文件] [镜像]

    示例:导出桌面

    导入

    docker load < [image.tar_name]

    2.2、容器管理

    基本实践

    查看容器

    # -a 表示查看包括未启动的容器 docker ps -a

    创建容器并启动(第一次启动需要创建)

    docker run -itd <image_name>

    启动容器

    docker start [container_id]

    关闭容器

    docker stop [container_id]

    删除容器

    docker rm [-f] [container_id]

    进阶实践

    进入(登录)容器

    docker exec -it [container_id] /bin/bash

    属性解析

    -i:则让容器的标准输入保持打开。

    -t:让docker分配一个伪终端,并绑定到容器的标准输入上

    /bin/bash:执行一个命令

    提交(创建一个镜像)

    docker commit -m '改动信息' -a "作者信息" [container_id] [new_image:tag]

    日志

    docker logs [container_id]

    属性

    docker inspect [container_id]

    2.3、数据管理

    数据卷

    数据卷就是将宿主机的某个目录,映射到容器中(*访问宿主机文件就是访问容器文件),作为数据存储的目录,我们就可以在宿主机对数据进行存储

    命令详解

    docker run -itd --name [容器名字] -v [宿主机文件]:[容器文件] [镜像名称]

    注意:

    -v 宿主机文件:容器文件 可以存在多个,表示同时挂载多个

    宿主机问文件尽量用绝对路径,容器文件即使不存在,Docker自动创建

    2.4、网络管理

    默认构建容器,网络模式为桥接模式;那么桥接模式下,容器只能和宿主机通信,原理图如下:

    那么,如果我们想,通过宿主机的ip和端口来直接访问容器,该如何实现呢?接下来,我们讲解docker的端口映射就可以做到这点!

    端口映射

    命令格式:

    docker -P|p [镜像名称]

    注意:

    -P(大写) 指的是容器应用PORT随机映射到宿主机上的PORT

    生产场景一般不使用随机映射,好处是由docker分配,宿主机端口不会冲突,

    -p(小写) 宿主机IP:宿主机PORT:容器PORT

    指定端口映射,在标准化场景下使用频率高,

    宿主机IP不写表示"0.0.0.0",宿主机PORT不写表示随机端口,容器PORT必须指定

    简单实践

    默认随机映射(大写的-P)

    docker run -d -P nginx

    指定端口映射(-p(小写) 宿主机IP:宿主机PORT:容器PORT)

    python@ubuntu:~/Desktop$ docker run -d -p 192.168.203.153:8899:80 nginx a875f555f9214b38cf45d49bcfacfa6cbf3e904e0d8b069d800f8552da8949b6

    此时就可以在本地的window系统访问容器的nginx了

    网络模型

    命令格式

    docker network help|ls|create|...

    模式解析

    bridge模式:Docker的默认模式,它会在docker容器启动时候,自动配置好自己的网络信息,同一宿主机的所有容器都在一个网络下,彼此间可以通信。类似于我们vmware虚拟机的nat模式。

    host模式:鸠占鹊巢,用着宿主机的东西,干自己的事情。容器使用宿主机的ip地址进行通信。

    特点:容器和宿主机共享网络

    **none模式:**这种模式最纯粹,不会帮你做任何网络的配置,可以最大限度的定制化。

    简单实践

    容器使用宿主机的ip地址和端口进行通信,容器和宿主机共享网络。

    # 重点,必须掌握 docker run --network=host -itd --name <容器名称> <镜像名称>

    使用网络

    docker run --network=host -itd --name nginx-host nginx

    断开网络

    docker network disconnect bridge-test nginx-new-bri

    连接网络

    docker network connect bridge-test nginx-new-bri
    Processed: 0.014, SQL: 8