【docker】容器

在这里插入图片描述

数据卷:独立于容器的生命周期

指令

==下载一个镜像==
docker pull nginx
docker pull pytorch/pytorch:1.8.1-cuda10.2-cudnn7-devel


==镜像-->启动容器==
docker run -d -P 80:80 ngix	#运行一个容器 -d表示后台运行  -P后代表端口映射 ngix为镜像名 
docker run --env http_proxy="http://192.168.1.38:7890" ngix # 运行容器 仅会执行镜像默认命令,运行后就退出了-env 设置环境变量代理
docker run -it ubuntu:18.04 bash #运行容器 开启终端 
docker run -it -p 127.0.0.1:4000:22 ubuntu:18.04 bash #运行容器 开启终端 映射22端口到宿主机的4000
docker run -it --rm ubuntu:18.04 bash # 运行容器 -it开启交互式终端 --rm 容器退出后立即删除  bash 开启交互式shell
docker run --gpus all -it --rm 8b92 bash	# 运行一个容器 并开放主机的gpus资源
docker run -it --privileged=true -v /test:/soft 8b92 bash # 运行 挂载宿主机test目录到容器内/soft内	解决无权限问题

docker run --gpus all --shm-size=16g -it --name torch181  pytorch/pytorch:1.8.1-cuda10.2-cudnn7-devel 指定名称

docker run --gpus all --shm-size=8g -it -v {DATA_DIR}:/mmfewshot/data mmfewshot	# --shm-size=8g限制使用8g内存

docker run --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=0,1 --shm-size 8G  -it ******* env LANG=C.UTF-8 /bin/bash	# --shm-size 8G设置内存


==运行、执行容器==
docker start $CONTAINER_ID 运行退出的容器
docker attach $CONTAINER_ID ##连接上容器实时查看
或者两行变一行直接
docker start -i $CONTAINER_ID 

docker exec dcnet /etc/init.d/ssh restart 也可以直接执行命令但不交互

docker logs $CONTAINER_ID ##在container外面查看它的输出

docker exec -it [CONTAINER ID] /bin/bash #进入运行中/后台运行的容器
docker rename oldcontainer newcontainer	更改容器名称


dockers cp src/ 96:/myfile/  复制主机某文件至容器内 96为容器id 
dockers cp 96:/myfile/  src/ 复制容器内某文件至宿主机 96为容器id


docker commit [CONTAINER ID] myimage:myversion #将==容器保存为本地镜像== 不推荐 一般采用Dockerfile生成镜像
docker rm -f 5f  #==删除==id为5f的容器 -f 强制删除
docker kill -s  KILL mynginx	#==杀掉==一个运行中的容器
docker rmi m2 #==删除==m2镜像
docker save m2 > 1.tar # 将m2镜像保存为归档文件
docker load < 1.tar #加载文件中的镜像

docker build -t m2 .	# 用Dockerfile创建镜像 m2为镜像名 点.为表示当前目录


docker ps -a	# 查看历史容器
docker ps  #查看运行中的容器
docker images #列出所有镜像
==登入登出
docker login -u [用户名] -p [密码] [服务器网站]	#一般不推荐这样登录 密码可见 服务器网站不填为docker官方的 填的话是对应的服务器 例如registry.cn-shenzhen.aliyuncs.com是阿里的
docker login -u [用户名] [服务器网站]
docker login --username=[用户名] registry.cn-shenzhen.aliyuncs.com
docker login registry.cn-shenzhen.aliyuncs.com --username=[用户名] # 服务器也可以放前面


docker logout

二次挂载、端口映射
先停止容器服务
systemctl stop docker
vi /var/lib/docker/containers/{container_id}/hostconfig.json
systemctl start docker

权限问题

通过将用户添加到docker用户组可以将sudo去掉,命令如下
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组

为docker设置代理,非容器内

有时候docker pull下载镜像很慢 可以设置代理
1。停止docker

systemctl stop docker

2.更改docler服务文件,一般需要sudo

sudo vim /lib/systemd/system/docker.service

3.找到[Service]那一项,在其下添加如下,127.0.0.1:8889是我自己的代理IP及端口,更换为你的端口

Environment=HTTP_PROXY=http://127.0.0.1:8889/ HTTPS_PROXY=http://127.0.0.1:8889/

最后重启docker

systemctl daemon-reload
systemctl start docker

Dockerfile

# Base Images
## 从天池基础镜像构建(from的base img 根据自己的需要更换,建议使用天池open list镜像链接:https://tianchi.aliyun.com/forum/postDetail?postId=67720)
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
##安装依赖包
RUN pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple 
##或者从requirements.txt安装
##RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple 

## 把当前文件夹里的文件构建到镜像的根目录下,并设置为默认工作目录
ADD . /
WORKDIR /

## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]

docker build -t myimage:1.0 .

天池docker cuda gpu笔记

下载pycocotools失败 github下载好复制进去再装
pip install Cython -i https://mirrors.aliyun.com/pypi/simple/
docker cp PythonAPI 68:/mmdetection/ #将githun下载到的PythonAPI 导入进去
cd PythonAPI
pip install pycocotools

pycharm 调试docker内程序

docker run --gpus all -it -p 127.0.0.1:4000:22 ubuntu:18.04 bash #运行容器 开启终端 映射22端口到宿主机的4000
passwd
apt-get update
apt-get install openssh-server	# 安装ssh
apt-get install openssh-client	# 安装ssh
apt-get install vim				# 安装vim
/etc/init.d/ssh restart	# 启动ssh

执行后如图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值