文章目录
- Docker 安装
- 安装与换源
- 安装一个镜像
- 获取别人的镜像
- 或者 自己使用Dockerfile创建一个镜像
- 我的“python”文件夹
- Dockerfile中的内容
- 运行容器
- 容器运行
- 容器查看
- 容器启停
- 进入容器执行命令
- 文件复制
- 容器删除
- 镜像相关命令
- 容器与镜像状态检查
- 常用命令速查
- 进一步操作
- 进入之前启动的容器
- 退出容器但不停止容器
- 导出环境(可以发给他人直接运行)
- 加载环境
- 将容器保存为镜像
- 参考与更多
- 如果使用pip命令,建议在使用前换源
Docker 安装
- 注:可能在windows中使用会报错,但是我因为再此之前安装过WLS,所以没有任何报错
- WTG: Windows10企业版中安装Docker
- 老本版Docker安装在windows 中一般需要开启“启用或关闭Windows功能”中的 “Hyper-V”(注意冲突:某些手机模拟器和老版本的VMware需要关闭此功能运行,更新版本的docker已经用WSL2代替“Hyper-V”了)
安装与换源
- 下载(其中服务端的没有界面)下载之后点击安装即可,安装完只后重启windows。注:一台电脑上虚拟机好像不能与docker同时运行
- 安装完点击Restart,自动重启电脑
- 打开后在设置里添加镜像加速源 Docker Engine https://registry.docker-cn.com
{ "registry-mirrors": [ "https://registry.docker-cn.com", "https://hub-mirror.c.163.com", "https://ustc-edu-cn.mirror.aliyuncs.com", "https://mirror.baidubce.com" ], "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "features": { "buildkit": false } }安装一个镜像
获取别人的镜像
- 去docker的镜像仓库https://hub.docker.com/
- 比如直接搜索python
- 进入想安装的镜像的界面
- 点击tags,tags界面如下:
- 复制docker命令,拉取别人的镜像:docker pull python:3.7.13
- 在任何路径下,shift+鼠标右键:运行powershell
- 运行命令即可,运行完成只后即可在Docker软件中的Image部分看到新增的镜像
pytorch的镜像
或者 自己使用Dockerfile创建一个镜像
我的“python”文件夹
----python --||--Dockerfile|--requirements.txt|--test.pyDockerfile中的内容
FROM python:3.7.13 WORKDIR ./ COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD [ "python", "./test.py" ]requirements.txt(为空)
test.py
for i in range(100000): print(1)在python目录中,shift+右键,打开powershell,执行:
docker build -t test . # 就会像pull一样进行下载与创建镜像 docker run test注:可在 https://hub.docker.com/_/python中“How to use this image”部分找到Dockerfile文件中的命令
FROM python:3 WORKDIR /usr/src/app COPY requirements.txt ./ RUN pipinstall--no-cache-dir-rrequirements.txt COPY..CMD["python","./your-daemon-or-script.py"]运行容器
容器运行
# 后台运行容器 docker run -d --name mycontainer nginx # 交互式运行容器 docker run -it --name mycontainer ubuntu /bin/bash # 映射端口 docker run -d -p 8080:80 --name web nginx # 映射目录 docker run -d -v /data:/app/data --name mycontainer nginx # 自动重启 docker run -d --restart=always --name mycontainer nginx # 指定环境变量 docker run -d -e NODE_ENV=production nginx容器查看
# 查看正在运行的容器 docker ps # 查看所有容器(包括已停止) docker ps -a # 查看容器详细信息 docker inspect mycontainer # 查看容器日志 docker logs mycontainer # 实时查看日志 docker logs -f mycontainer # 查看容器资源占用 docker stats # 查看容器进程 docker top mycontainer容器启停
# 启动容器 docker start mycontainer # 停止容器 docker stop mycontainer # 重启容器 docker restart mycontainer # 暂停容器 docker pause mycontainer # 恢复容器 docker unpause mycontainer # 强制终止容器 docker kill mycontainer进入容器执行命令
# 进入运行中的容器(推荐) docker exec -it mycontainer /bin/bash # 如果没有 bash,使用 sh docker exec -it mycontainer /bin/sh # 在容器中执行单条命令 docker exec mycontainer ls -la # 以 root 用户进入 docker exec -u root -it mycontainer /bin/bash # 查看容器内环境变量 docker exec mycontainer env文件复制
# 主机复制到容器 docker cp ./test.txt mycontainer:/app/ # 容器复制到主机 docker cp mycontainer:/app/test.txt ./ # 复制整个目录 docker cp ./data mycontainer:/app/docker ps -a # 列举所有容器(默认只列举运行中的) 找到CONTAINER ID # 运行结果 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3aa7b7b18f6f python:3.7.13 "python3" 30 minutes ago Up 30 minutes mystifying_meitner # 在powershell中运行命令 ## copy 主机->容器 docker cp test.py 3aa7b7b18f6f:/ ## copy 容器->主机 docker cp 3aa7b7b18f6f:/bin ./ # 用docker cp mystifying_meitner:/bin ./同样- 或将目录挂载到Docker
挂载目录:docker run-vD:/python:/mnt python:3.7.13# /mnt /为linux目录格式挂载目录:docker run-vD:/python:/mnt python:3.7.13# -v 本地目录:/容器目录 镜像名称:镜像tag挂载目录有多种方式,这只是一种方式# 解决闪退问题dockerrun-it--nametest-v**:/mnt-p5000:5000 node5000:latestps:发现在这个编辑器中输入:/ 会变成 😕
容器删除
# 删除已停止的容器 docker rm mycontainer # 强制删除运行中的容器 docker rm -f mycontainer # 删除所有已停止的容器 docker container prune # 删除所有容器(慎用) docker rm -f $(docker ps -aq)镜像相关命令
# 查看镜像 docker images # 拉取镜像 docker pull nginx # 删除镜像 docker rmi nginx # 构建镜像 docker build -t myapp:latest .容器与镜像状态检查
# 查看 Docker 版本 docker version # 查看 Docker 运行状态 sudo systemctl status docker # 启动 Docker sudo systemctl start docker # 设置开机启动 sudo systemctl enable docker # 查看 Docker 磁盘占用 docker system df # 清理无用资源 docker system prune常用命令速查
| 操作 | 命令 |
|---|---|
| 运行容器 | docker run |
| 查看容器 | docker ps -a |
| 启动容器 | docker start |
| 停止容器 | docker stop |
| 重启容器 | docker restart |
| 进入容器 | docker exec -it |
| 查看日志 | docker logs -f |
| 查看详情 | docker inspect |
| 复制文件 | docker cp |
| 删除容器 | docker rm |
| 查看资源 | docker stats |
进一步操作
进入之前启动的容器
docker exec -it 容器名称 /bin/bashdocker exec -it 容器名称 /bin/sh # 如果容器没有 Bashdocker attach 容器名称 # 如果想连接到之前窗口中的主进程注意:attach是连接容器主进程的终端,而exec是在容器中创建一个新的 Shell 进程。
退出容器但不停止容器
Ctrl + P Ctrl + Q导出环境(可以发给他人直接运行)
****/python>dockerimages#查看REPOSITORY TAG IMAGE ID CREATED SIZE python3.7.13 27599ef959712days ago 906MB ****/python>docker save python-opython37.tar 然后在执行代码的路径下会出现一个python37.tar文件加载环境
****/python>docker load -i python37.tar将容器保存为镜像
sudodockercommit 19971de1033d myubuntu:node25参考与更多
https://www.urlos.com/docker/thread-89652-1-1.html 报错:failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed todorequest: Head"https://registry.docker-cn.com/v2/library/python/manifests/3?ns=docker.io":unable to connect to106.14.52.175:443. Do you need an HTTP proxy? 解决:https://www.jianshu.com/p/56241136130d Docker 创建paddlepaddle https://blog.csdn.net/sinat_41581976/article/details/121069031 【【Docker】Dockerfile用法全解析-哔哩哔哩】 https://b23.tv/a5JfHo7[windows端的portable版本,需要安装virtual box](https://portapps.io/app/docker-toolbox-portable/)Docker 网络端口的映射:局域网文件传输
写给孩子看的 Kubernetes 动画指南【中英字幕】
如果使用pip命令,建议在使用前换源
python 换源: pip configsetglobal.index-url https://pypi.tuna.tsinghua.edu.cn/simple