镜像是一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。用户基于镜像来运行自己的容器,镜像体积小,便于更新。容器基于镜像构建,一个镜像可以构建多个容器,容器启动完成后,我们可以登录到容器中安装自己需要的软件或者服务。
要获取镜像,需要从网络中查找镜像。docker镜像仓库存放了众多镜像,你可以去官方提供的仓库,也可以自己搭建一个。你可以把你的镜像上传到仓库,也可以下载别人的镜像,但是有些仓库是私有的,仅部分人可以接入,有些则是公开的,所有人都可以拉取。
docker search 镜像名
NAME:仓库名 DESCRIPTION:镜像描述 STARS:和github star一样 OFFICIAL:来自于官方 AUTOMATED:自动构建,该镜像是由Docker Hub自动构建流程创建的
除了在命令行操作外,还可以去官网查询。类似于github,这是docker镜像的远程仓库。
docker pull 镜像名
比如要拉取mysql
docker pull mysql:5.7 # 冒号后指定版本,不指定版本则获取最新
可以查看当前所有镜像。
docker images
字段说明
REPOSITORY:镜像名称 TAG:镜像标签 IMAGE ID:镜像ID CREATED:镜像的创建日期 SIZE:镜像大小
docker rmi 镜像ID(或者镜像名)
删除所有镜像
docker rmi `docker images -q`
docker容器通常是一个linux容器,一个运行中的容器时宿主机上的一个进程,但是这个进程和其它进程之间相互隔离,并且也是资源受限的。你可以基于镜像创建出多个容器。
查看正在运行的容器
docker ps
查看所有容器(包括没有运行的容器)
docker ps -a
查看上一次运行的容器
docker ps –l
docker run -di --name=容器名 镜像名称:标签(tag)
举例:
docker run -di --name=sql mysql:5.7 docker run -ti --name=sql mysql:5.7
如图,以守护式创建容器,会返回一个容器ID。
参数说明:
-i: 以交互模式运行容器(启动容器),通常与 -t 同时使用 -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个虚拟终端 --name:容器名 -d: 创建一个守护式容器在后台运行,并返回容器ID -e:设置容器中运行时的环境变量 -p: 指定端口映射 -v: 指定目录映射关系,将容器与宿主机目录映射
停止容器
docker stop 容器名称(或者容器ID)
启动容器
docker start 容器名称(或者容器ID)
停止所有容器(用命令查询出所有正在运行的的容器id,一起停掉)
docker stop `docker ps -q`
删除前,确保该容器已经停止。
docker rm 容器名称(容器ID)
删除所有容器
docker rm `docker ps -a -q`
docker rename 容器名 新容器名
docker inspect 容器id(或者容器名)
可以查看到所有的详细信息,json格式。常用的字段是容器的ip地址,可以通过以下命令直接获取
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(或者容器ID)
如果以-ti
启动容器,那么前台会直接创建一个虚拟终端(bash窗口)供操作容器。
如果以-di
创建容器,并不会启动,而是创建一个守护式容器,使用以下命令创建一个bash操作:
docker exec -it 容器名称 (或者容器ID) /bin/bash
退出容器(退出bash):
exit
注意,如果是-it
创建虚拟终端操作容器,exit
退出时,相应的docker进程同时结束。如果是-id
创建守护式容器,再exec -it
操作容器,exit
退出时,前台进程退出,但后台docker守护进程不会结束。
docker exec
命令实际是在容器内执行命令,因此如果执行/bin/bash
创建一个bash窗口,即可在bash内操作容器(像在容器内操作一样)。
使用拷贝命令,可以让宿主机和容器进行文件传输交互。
从宿主机拷贝到容器:
docker cp 需要拷贝的文件或目录 容器名称:容器目录
从容器拷贝到宿主机:
docker cp 容器名称:容器目录 需要拷贝的文件或目录
示例如图:
由于是拷贝文件,删除掉原文件,另外一个也可以正常打开。
可以在原有的容器上安装一些文件,然后把新的容器打包为镜像。
docker commit 容器名 镜像名
将一个或多个镜像打包成tar文件导出。
docker save -o IMAGE [IMAGE...] -o :输出到的文件
举例,将python-django镜像打包
docker save -o python-django.tar python-django
将docker save的文件导入。
docker load -i 要导入的tar文件 -i : 指定导入的文件
举例,将tar文件导入到镜像。
docker load -i python-django.tar