docker的学习与使用
1.镜像(image)与容器(container)
就我个人的理解,镜像与容器的关系就类似与类与实例的关系。镜像是用来创建容器的,是容器的只读模板。在实际使用中,使用镜像创建容器,容器在linux上本地运行,并与其他容器共享主机的内核。它运行一个独立的进程,占用的内存不超过任何其他可执行文件,体现其轻量级的特点。
2.获取镜像
获取镜像主要有两种方式,一种是使用他人打包好,并通过网络(主要是docker官方的docker hub和一些类似的镜像托管网站)进行分享的镜像,一种则是在本地将镜像保存为本地文件,直接使用生成的文件进行共享。
网络
主要借助两条指令。docker pull
和 docker run
docker pull
1 |
|
我们先关注NAME和紧跟的两个互斥的配置项。这里给出三种不同的拉取方式。
NAME
1
2docker pull ubtuntu
如果不指定标签,Docker Engine会使用:latest作为默认标签拉取镜像。NAME:TAG
1
docker pull ubuntu:14.04
NAME@DIGEST
1
docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
- 这个为我们提供了一种指定特定版本镜像的方法。
- 为了保证后期我们仅仅使用这个版本的镜像,我们可以重新通过指定DIGEST(通过查看镜像托管网站里的镜像信息或者是之前的
pull
输出里的DIGEST信息)的方式pull
该版本镜像。
更多详见:
- https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier
- 通过API获取镜像仓库里镜像的标签:https://www.jianshu.com/p/a5af4f558b0a
docker run
该指令可以直接拉取本地不存在的镜像,并且创建一个容器。
1 |
|
个人
docker load
1 |
|
显示镜像
1 |
|
删除镜像
生成镜像
主要包含两种方式,一种是基于构建文件Dockerfile和 docker build
的自动构建,一种是基于 docker commit
提交对于现有容器的修改之后生成镜像。
docker build
1 |
|
细节参考:https://docs.docker.com/engine/reference/commandline/build/
对于已有的Dockerfile文件,我们可以使用如下指令生成镜像:
1 |
|
这样我们就可以在 docker images
中看到生成的镜像了。
docker commit
1 |
|
3.使用镜像(创建容器)
docker run
1 |
|
- -i和-t:为docker创建一个伪终断
- /bin/bash: 表示载入容器后运行bash,为docker容器创建一个进程的运行,避免kill itself
-v
表示将本地的文件夹以只读(:ro
,读写可以写为:rw
,如果不加,则默认的方式是读写)的方式挂载到容器中的/tcdata
目录中。- 更多的参数可以参考该网址:https://docs.docker.com/engine/reference/run/#detached-vs-foreground
查看容器信息
1 |
|
启动容器
1 |
|
进入容器
可以用 attach
和 exec
进入容器,但是更推荐后者,因为 exec
退出后不会把容器关闭
1 |
|
停止、退出和删除容器
1 |
|
从本机与容器中互相拷贝数据
1 |
|
docker的学习与使用
https://collapsarva.github.io/2023/10/30/docker的学习与使用/