-
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 -
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 -
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
与github类似 docker hub也是一个存放容器的远程仓库,当我们配置好一个容器系统环境,可以直接push到远程仓库,之后可以在任意一台宿主机pull到本地使用。
-
docker hub: https://hub.docker.com/ -
NGC: https://ngc.nvidia.com/
国外仓库访问比较慢,有时候可能会登录不上,我们这里使用阿里云的仓库
参考资料:https://www.cnblogs.com/jinjian91/p/11349453.html
阿里云docker上手资料:https://help.aliyun.com/document_detail/60743.html?spm=5176.166170.863064.1.6f9d217fG6lE49
sudo docker login --username=<阿里云账号> registry.cn-hangzhou.aliyuncs.com
登录的主要目的是像公共仓库push自己的容器镜像,如没有这方面使用需求,可以跳过
由于docker总是需要sudo权限,每次都要输入sudo和密码比较麻烦,我们可以将docker权限给当前用户:
此时直接使用docker命令应该不需要输入权限了,但是在执行docker images命令时,可能会弹出这样的警告:
这里我使用的是阿里云加速器,需要注册阿里云账号获取私人加速器地址
在 /etc/docker/daemon.json文件中写入加速器地址即可,没有的话手动创建
{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}(这是一个示例)
3,docker常用命令
例如:docker pull hello-world:latest
2) -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
例如:docker run -it ubuntu:latest 会进入一个伪终端,作为容器的终端,ctrl+D可以退出
例如 docker run -it -p 1234:22 --name test3 -d 镜像名称:tag
上述命令的意思是,以某镜像启动一个容器 开启伪终端 并将本地的1234端口映射到容器22端口,该容器后台启动
6) -v 物理机与容器共享文件夹 -v 物理机路径:容器路径
docker start -i containerID 启动容器并打开伪终端
docker attach containerID 进入后台容器(保证容器的状态是UP)
docker cp [YourHostFilePath] [containerID]:[DockerPath] 将宿主机内的指定文件传输至容器内部的指定地址。
docker commit 容器id/容器名字 镜像名称:tag 容器重新发布为镜像
在容器中安装ssh-server并开启服务
sudo apt-get install openssh-server #安装ssh服务器
service ssh status # 查看ssh服务启动情况
service ssh start # 启动ssh服务
vi /etc/ssh/sshd_config
将PermitRootLogin的值从 withoutPassword 改为yes
service ssh restart # 重启动ssh服务
docker pull uifd/ui-for-docker
docker run -it -d --name docker-web -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker
支持容器管理
# 没有登录验证,因为没有登录体系,目前解决办法是,只开放本地访问,或者通过TLS来对权限进行控制。
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
# 基于docker api,安全性高,可指定docker api端口,支持TLS证书认证。
docker run -it -p 2134:22 --name lei_meg --gpus all -v /media/omnisky/Data1/lei_meg:/data -d tjcar:v1.0
docker run -it -p 物理机端口:22 --name <名> --gpus all -v 物理机目录:容器目录 -d tjcar:v1.0