一、Docker 简介
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
二、Docker 的用途
Docker 的主要用途,目前有三大类。
(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。
三、关于Docker的几个概念
镜像
Docker 镜像就是系统环境的载体。
Docker 镜像是 Docker 容器运行时的只读模板,类似于虚拟主机本体。
从 Docker 镜像仓库中可以找到大量可用的镜像,你可以按照自己的需求自行搜索,比如寻找一个安装了 PyTorch+Jupyter Notebook 的系统镜像。
容器
每一个 Docker 容器都是从 Docker 镜像中创建的。
之所以有容器的存在,因为镜像是只读的。当我们通过镜像运行一个系统环境(虚拟机)时,Docker 就会创建一个容器来容纳这个系统环境。我们在这个环境中进行的修改(包括创建文件、安装新软件包等等),相当于都是在容器中进行的,不会影响到原来的镜像。
在我们想分享修改后(比如安装了新软件包)的系统时,我们可以执行“commit”命令。这时被我们修改过的容器,就会提交到镜像中,形成新版本的镜像。这个过程特别像GitHub的使用。我们从GitHub上clone下代码,修改,然后直到 commit 提交。
简单来说,容器可以视为镜像的“运行态”。
Docker Hub
官方的镜像发布网站,你在这里可以找到自己需要的镜像。
四、Docker 常用命令
# 列出所有容器ID
docker ps -aq
# 查看所有运行或者不运行容器
docker ps -a
# 停止所有的container(容器),这样才能够删除其中的images
docker stop $(docker ps -a -q) 或者 docker stop $(docker ps -aq)
# 如果想要删除所有container(容器)的话再加一个指令
docker rm $(docker ps -a -q) 或者 docker rm $(docker ps -aq)
# 查看当前有些什么images
docker images ls
# 删除images(镜像),通过image的id来指定删除谁
docker rmi <image id>
# 停止、启动、杀死、重启一个容器
docker stop Name或者ID
docker start Name或者ID
docker kill Name或者ID
docker restart name或者ID
docker进入容器,查看配置文件
docker exec :在运行的容器中执行命令
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN(标准输入) 打开,以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
docker exec -it f94d2c317477 /bin/bash
参考
https://zhuanlan.zhihu.com/p/38144369
https://bbs.huaweicloud.com/blogs/211739
https://bbs.huaweicloud.com/blogs/133713
https://zhuanlan.zhihu.com/p/31742065
一些比较好的学习docker的网站
https://www.runoob.com/docker/docker-tutorial.html
https://yeasy.gitbook.io/docker_practice/
http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
一些比较好的总结