Docker 概念
Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。
项目添加 Dockerfile 文件生成镜像,通过运行镜像文件生成容器,项目在容器中运行,镜像文件保存在仓库中,也可以从docker hub中拉取所需要的镜像。
Docker 中有三个核心概念:镜像(Image)、容器(Container)、仓库(Repository)。
- 镜像:Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。Docker 提供了两种方式来构建镜像,
docker commit
:通过容器构建;docker build
:通过 Dockerfile 文件构建。 - 容器:image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。容器的存在离不开镜像的支持,他是镜像运行时的一个载体(类似于实例和类的关系)。依托 Docker 的虚拟化技术,给容器创建了独立的端口、进程、文件等“空间”,Container 就是一个与宿机隔离 “容器”。容器可宿主机之间可以进行 port、volumes、network 等的通信。
- 仓库:Repository是存放 Docker 镜像的仓库,我们可以将自己的镜像推到远程,或者从远程下载镜像到本地运行,正如 GitHub。Docker官方有一个docker hub,我们可以从上面下载官方的镜像。
Docker和k8s的区别与介绍:对Docker三个核心概念解释比较生动形象
Docker 应用实例
利用docker pull
命令即可从相关 hub 网站上拉取镜像到本地。
C:\Users\admin\Desktop>docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
284055322776: Pull complete
Digest: sha256:0fedbd5bd9fb72089c7bbca476949e10593cebed9b1fb9edf5b79dbbacddd7d6
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04
执行docker images
即可看到本地所有的镜像
C:\Users\admin\Desktop>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 5a214d77f5d7 2 months ago 63.1MB
用docker run
可以一步到位创建并运行一个容器,然后进入该容器。进入容器之后一切操作和普通环境一致,可进行Linux安装Anaconda3完整教程和源代码下载
C:\Users\admin\Desktop>docker run -it --name runUbuntuContainer ubuntu:18.04 /bin/bash
root@d4ac7f63b93e:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@d4ac7f63b93e:/# exit
exit
用docker ps
即可查看运行中的 container
C:\Users\admin\Desktop>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d4ac7f63b93eubuntu:18.04 "/bin/bash" About a minute ago Up 8 seconds runUbuntuContainer
通过commit
容器创建新镜像
C:\Users\admin\Desktop>docker commit --author "faimi" --message "test" d4ac faimi/mayan:v1
sha256:d7150b486d9d31827d65283c571e27e871a055da550f979d8b296f22c8d1d307
执行 docker images 即可看到本地所有的镜像
C:\Users\admin\Desktop>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
faimi/mayan v1 d7150b486d9d 6 seconds ago 63.1MB
ubuntu 18.04 5a214d77f5d7 2 months ago 63.1MB
先去 docker hub 注册一个账号,然后在终端上登录账号,进行 push。
C:\Users\admin\Desktop>docker login
Authenticating with existing credentials...
Login Succeeded
Logging in with your password grants your terminal complete access to your account.
For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/
C:\Users\admin\Desktop>docker push faimi/mayan:v1
The push refers to repository [docker.io/faimi/mayan]
791e0451cb8f: Pushed
824bf068fd3d: Mounted from library/ubuntu
Put "https://registry-1.docker.io/v2/faimi/mayan/blobs/uploads/2deb3f62-18dd-4219-b066-89d85843e068?_state=Y5FhF8UFUgfkcyv5YYYL4ZesGTZez61ei0zgfcFRZeN7Ik5hbWUiOiJmYWltaS9tYXlhbiIsIlVVSUQiOiIyZGViM2Y2Mi0xOGRkLTQyMTktYjA2Ni04OWQ4NTg0M2UwNjgiLCJPZmZzZXQiOjE1MTMsIlN0YXJ0ZWRBdCI6IjIwMjEtMTItMDFUMDc6NTE6MDFaIn0%3D&digest=sha256%3Ad7150b486d9d31827d65283c571e27e871a055da550f979d8b296f22c8d1d307": EOF
参考文献:
从 0 开始了解 Docker
Docker 入门教程
docker入门教程这一篇就够了