• Docker 入门及实践


    Docker 入门及实践

    请添加图片描述

    前置学习

    相关资源

    相关命令

    • docker ps查看但钱运行中的容器

    • docker images查看镜像列表

    • docker rm container-id删除指定id的容器

    • docker stop/start container-id停止/启动指定id的容器

    • docker rimi image-id删除指定id的镜像

    • docker volume ls查看volume列表

    • docker network ls查看网络列表

    • docker pull imageName:tag 拉取配置镜像

    • docker rmi -f imageId...根据镜像id强制删除

    • docker ps查看正在使用的镜像

    • docker logs image-id查看日志

    • docker inspect 容器ID查看容器中的详细信息

    • docker exec -it 容器id进入正在运行的容器 (跟后面的docker run 类似)

      docker attach的区别

      attachexec
      直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器停止exec是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止
    • docker cp 容器ID:容器内路径 目的主机路径将容器中的文件拷贝到宿主机中,如果是Windows系统的话起始目录为/c/....

    • docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的镜像名:[Tag] 基于已有的容器使之成为一个新的镜像

    docker run 的常用命令及参数

    参数说明
    –name=“容器名字”为容器指定一个名字,否则自动取名
    -d后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
    -i以交模式运行容器,通常与-t同时使用
    -t为容器重新分配一个伪输入终端,通常与-i同时使用
    -P随机映射端口,大写P
    -p指定端口映射,小写p,端口映射 -p 8080(宿主机上):80(容器内)
    ``–privileged=true -v`/宿主机/绝对路径目录:/容器内目录,可以将数据存放在宿主机的指定目录:权限 (比较重要 -v可指定多个参数,可以实现容器和本地机器的数据关联实现数据的持久化)

    docker ps

    参数说明
    -a | -all展示所有正在运行的镜像
    -n展示前n个正在运行的镜像
    -l | --latest展示最后创建的镜像
    -q | --quiet只展示容器id
    -s | --size展示文件的大小

    docker 本地镜像发布

    image-20221027145605168

    容器与主机的数据交互

    1. docker cp 容器ID:容器内路径 目的主机路径
    2. docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名将数据卷同步保存到宿主机

    命令实操

    下载使用ubuntu镜像

    依次输入以下命令

    docker images // 查看存在的镜像
    docker pull ubuntu:18.04
    docker run -it ubuntu:18.04 bash //启动交互式ubuntu并使用bash
    // 输入 exit 退出
    
    • 1
    • 2
    • 3
    • 4

    image-20221027110929600

    实际案例

    1. 快速安装wordpress

    首先创建一个 docker-compose.yml,内容如下:

    version: '3.1'
    
    services:
    
      wordpress:
        image: wordpress
        restart: always
        ports:
          - 8080:80
        environment:
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_USER: exampleuser
          WORDPRESS_DB_PASSWORD: examplepass
          WORDPRESS_DB_NAME: exampledb
        volumes:
          - wordpress:/var/www/html
    
      db:
        image: mysql:5.7
        restart: always
        environment:
          MYSQL_DATABASE: exampledb
          MYSQL_USER: exampleuser
          MYSQL_PASSWORD: examplepass
          MYSQL_RANDOM_ROOT_PASSWORD: '1'
        volumes:
          - db:/var/lib/mysql
    
    volumes:
      wordpress:
      db:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    进入到同级目录,启动命令:

    docker-compose up -d
    
    • 1

    我用的是Windows桌面版的,所以可以直接查看可视化界面:

    image-20221027084554700

    然后我们可以打开浏览器访问:localhost:8080

    image-20221027084633496

    2. 制作自己的镜像

    这里直接参照 简明教程 中的操作

    给Web项目构建镜像

    示例项目代码:https://github.com/gzyunke/test-docker

    先去clone一下项目代码。

    编写 Dockerfile

    FROM node
    
    # 复制代码,将宿主机中 "." 目录下的文件到容器中 "/app" 目录下
    ADD . /app
    
    # 设置容器启动后的默认运行目录
    WORKDIR /app
    
    # 运行命令,安装依赖
    # RUN 命令可以有多个,但是可以用 && 连接多个命令来减少层级。
    # 例如 RUN npm install && cd /app && mkdir logs
    RUN npm install --registry=https://registry.npm.taobao.org
    
    # CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。
    # 如果还需要运行其他命令可以用 && 连接,也可以写成一个shell脚本去执行。
    # 例如 CMD cd /app && ./start.sh
    CMD node app.js
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    为镜像(安装包)和运行

    在代码文件夹下编译 docker build -t test:v1

    -t 设置镜像名称和对应的版本号

    这里可能会出现下载配置node出错

    image-20221027105343973

    可以按照下图,打开设置,修改其中配置中的"buildkit": false

    image-20221027105402526

    运行docker run -p 9950:8080 --name test-test test:v1

    • -p 映射容器内端口到宿主机
    • --name 容器名字
    • -d 后台运行

    打开浏览器进行访问

    image-20221027105721681

    扩展知识

    UnionFS(联合文件系统)

    Union 文件系统(Union)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统时Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。

  • 相关阅读:
    SG-Former实战:使用SG-Former实现图像分类任务(一)
    error while loading shared libraries: libgo.so.19 错误的解决
    探索X86架构C可变参数函数实现原理
    Ctfshow web入门 代码审计篇 web301-web310 详细题解 全
    在R语言中进行缺失值填充:估算缺失值
    (王道考研计算机网络)第四章网络层-第三节4:ARP、DHCP和ICMP
    Mac 上 VMvare 虚拟机 Centos 上的 Docker 容器中的文件夹共享到 Mac 实体机
    使用 Windows 包管理器 (winget) 安装 .Net
    认识微服务 SpringCloud (史上最全学习路线)
    jeecg-boot中上传图片到华为云obs云存储中
  • 原文地址:https://blog.csdn.net/qq_52785898/article/details/127563248