Docker 包括三个基本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
docker的安装部分不做介绍,下面介绍一些常用的docker命令
推送镜像前需要先登录仓库:
docker login https://hub.xx-i.com.cn:9443/
推送镜像:
docker push
1. docker images:查看所有镜像list
$ docker images
2. docker load :导入本地的镜像(一般是压缩格式)
$ docker load --input fedora.tar
3. docker tag:给镜像打tag,也可以用来重命名镜像
使用方式: docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
$ docker tag ubuntu:15.10 runoob/ubuntu:v3
$ docker tag IMAGE_ID runoob/ubuntu:v3
4. docker ps:列出创建的容器
$ docker ps
5. docker commit:创建新的容器
例如,在docker容器里面安装了一些包,apt-get install lrzsz,然后想将容器进行永久保存,可以使用commit命令
语法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
$ docker commit a404c6c174a2 mymysql:v1
在exit容器前,commit容器进行保存
6. docker exec:在容器中执行命令
$ docker exec -it 9df70f9a0714 /bin/bash
其中,-it表示交互式执行命令
7. docker rmi:删除镜像
批量删除镜像:
docker image ls | grep none | grep -v 9ed626e20882| awk '{system("docker rmi " $3 " --force")}'
$ docker rmi <image id>
8. docker build:通过Dockerfile构建镜像
$ docker build -t runoob/ubuntu:v1 .
9.docker run:运行镜像
$docker run -it --name short-video2 -m 16g --cpuset-cpus "0-7" --runtime nvidia --net host registry.xxx.aaa.bbb/romai_dev/general-ooo-py36:v1.0 bash
10.docker exec:执行运行的容器
$ docker exec -it <container id> bash
11. docker cp:用于容器与主机之间数据拷贝
sudo docker cp file container_id:/workdir
将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
$ docker cp /www/runoob 96f7f14e99ab:/www/
将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。
$ docker cp /www/runoob 96f7f14e99ab:/www
将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。
$ docker cp 96f7f14e99ab:/www /tmp/
12. gpu打入docker容器
sudo docker run -it --runtime=nvidia --gpus all -v /root/tmp:/workdir repo:9443/dad/tritonserver:22.xx bash
其中,-v表示挂载目录或文件到docker容器中,需要按照docker nvidia环境,安装教程:Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.14.3 documentation
$ docker run -it --runtime=nvidia --gpus all hub.micro-i.com.cn:9443/image_id:22.11-all bash