Docker基本概念
仓库(Repository):用来保存镜像 Docker Registry
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,
镜像是静态的定义,容器是镜像运行时的实体。
容器可以被创建、启动、停止、删除、暂停等。
安装的:Docker 主机(Host) Docker Machine
使用的 Docker 客户端(Client)
安装的Docker需要的
docker
nvidia-docker
需要提前确认GPU的支持
Docker的使用
docker images : 列出本地镜像
使用 docker run 命令来在容器内运行一个应用程序
docker stats --help 帮助系统
-- docker 命令来查看到 Docker 客户端的所有命令选项
-- Docker 公共仓库 Docker Hub docker search centos
-- Docker 私有仓库
Docker容器状态
created(已创建) restarting(重启中)
running 或 Up(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
-- 启动或者关闭
sudo systemctl start docker
sudo systemctl stop docker
sudo systemctl restart docker
Docker常用命令
查看docker是否安装成功 docker version
-- 查看镜像 sudo docker images
-- 查看容器 sudo docker ps -a
## cd docker_images/
sudo docker save -o ufoy.tar ufoy-docker
sudo docker load -i ufoy.tar # docker load : 导入使用 docker save 命令导出的镜像。 --input , -i : 指定导入的文件
sudo docker inspect *********
sudo docker history *********
说明:
docker inspect 用于查看docker对象的底层基础信息。
包括容器的id、创建时间、运行状态、启动参数、目录挂载、网路配置等等。
另外,该命令也可以用来查看docker镜像的信息。
sudo docker run --runtime=nvidia
sudo nvidia-docker start "***
sudo nvidia-docker exec -it "***" /bin/bash
-- docker exec 进入容器内部
##停止和删除
docker stop 你的_CONTAINER ID
docker rm 你的CONTAINER_ID
使用docker commit命令制作docker镜像
docker history命令用来显示镜像创建的历史记录信息-再现完整构建命令
docker commit 命令主要功能是把当前容器提交打包为镜像
以使用docker commit构建镜像,但是推荐使用 Dockerfile 构建镜像(构建指令和设置指令)
# sudo docker info
其他命令和说明
docker tag
Dockerfile 的指令每执行一次都会在 docker 上新建一层。
指令: COPY ADD CMD ENTRYPOINT ENV ARG VOLUME EXPOSE WORKDIR
制作Docker镜像并推送到镜像仓
容器引擎 docker
制作容器镜像:镜像(Image)
Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),
每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建
Dockerfile指令介绍如下。
FROM语句:表示使用nginx镜像作为基础镜像,一个Dockerfile中FROM是必备的指令,并且必须是第一条指令。
RUN语句:格式为RUN <命令>,表示执行echo命令,在显示器中显示一段“Hello, SWR!”的文字。
vim Dockerfile
docker build
镜像库管理
Docker搭建带有访问认证的私有仓库
拉取镜像registry(仓库)和registry-web(用于访问仓库的UI界面)
下载 docker-compose
创建几个目录,用于存放配置文件和作为私有仓库的镜像存储目录
设置配置文件
启动容器 docker-compose up -d
镜像运行情况:docker ps | grep registry
登录镜像仓库。
docker login -u [区域项目名]@[AK] -p [登录密钥] [镜像仓库地址]
其中,区域项目名和镜像仓库地址在1中获取,AK在2中获取,登录密钥为3的执行结果
# 登录私有镜像仓库 registry
docker Login 100.10.10.12:8000 # 测试账号test 密码 aTtest123@
docker login -u test -p Ttest123@
相关认证信息在: $HOME/.docker/config.json 文件中
Registry的登陆密码是在容器镜像服务的密码。 Docker 会将 token 存储在 ~/.docker/config.json 文件中,从而作为拉取私有镜像的凭证
上传镜像:不同用户分配相应的访问权限(读取、编辑、管理) 镜像不包含任何动态数据
docker tag 2048-demo:v1 swr.cn-north-1.myhuaweicloud.com/group/2048-demo:v1
docker push [镜像仓库地址]/[组织名称]/[镜像名称:版本名称]
制作镜像压缩包: docker save [OPTIONS] IMAGE [IMAGE...]
Linux系统
01.ssh
ssh -p 20 user@host
ssh-keygen生成一个自己的公钥 新生成两个文件:id_rsa.pub 和 id_rsa 前者是你的公钥,后者是你的私钥
公钥传送到远程主机host上面:
$ ssh-copy-id user@host
02.scp file_source file_target
-r: 递归复制整个目录
##本地推远程
scp /home/snn_id/docker.sh test_id@100.100.100.100:/home/test_id/
scp -r snn_id@10.10.10.10:/home/ss_id/docker.sh /home/test_id/
03.Linux tee命令用于读取标准输入的数据,并将其内容输出成文件
sudo tee /etc/docker/daemon.json <<EOF
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
EOF
其中: <<EOF,以EOF输入字符为标准输入结束
命令tee与重定向的区别
重定向,是将读取的内容输出到指定文件中,在屏幕上并不显示
命令tee,在屏幕上显示的同时,将读取的内容也重定向到指定文件中
类似
sed 's//home/ballchang/下载/hadoop3/jdk//usr/lib/jvm/java-1.8.0-openjdk-amd64/' /home/hadoop/hadoop-env.sh
# -i :直接修改读取的文件内容,而不是输出到终端
sed -i 's//home/ballchang/下载/hadoop3/jdk//usr/lib/jvm/java-1.8.0-openjdk-amd64/' /home/hadoop/hadoop-env.sh
sudo pkill -SIGHUP dockerd ps kill
04.添加软件包存储库
sudo apt-key add -
distribution
Advanced Packaging Tool(apt)是Linux下的一款安装包管理工具
APT使用一个文件列出可获得软件包的镜像站点地址,这个文件就是/etc/apt/sources.list
格式如下: deb [web或ftp地址] [发行版名字] [main/contrib/non-free]
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
确保软件包列表是最新的:apt-get update
05.sudo usermod -aG sudo your_name
参考
nvidia-container-runtime https://github.com/nvidia/nvidia-container-runtime#docker-engine-setup
【Docker】Ubuntu16.04安装docker https://blog.csdn.net/heiheiya/article/details/102820157
【Docker】Ubuntu16.04安装nvidia-docker2 https://blog.csdn.net/heiheiya/article/details/102834222
【Docker】nvdia-docker2 docker-ce https://blog.csdn.net/heiheiya/article/details/102834703