Loading

镜像与容器的基本操作

三、镜像与容器的基本操作

镜像是一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。用户基于镜像来运行自己的容器,镜像体积小,便于更新。容器基于镜像构建,一个镜像可以构建多个容器,容器启动完成后,我们可以登录到容器中安装自己需要的软件或者服务。

1 镜像基本操作

1.1 查找镜像

要获取镜像,需要从网络中查找镜像。docker镜像仓库存放了众多镜像,你可以去官方提供的仓库,也可以自己搭建一个。你可以把你的镜像上传到仓库,也可以下载别人的镜像,但是有些仓库是私有的,仅部分人可以接入,有些则是公开的,所有人都可以拉取。

docker search 镜像名

image

NAME:仓库名
DESCRIPTION:镜像描述
STARS:和github star一样
OFFICIAL:来自于官方
AUTOMATED:自动构建,该镜像是由Docker Hub自动构建流程创建的

除了在命令行操作外,还可以去官网查询。类似于github,这是docker镜像的远程仓库。

image

1.2 拉取镜像

docker pull 镜像名

比如要拉取mysql

docker pull mysql:5.7 # 冒号后指定版本,不指定版本则获取最新

image

1.3 查看镜像

可以查看当前所有镜像。

docker images

image

字段说明

REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期
SIZE:镜像大小

1.4 删除镜像

docker rmi 镜像ID(或者镜像名)

删除所有镜像

docker rmi `docker images -q`

2 容器基本操作

docker容器通常是一个linux容器,一个运行中的容器时宿主机上的一个进程,但是这个进程和其它进程之间相互隔离,并且也是资源受限的。你可以基于镜像创建出多个容器。

2.1 查看容器

查看正在运行的容器

docker ps

查看所有容器(包括没有运行的容器)

docker ps -a

查看上一次运行的容器

docker ps –l

2.2 创建并启动容器

docker run -di --name=容器名 镜像名称:标签(tag)

举例:

docker run -di --name=sql mysql:5.7
docker run -ti --name=sql mysql:5.7

image

如图,以守护式创建容器,会返回一个容器ID。

参数说明:

-i: 以交互模式运行容器(启动容器),通常与 -t 同时使用
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个虚拟终端
--name:容器名
-d: 创建一个守护式容器在后台运行,并返回容器ID
-e:设置容器中运行时的环境变量
-p: 指定端口映射
-v: 指定目录映射关系,将容器与宿主机目录映射

2.3 停止、启动容器

停止容器

docker stop 容器名称(或者容器ID)

启动容器

docker start 容器名称(或者容器ID)

停止所有容器(用命令查询出所有正在运行的的容器id,一起停掉)

docker stop `docker ps -q`

2.4 删除容器

删除前,确保该容器已经停止。

docker rm 容器名称(容器ID)

删除所有容器

docker rm `docker ps -a -q`

2.5 容器重命名

docker rename 容器名 新容器名

2.6 查看容器详细信息

docker inspect 容器id(或者容器名)

image

可以查看到所有的详细信息,json格式。常用的字段是容器的ip地址,可以通过以下命令直接获取

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(或者容器ID)

image

3 操作容器

3.1 在容器内执行命令

如果以-ti启动容器,那么前台会直接创建一个虚拟终端(bash窗口)供操作容器。

如果以-di创建容器,并不会启动,而是创建一个守护式容器,使用以下命令创建一个bash操作:

docker exec -it 容器名称 (或者容器ID)  /bin/bash

image

退出容器(退出bash):

exit

注意,如果是-it创建虚拟终端操作容器,exit退出时,相应的docker进程同时结束。如果是-id创建守护式容器,再exec -it操作容器,exit退出时,前台进程退出,但后台docker守护进程不会结束。

docker exec命令实际是在容器内执行命令,因此如果执行/bin/bash创建一个bash窗口,即可在bash内操作容器(像在容器内操作一样)。

3.2 将文件拷贝到容器

使用拷贝命令,可以让宿主机和容器进行文件传输交互。

从宿主机拷贝到容器:

docker cp 需要拷贝的文件或目录 容器名称:容器目录

从容器拷贝到宿主机:

docker cp 容器名称:容器目录 需要拷贝的文件或目录

示例如图:
image

由于是拷贝文件,删除掉原文件,另外一个也可以正常打开。

4 将容器保存为镜像

4.1 从容器创建一个新的镜像

可以在原有的容器上安装一些文件,然后把新的容器打包为镜像。

docker commit 容器名 镜像名

image

4.2 将镜像保存为tar文件

将一个或多个镜像打包成tar文件导出。

docker save -o IMAGE [IMAGE...]
-o :输出到的文件

举例,将python-django镜像打包

docker save -o python-django.tar python-django

image

4.3 将tar备份文件导入为镜像

将docker save的文件导入。

docker load -i 要导入的tar文件
-i : 指定导入的文件

举例,将tar文件导入到镜像。

docker load -i python-django.tar

image

posted @ 2021-12-11 22:24  yyyz  阅读(99)  评论(0编辑  收藏  举报