Docker 是一个开源的应用容器引擎,它允许在宿主机下运行多个虚拟环境,互不干扰。
基础概念
1.Docker 镜像Image:它是一个安装包,包含了用于创建、部署和执行容器的一系列依赖关系和信息。可以在几秒钟内创建任意数量的完全相同的容器。镜像是分层叠加的。一旦镜像被创建出来,是不能更改的。如果你想对容器进行更改,则只需创建一个新的镜像并从该镜像部署新的容器即可。
2.Repository(repo):它是一个软件库,存储了可下载并安装在系统中的软件包。在 Docker 容器中,唯一的区别是它管理的是通过标签分类的 Docker 镜像。你可以找到同一个应用程序的不同版本或不同变体,他们都有适当的标记
3.镜像管理服务Registry:可以将其想象成 GitHub。这是一个在线服务,管理并提供了对 Docker 镜像仓库的访问,例如默认的公共镜像仓库——DockerHub。供应商可以将他们的镜像库上传到 DockerHub 上,以便他们的客户下载和使用官方镜像。
4.标签Tag:当你创建 Docker 镜像时,可以给它添加一个合适的标签,以便轻松识别不同的变体或版本。这与你在任何软件包中看到的并无区别。Docker 镜像在添加到镜像仓库时被标记。
5.Dockerfile :这是一个文本文件,包含为了为构建 Docker 镜像需手动执行的命令。Docker 使用这些指令自动构建镜像。
6.构建Build:这是从 Dockerfile 创建成镜像的过程。
7.推送Push:一旦镜像创建完成,“push” 是将镜像发布到仓库的过程
8.拉取Pull:用户可以通过 “pull” 过程从仓库检索该镜像。
9.编组Compose:复杂的应用程序会包含多个容器。docker-compose 是一个用于运行多容器应用程序的命令行工具。它允许你用单条命令运行一个多容器的应用程序,简化了多容器带来的问题。
一、下载镜像
搜索镜像文件:
sudo docker search ubuntu
下载指定版本的镜像,例如:
sudo docker pull ubuntu:18.04
所有下载的镜像文件,都被保存在 /var/lib/docker 文件夹下
查看已经下载的镜像列表,可以使用以下命令:
sudo docker images
二、运行 Docker 镜像
运行容器:(也可以通过镜像 ID 来启动新的容器)
下载完 Docker 镜像之后,你可以通过下面的命令来使用其标签来启动
sudo docker run -t -i ubuntu:latest /bin/bash
ubuntu:latest:带有标签 latest 的 Ubuntu 容器
/bin/bash:在新的容器中启动 BASH Shell
启动容器后,会直接进入里面,想退出到宿主机,并且不中断该容器的执行,可以按下 CTRL+P,再按下 CTRL+Q
需要注意的是,容器 ID 和 Docker 的镜像 ID是不同的。
可以通过以下命令查看所有正在运行和停止运行的容器:
sudo docker ps -a
如果想要进入正在运行的容器中,你只需要运行:
sudo docker attach <container-id> 退出exit
三、构建自己的镜像
想要创建自己的 Docker 镜像,你需要先运行一个你已经下载完的容器:
sudo docker run -t -i ubuntu:latest /bin/bash
现在,你运行了一个容器,并且进入了该容器。然后,在该容器中进行自己的操作
返回的宿主机的终端,不要关闭容器
在宿主机的终端中,从一个正在运行的容器中创建 Docker 镜像:
$ sudo docker commit 3d24b3de0bfc ostechnix/ubuntu_apache
3d24b3de0bfc — 指 Ubuntu 容器的 ID。
ostechnix — 创建的容器的用户名称
ubuntu_apache — 我们创建的镜像
通过这个镜像创建一个新的容器。
$ sudo docker run -t -i ostechnix/ubuntu_apache /bin/bash
四、删除容器/镜像
查看容器
sudo docker ps
停止
sudo docker stop <container-id>
删除
sudo docker rm <container-id>
删除所有已经停止的容器:
sudo docker container prune
查看镜像
Sudo docker images
使用镜像 ID 来删除镜像
sudo docekr rmi ce5aa74a48f1
nvidia-docker使用:
1. 创建一个文件夹
mkdir dockerBuild
cd dockerBuild/
2. 编写Dockerfile文件(docker hup上可以下载)
vim Dockerfile
3. 构建docker,后面有个点
docker build -t DOCKER_IMAGE_NAME .
4. 查看Label是否成功添加
docker inspect DOCKER_IMAGE_NAME
5. 使用nvidia-docker run 来运行编译好的image
nvidia-docker run -it -d DOCKER_IMAGE_NAME /bin/bash
-- name: 容器名字
--d: 后台运行容器
--rm: 容器退出后删除容器
-v: 数据卷挂载
-p: 端口映射
-P: 映射所有暴露的端口
-e: 设置容器中的环境变量
-t: 开启终端
-i: 打开标准输入
-u: 设置用户的UID
-w: 设置容器中的工作目录
-m: 内存限制
--cpuset-cpus: 设置容器具体使用的CPU
--add-host: 增加hosts到容器的/etc/hosts
--privileged: 打开特权模式
/bin/bash:在新的容器中启动 BASH Shell