Docker
docker配置
方法一: 推荐,直接搜索可用的国内docker镜像网站,拉取时直接加前缀
docker create --name wikimedia-dataset docker.1ms.run/cloudsuite/wikimedia-pages-dataset
方法二:不推荐,daemon.json中有失效的,又会转为去源镜像网站拉取
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.1ms.run"
]
}
systemctl daemon-reload
systemctl restart docker
使用镜像新建容器
docker pull ubuntu:18.04
sudo docker run -it -v [host path]:[docker path] -p [host port]:[container port] -d --privileged --shm-size 2g --name [container name] ubuntu:18.04 /bin/bash
其中:
-p: 一般选择宿主机的一个端口映射到容器的22端口,方便ssh连接
-d:将容器放在后台执行
[host path]:[docker path]:将宿主机的指定路径挂载到docker容器的指定路径
ubuntu:18.05:docker的镜像,可以docker pull拉取指定镜像
如果要跑网络训练相关的应用,建议把shm设置的高一些,默认是64M
重启docker服务之前,先把docker容器正常stop,不然后续再start容器会因容器没有正常退出而报错
如果pull镜像失败:
参考链接:https://cloud.tencent.com/developer/article/2472366
也可以离线打包镜像:
docker save -o ubuntu:18.04.tar ubuntu:18.04
docker load -i ubuntu:18.04.tar
连接镜像方式
[1]sudo docker attach [container name]
连接后exit,容器也会stop,下次需要再start,不推荐
[2]sudo docker exec -it [container name] bash
连接后exit,容器仍运行,推荐
[3]可以通过ProxyCommand,使用宿主机作为跳板机,连接docker容器
ssh连接docker容器
apt-get install openssh-server
service ssh start
passwd
vim /etc/ssh/sshd_config
设置 PermitRootLogin yes, service ssh restart
报错修复:
sudo systemctl status containerd
可以看到自己容器ID对应还有task存在
ps -aux | grep [容器ID]
根据相应pid强制杀死进程,再启动容器
sudo kill -9 3550
sudo docker start [container_name]
docker开放端口供vscode连接
yum install -y openssh
ssh-keygen -A
# 设置密码
passwd root
# 修改sshd端口号,修改Port
vim /etc/ssh/sshd_config
# 这里不需要重启ssh服务
# sshd会阻塞前台shell,如果没有阻塞,则运行报错
/usr/sbin/sshd -D
# 查看报错
/usr/sbin/sshd -D -e
# 如果阻塞前台shell,则可以用前面设置的Port连接docker容器
参考链接:
https://blog.csdn.net/weixin_44966641/article/details/123930747
https://blog.csdn.net/weixin_42245133/article/details/103851810