---知识面决定攻击面--|

sesmof

园龄:1年4个月粉丝:3关注:10

[docker教程]docker基础速成

docker 基本操作

1.下载/卸载镜像

  • 拉取最新版本的 Nginx 镜像:

    Bash

    docker pull nginx
    
  • 拉取 1.19 版本的 Nginx 镜像:

    Bash

    docker pull nginx:1.19
    
  • 拉取某个特定摘要的 Nginx 镜像(通常用于确保拉取到完全一致的镜像):

    docker pull nginx@sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
  • 查看下载下来的镜像

    ┌──(root㉿kali)-[~]
    └─# docker images
    REPOSITORY           TAG       IMAGE ID       CREATED       SIZE
    alpine               latest    b0c9d60fc5e3   3 days ago    7.83MB
    sagikazarmark/dvwa   latest    e901498e651a   7 years ago   359MB
    
    
  • 卸载pull下来的镜像

    docker rmi [imageid/repository:tag]
    

2.运行/删除/创建容器

  • 临时创建容器,并进入交互shell:

    docker run --rm --privileged=true -it alpine 
    
  • 后台运行容器

    docker run --name twiki -d -p 7777:80 teamssix/twiki:main 
    
  • 查看正在运行的容器

    docker ps
    
  • 查看所有未被rm的容器,包括执行了docker stop的

    docker ps -a
    
  • 停止容器运行

    docker stop <容器ID或名称>
    

​ 向容器内的主进程发送一个 SIGTERM 信号,请求容器优雅地停止。

  • 创建容器

    docker create <镜像名>
    

    给docker create提供的参数和给docker run时提供的参数相似

    例:

    ┌──(root㉿kali)-[~]
    └─# docker create --name twiki2 -it -p 7778:80 teamssix/twiki:main  
    d257900c1eea8effc9fdfecf844f36e0a5dca0c42c05569915f54989dfba1c5f
    
  • 再次运行停止的容器/运行创建的容器

    docker start <容器ID或名称>
    
  • 删除停止的容器

    docker rm <容器ID或名称>
    
  • 强制删除未停止的/已经停止的容器

    docker rm -f <容器ID或名称>
    

3.对已运行的容器的操作

  • 进入正在运行的容器的交互shell

    docker exec -it <容器ID> /bin/sh
    

    注:这个exec命令其实是在容器里执行可执行文件,执行了/bin/sh所以有了交互shell

  • 复制文件操作(宿主机与容器互传文件)

    docker cp <容器id或名称>:容器中文件的绝对地址 宿主机目标目录
    
    docker cp 宿主机中的文件 <容器id或名称>:容器目标目录
    

4.Docker Volume[^ what is docker volume]

  • 创建valume
# 创建一个命名 volume
docker volume create my-volume

# 创建一个匿名 volume 并将其挂载到容器
docker run -v my-data:/app/data my-image #显然,自动创建
  • 挂载valume
# 挂载一个命名 volume
docker run -v my-volume:/app/data my-image

# 挂载一个主机目录
docker run -v /home/user/data:/app/data my-image
  • 查看valume
# 列出所有 volume
docker volume ls
  • 删除
# 删除一个命名 volume
docker volume rm my-volume


  1. 这些镜像可以在docker hub中找到,国内最好使用代理上dockerhub ↩︎

  2. 优先从本地运行镜像,如果本地没有就pull ↩︎

  3. -it -i (保持标准输入打开):标准输入 (STDIN) 是指程序接收用户输入的地方,通常是键盘。使用 -i 选项可以使容器的标准输入保持打开状态,这意味着你可以向容器输入命令。如果没有 -i,容器启动后就无法接收任何输入。;;; -t (分配一个伪终端): 伪终端 (pseudo-TTY,也称为 PTY) 是一种虚拟的终端设备,它模拟了真实的终端环境。使用 -t 选项可以为容器分配一个伪终端,这使得容器可以像在一个真实的终端中一样运行程序,并处理终端控制字符,例如: ↩︎

  4. --rm表示运行玩之后自动删除镜像(自动运行一遍docker rm) ↩︎

  5. 以特权模式运行镜像(我正在学习docker逃逸所以开启了这个选项)为什么需要 --privileged 1.特定任务需求: 运行需要 root 权限的程序: 某些程序需要以 root 权限运行,才能访问特定的系统资源或执行特定的操作。 2.访问硬件设备: 当容器需要直接访问硬件设备(比如 GPU)时,就需要使用 --privileged3.执行系统级操作: 如果容器需要执行一些系统级的操作,比如安装内核模块,那么也需要 --privileged4.容器内运行 Docker: 如果要在容器内运行另一个 Docker 守护进程,也需要使用 --privileged↩︎

  6. 设置镜像名 ↩︎

  7. 设置镜像端口80映射到物理机端口7777 ↩︎

  8. 与终端分离(后台运行)
    [^ what is docker volume]: Docker volume 是一个独立的文件系统,它存在于 Docker 引擎中,但与容器的生命周期是分离的。这意味着,即使容器被删除或重新创建,存储在 volume 中的数据仍然会保留。这使得 volume 成为存储容器生成数据(例如数据库、配置文件、用户上传的文件等)的理想选择。 ↩︎

本文作者:sesmof

本文链接:https://www.cnblogs.com/sesmof/p/18666748

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   sesmof  阅读(18)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 飘上月球,不死之烟 上海爱丽丝幻乐团
飘上月球,不死之烟 - 上海爱丽丝幻乐团
00:00 / 00:00
An audio error has occurred.