镜像管理
搜索镜像:
这种方法只能用于官方镜像库
搜索基于 centos 操作系统的镜像
# docker search centos
按星级搜索镜像:
查找 star 数至少为 100 的镜像,默认不加 s 选项找出所有相关 ubuntu 镜像:
# docker search ubuntu -f stars=100
拉取镜像:
# docker pull centos
查看本地镜像:
# docker image list
查看镜像详情:
# docker image inspect 镜像id
删除镜像:
删除一个或多个,多个之间用空格隔开,可以使用镜像名称或id
# docker rmi daocloud.io/library/mysql
强制删除:--force
如果镜像正在被使用中可以使用--force强制删除 18.07后不支持强制删除
# docker rmi docker.io/ubuntu:latest --force
删除所有镜像:
# docker rmi $(docker images -q)
只查看所有镜像的id:
# docker images -q
查看镜像制作的过程:
相当于dockfile
# docker history daocloud.io/ubuntu
dive docker_image_id/docker_image_name
容器管理
创建新容器但不启动:
# docker create -it daocloud.io/library/centos:5 /bin/bash
创建并运行一个新Docker 容器:
同一个镜像可以启动多个容器,每次执行run子命令都会运行一个全新的容器
# docker run -it --restart=always centos:7 /bin/bash
如果执行成功,说明CentOS 容器已经被启动,并且应该已经得到了 bash 提示符。
-i
捕获标准输入输出
-t
分配一个终端或控制台
--restart=always
容器随docker engine自启动,因为在重启docker的时候默认容器都会被关闭
也适用于create选项
--rm
默认情况下,每个容器在退出时,它的文件系统也会保存下来,这样一方面调试会方便些,因为你可以通过查看日志等方式来确定最终状态。另一方面,也可以保存容器所产生的数据。
但是当你仅仅需要短暂的运行一个容器,并且这些数据不需要保存,你可能就希望Docker能在容器结束时自动清理其所产生的数据。这个时候就需要--rm参数了。注意:--rm 和 -d不能共用
若要断开与容器的连接,并且关闭容器:
容器内部执行如下命令
[root@d33c4e8c51f8 /]#exit
如果只想断开和容器的连接而不关闭容器:
快捷键:ctrl+p+q
查看容器:
只查看运行状态的容器:
#docker ps
#docker ps -a
-a 查看所有容器
只查看所有容器id:
# docker ps -a -q
列出最近一次启动的容器
# docker ps -l
查看容器详细信息:
inspect Return low-level information on a container or image
用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等。
目标:
查找某一个运行中容器的id,然后使用docker inspect命令查看容器的信息。
提示:
可以使用镜像id的前面部分,不需要完整的id。
[root@master ~]# docker inspect d95 //d95是我机器上运行的一个容器ID的前3个字符
[
{
"Id": "d95a220a498e352cbfbc098c949fc528dbf5a5c911710b108ea3a9b4aa3a4761",
"Created": "2017-07-08T03:59:16.18225183Z",
"Path": "bash",
"Args": [],
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
容器信息很多,这里只粘贴了一部分
比如:容器里在安装ip或ifconfig命令之前,查看网卡IP显示容器IP地址和端口号,如果输出是空的说明没有配置IP地址(不同的Docker容器可以通过此IP地址互相访问)
# docker inspect --format='{
{.NetworkSettings.IPAddress}}' 容器id
列出所有绑定的端口:
# docker inspect --format='{
{range $p, $conf := .NetworkSettings.Ports}} {
{$p}} ->
{
{(index $conf 0).HostPort}} {
{end}}' $INSTANCE_ID
# docker inspect --format='{
{range $p,
$conf := .NetworkSettings.Ports}} {
{$p}} -> {
{(index $conf 0).HostPort}} {
{end}}'
b220fabf815a
22/tcp -> 20020
找出特殊的端口映射:
比如找出容器里22端口所映射的docker本机的端口:
# docker inspect --format='{
{(index (index .NetworkSettings.Ports "22/tcp")
0).HostPort}}' $INSTANCE_ID
[root@localhost ~]# docker inspect --format='{
{(index (index .NetworkSettings.Ports "22/
tcp") 0).HostPort}}' b220fabf815a
20020
http://note.youdao