[docker教程]docker基础速成
docker 基本操作
1.下载/卸载镜像[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.运行/删除/创建容器[2]
-
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
这些镜像可以在docker hub中找到,国内最好使用代理上dockerhub ↩︎
优先从本地运行镜像,如果本地没有就pull ↩︎
-it -i (保持标准输入打开):标准输入 (STDIN) 是指程序接收用户输入的地方,通常是键盘。使用 -i 选项可以使容器的标准输入保持打开状态,这意味着你可以向容器输入命令。如果没有 -i,容器启动后就无法接收任何输入。;;; -t (分配一个伪终端): 伪终端 (pseudo-TTY,也称为 PTY) 是一种虚拟的终端设备,它模拟了真实的终端环境。使用 -t 选项可以为容器分配一个伪终端,这使得容器可以像在一个真实的终端中一样运行程序,并处理终端控制字符,例如: ↩︎
--rm表示运行玩之后自动删除镜像(自动运行一遍docker rm) ↩︎
以特权模式运行镜像(我正在学习docker逃逸所以开启了这个选项)为什么需要 --privileged 1.特定任务需求: 运行需要 root 权限的程序: 某些程序需要以 root 权限运行,才能访问特定的系统资源或执行特定的操作。 2.访问硬件设备: 当容器需要直接访问硬件设备(比如 GPU)时,就需要使用
--privileged
。 3.执行系统级操作: 如果容器需要执行一些系统级的操作,比如安装内核模块,那么也需要--privileged
。 4.容器内运行 Docker: 如果要在容器内运行另一个 Docker 守护进程,也需要使用--privileged
。 ↩︎设置镜像名 ↩︎
设置镜像端口80映射到物理机端口7777 ↩︎
与终端分离(后台运行)
[^ what is docker volume]: Docker volume 是一个独立的文件系统,它存在于 Docker 引擎中,但与容器的生命周期是分离的。这意味着,即使容器被删除或重新创建,存储在 volume 中的数据仍然会保留。这使得 volume 成为存储容器生成数据(例如数据库、配置文件、用户上传的文件等)的理想选择。 ↩︎
本文作者:sesmof
本文链接:https://www.cnblogs.com/sesmof/p/18666748
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步