一文掌握Docker的基本使用方法
Posted Tuki_a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文掌握Docker的基本使用方法相关的知识,希望对你有一定的参考价值。
Docker基础知识
可以参考之前的文章Docker基础知识
学会查看帮助
可以先敲docker 用Tab键补齐,可以看到接下来可以使用的
docker --help可以查看详细的命令参数
docker images --help,类似这样,哪儿不会了看哪儿
镜像的拉取/使用
从tar存档或STDIN加载图像,可以直接导入tar打包的镜像,当你自己本地有一个打包好的包时可以使用这个命令导入
docker load -i xxx.tar
-i 从tar存档文件读取,而不是STDIN
当你本地没有镜像包时,可以从官方仓库拉取/获取镜像(前提搭建docker的主机可以上网)
docker pull 镜像名
例如:
docker pull nginx
官网拉取有时候会很慢,可以去阿里云、腾讯云之类的搞一个容器镜像加速器(注册就有,免费的,每个人都不一样)
网址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
搜索镜像,看官方仓库有没有相关镜像(前提搭建docker的主机可以上网)
docker search 镜像名
例如:
docker search nginx
列出本地主机有哪些镜像
docker images
各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签 #latest表示最新的
#同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本
#类似github的概念,可以做版本控制
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
使用镜像/运行容器
镜像run后就是容器了,因为容器是镜像运行的实例。
其实就是使用某个镜像来运行容器。
docker run 镜像名
参数说明:
-i: 交互式操作。退出按ctrl+d
-t: 终端
-d 指定容器的运行模式
--name: 指定新的镜像层的名字
示例如下:
[root@server5 ~]# docker run -it --name test busybox
/ # ls
bin dev etc home proc root sys tmp usr var
/ # touch file1
/ # touch file2
/ # touch file3
/ # ls
bin dev etc file1 file2 file3 home proc root sys tmp usr var
/ # [root@server5 ~]#
查看镜像操作历史/查看镜像的分层结构
docker history 镜像名
-q 仅显示数字ID
下图可以看出,运行的容器是在原来的镜像层上新建了一层,原来的资源是共享的
创建镜像
有两种方法:
1、docker commit 构建新镜像三部曲
其实就是从已经创建的容器中更新镜像,并且提交这个镜像
1运行容器(上面已经说过,不再赘述):
2修改容器:
[root@server5 ~]# docker commit test test:v1
sha256:13074c797fcbb74e4ae859963384151ac66239ac05f6dca66b868b43d2cfd8f3
3将容器保存为新的镜像:
[root@server5 ~]# docker images test:v1
缺点:
效率低、可重复性弱、容易出错。
使用者无法对镜像进行审计,存在安全隐患。
2、使用 Dockerfile 指令来创建一个新的镜像
1编写Dockerfile文件
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。这里就涉及到镜像优化的问题,之后的文章会讲。
[root@server5 ~]# mkdir docker/
[root@server5 ~]# cd docker/
[root@server5 docker]# ls
[root@server5 docker]# vim Dockerfile
# 基于busybox,简单的执行几条指令
FROM busybox
RUN echo hello > testfile
指令作用:
FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。
RUN:用于执行后面跟着的命令行命令。有以下两种格式:
shell 格式:
RUN <命令行命令>
#<命令行命令> 等同于,在终端操作的 shell 命令。
exec 格式:
RUN [“可执行文件”, “参数1”, “参数2”]
#例如:
#RUN ["./test.php", “dev”, “offline”] 等价于 RUN ./test.php dev offline
2使用build命令创建镜像
docker build 命令用于使用 Dockerfile 创建镜像。
-t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
-f :指定要使用的Dockerfile路径。
[root@server5 docker]# docker build -t test:v2 .
#别忘了指定位置
下图可以看到我们history是会显示做了什么的,也就是弥补了用commit方法创建的缺陷,可以对镜像进行审计。
容器的使用
列出容器:
docker ps
#默认正在运行的容器
-a 显示全部容器
使用 docker start 启动一个已停止的容器:
docker start 容器id
停止容器:
docker stop <容器 ID>
进入容器:
在运行容器使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入
docker attach 容器id
docker exec:这个命令退出容器终端,不会导致容器的停止。
导出容器
导出本地某个容器,可以使用 docker export 命令
docker export 80c0952dee70 > test.tar
#将容器id为80c0952dee70的容器导出为test.tar
导入容器
使用 docker import 从容器快照文件中再导入为镜像
docker import test.tar test:v1
#导入test.tar文件为test:v1镜像
也可以通过指定 URL 或者某个目录来导入,例如:
docker import http://example.com/exampleimage.tgz example/imagerepo
获取容器/镜像的元数据。
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
OPTIONS说明:
-f :指定返回值的模板文件。
-s :显示总的文件大小。
--type :为指定类型返回JSON。
以上是关于一文掌握Docker的基本使用方法的主要内容,如果未能解决你的问题,请参考以下文章