Docker经验
# 为什么是 Docker
其实我本身原本是比较抗拒 Linux
的,但奈何 macOS
的硬盘仅仅只有 500G
,而且还是一个主系统,不敢随意折腾,所以虚拟机不考虑的情况下只能采用 Docker
来练习 Linux
的一些命令了
# 入门即地狱
原本以为使用 Docker Desktop
就可以直接进行拉取和运行了,结果现实给了我深深的一击。
我选用的是 Debian
来作为练习的 Linux
。结果通过从 docker hub (opens new window) 中选择了 debian - Official Image | Docker Hub (opens new window) 这个官方镜像来进行 pull
,pull
完毕后,点击镜像右侧的运行按钮,虽然创建了一个容器,但是并没有运行起来...想着是官方的镜像,于是各种尝试,均以失败告终,无奈问起了 GPT
,告知采用命令...虽然不太喜欢,但是已经毫无办法的五只能尝试使用命令,最后终于运行起来了...
# 安装 Docker
# homebrew
brew cask install docker
# 手动下载安装
- 去 Docker Hub (opens new window)
- 选择对应的系统,下载
- 无脑下一步下一步直接安装完毕 (比国内一些软件需要推荐一堆垃圾软件简直不要好太多)
注意:
Windows
下需要开启Hyper-V
,使用管理员身份打开PowerShell
执行Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
即可
# 如何创建一个本地的 Linux
练习环境
注意:此处个人建议不要使用
Docker Desktop
来进行操作,镜像可能拉取的有异常,原因参见入门即地狱
# pull
(拉取)
docker pull debian
# run
(运行)
docker run -itd --name debian-test debian
# 说明:
整个命令的作用是在后台以交互式的方式启动一个名为
debian-test
的容器,并使用debian
镜像作为容器的基础镜像。
# 参数详解
# -itd
这其实是三个参数的组合
i
: 表示交互式操作,使容器的标准输入保持打开状态。t
: 分配一个伪终端(pseudo-TTY
),通常与-i
一起使用,以便在容器内运行交互式进程。d
: 以后台模式(detached mode
)运行容器,容器会在后台启动并且不会占据当前终端。
# --name
为容器指定一个名字,即将创建的容器名称为 debian-test
。
# debian
表示要基于 debian
镜像启动容器。
# 操作容器
# 启动
# Docker Desktop
运行
# 方案一
在 Containers
中找到正在运行的容器,点击 table
中的 name
列中的 debian-test
选择 Exec
选项卡即可。
# 方案二
在 Containers
中找到正在运行的容器,点击 table
中的 Actions
列中的 ...
选择 open in terminal
即可
# terminal
(终端)中运行
终端中退出和容器的交互,执行命令:
exit
即可
docker exec -it debian-test /bin/bash
# 基础命令
# docker ps
查看正在运行的容器
docker ps
# docker ps -a
查看所有的容器
docker ps -a
# docker images
查看所有的镜像
docker images
# docker rm
删除容器
docker rm <容器ID>
# docker rmi
删除镜像
docker rmi <镜像ID>
# docker start
启动容器
docker start <容器ID>
# docker stop
停止容器
docker stop <容器ID>
# docker restart
重启容器
docker restart <容器ID>
# docker kill
强制停止容器
docker kill <容器ID>
# docker exec
进入容器
docker exec -it <容器ID> /bin/bash
# docker cp
从容器中拷贝文件到宿主机
docker cp <容器ID>:<容器内路径> <宿主机路径>
# docker commit
提交容器副本
docker commit <容器ID> <新镜像名称>
# docker logs
查看容器日志
docker logs <容器ID>
# 查看最近100行
docker logs --tail 100 <容器ID>
# 查看最近100行并且实时刷新
docker logs --tail 100 -f <容器ID>
# 查看最近100行并且实时刷新并且输出时间
docker logs --tail 100 -f -t <容器ID>
# 查看指定时间的日志
docker logs --since="2024-01-05T11:35:00" --until="2024-01-05T11:36:00" <容器ID>
2
3
4
5
6
7
8
9
10
# docker inspect
查看容器详细信息
docker inspect <容器ID>
# docker top
查看容器中运行的进程
docker top <容器ID>
# docker-compose up -d
启动
docker-compose.yml
中的容器 注意:执行docker-compose
命令时,当前目录必须是docker-compose.yml
所在目录
docker-compose up -d
# docker build -t <镜像名称> .
构建镜像 注意:执行
docker build
命令时,当前目录必须是Dockerfile
所在目录
docker build -t <镜像名称> .
# docker push <镜像名称>
推送镜像
docker push <镜像名称>