Docker 基本操作

1Docker镜像

Docker运行容器前需要本地存在对应的镜像,如果本地不存,Docker会从镜像仓库下载。

Docker 获取镜像

Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。
我们也可以使用 docker search 命令来搜索镜像。
docker search tomcat

获取镜像

Docker 镜像仓库获取镜像的命令是 docker pull 其命令格式为:
docker pull [选项] [Docker Registey 地址[:端口号]/] 仓库名[:标签]
        具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。
- Docker 镜像仓库地址: 地址的格式一般是 < 域名 /IP>[: 端口号 ] 。默认地址是 Docker Hub
- 仓库名:这里的仓库名是两段式名称, 即 < 用户名 >/< 软件名 > 。对于 Docker Hub ,如果不给出用户名,则默认为 library 也就是官方镜像。

Docker 列出镜像

列出已经下载下来的镜像,使用 docker image ls 命令

docker images // docker image ls
列表包含了 仓库名、标签、镜像 ID 、创建时间 以及 所占用的空间 。 其中仓库名、标签在之前的基础概念已经介绍
过了。 镜像 ID 则是镜像的唯一标识 ,一个镜像可以对应多个标签。因此,如果拥有相同的 ID ,因为它们对应的是同
一个镜像。
镜像体积
如果仔细观察,会注意到,这里标识的所占用空间和在 DockerHub 上看到的镜像大小不同。这是因为DockerHub 中显示的体积是压缩后的体积。在镜像下载和上传过程中镜像是保持着压缩状态的,因此 DockerHub所显示的大小是网络传输中更关心的流量大小。而 dockerimagels 显示的是镜像下载到本地后,展开的大小,准确说,是展开后的各层所占空间的总和,因为镜像到本地后,查看空间的时候,更关心的是本地磁盘空间占用的大小。另外一个需要注意的问题是,dockerimagels 列表中的镜像体积总和并非是所有镜像实际硬盘消耗。由于Docker 镜像是多层存储结构,并且可以继承、复用,因此不同镜像可能会因为使用相同的基础镜像,从而拥有共同的层。由于Docker 使用 UnionFS ,相同的层只需要保存一份即可,因此实际镜像硬盘占
用空间很可能要比这个列表镜像大小的总和要小的多。

虚悬镜像
镜像列表中,还可以看到一个特殊的镜像,这个镜像既没有仓库名,也没有标签,均为 这个镜像原本是有镜像名和标签的,原来为 tomcat:8.0 ,随着官方镜像维护,发布了新版本后,重新 docker
pull tomcat:8.0 时, tomcat:8.0 这个镜像名被转移到了新下载的镜像身上,而旧的镜像上的这个名称则被取消, 从而成为了 。除了 docker pull 可能导致这种情况, docker build 也同样可以导致这种现象。由于新旧镜像同 名,旧镜像名称被取消,从而出现仓库名、标签均为 的镜像。这类无标签镜像也被称为 虚悬镜像(dangling image) 。 一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除:
docker image prune

Docker 删除本地镜像

docker image rm [选项] <镜像1> [<镜像2>.....]
ID 、镜像名、摘要删除镜像 其中, < 镜像 > 可以是 镜像短 ID 、镜像长 ID 、镜像名 或者 镜像摘要。
如果要删除本地的镜像,可以使用 docker image rmi / rm 命令
docker image rmi 镜像ID //常用
要删除镜像必须确认此镜像⽬前没有被任何容器使⽤

Docker其它辅助命令

查看本地镜像的 IMAGE ID
docker images -q
查看⼀个镜像的制作历程
docker history 镜像名称

Docker保存镜像

备份本地仓库的镜像

1 save ⼦命令将本地仓库的镜像保存当前⽬录下
docker save -o tomcat.g.tar 镜像名称
2 将本地目录下的镜像备份文件导⼊到本地 Docker 仓库
# ⽅式⼀(不输出详细信息): 
[root@localhost ~]# docker load -i tomcat.g.tar
# ⽅式⼆(输出详细信息): 
[root@localhost ~]# docker load < tomcat.g.tar

Docker 容器

容器是 Docker 核心概念
简单的说,容器是独立运行的一个或一组应用,以及它们的运行环境。
对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和运行在上面的
应用。

1 查看容器状态

docker ps //查看运行的容器 
docker ps –a //查看所有的容器(包含运行和退出) 
docker container ls
docker container ls–a

2 Docker 启动容器

启动容器有二种方式,一种是基于镜像新建一个容器并启动,一种是将在终止状态( stopped )的容器重新启动
docker run 参数 镜像名称 :tag 执⾏的命令 常⽤参数 :
-i 保持和 docker 容器内的交互,启动容器时,运⾏的命令结束后,容器依然存活,没有退出(默认是会退出,即停⽌的)
-t 为容器的标准输⼊虚拟⼀个 tty
-d 后台运⾏容器
--rm 容器在启动后,执⾏完成命令或程序后就销毁
--name 给容器起⼀个⾃定义名称
-p 宿主机:内部端口
docker run --rm -d --name tomcat1 -p 8080:8080 tomcat

3 查看正在运行的容器

docker ps
CONTAINER ID 容器 ID IMAGE 容器依赖的镜像 COMMAND 启动容器时执⾏的命令或程序 CREATED 容器启动时到
现在的相隔时间 STATUS 容器状态 PORTS 宿主机到容器的端⼝映射 注意 : 当运⾏⼀个容器的时候,没有⽤参数 --
name 去指定容器名时, Docker 会从⾃⼰的名称库中随机给这个容器起⼀个名字

4 查看所有容器

docker ps -a

5 停止容器

docker stop 9be696a0c283 //停止正在运行容器(或Ctrl+c) 
docker container stop tomcat1//停止正运行容器(ID或Names)

6 启动已终止容器

#通过docker ps 找到容器id
docker start 容器名/容器 ID

7 重启已关闭容器

docker restart 9be696a0c283//启动容器(根据ID或NAMES)

8 关闭和删除容器

docker rm 容器ID

9 Docker 守护态运行

更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添 加 -d 参数来实现 ,如果不使用 -d 参数运行容器 : 将会在当前宿主机运行。
如果使用了 -d 参数运行容器。此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面 ( 输出结果可 以用 docker logs 查看 )
查看控制台结果: 
docker logs tomcat1//(ID或Names)

10 Docker 进入容器

某些时候需要进入容器进行操作,使用 docker exec 命令
-i -t 参数 docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数。 只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。 当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。
docker exec -it 容器ID(Names)bash

11 在宿主机和容器之间交换⽂件

在宿主机和容器之间相互 COPY ⽂件 cp 的⽤法如下
docker cp [OPTIONS] CONTAINER:PATH LOCALPATH //容器中 复制到 宿主机 
docker cp [OPTIONS] LOCALPATH|- CONTAINER:PATH //宿主机 复制到 容器中 
#宿主机复制一个图片到容器中:将png图片复制到了容器指定目录下 
docker cp guoweixin.png tomcat2:/usr/local/tomcat/webapps/ROOT 
#将容器内的index.jsp 复制出来,修改再复制回去
docker cp tomcat2:/usr/local/tomcat/webapps/ROOT/index.jsp /root

Docker 查看日志

Docker 查看日志
docker logs 容器名称/ID
docker logs -f -t --since="2018-12-1" --tail=10 qfjy_exam

--since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。 -f : 查看实时日志 -t : 查看日志产生 的日期 -tail=10 : 查看最后的 10 条日志 qfjy_exam : 容器名称

Docker 数据卷

数据卷 : 是一个可供一个或多个容器使用的特殊目录

数据卷应用

#1 创建数据卷
 docker volume create 数据卷名称 
# 创建数据卷之后,默认会存放到目录: /var/lib/docker/volume/数据卷名称/_data目录下
#2 查看数据卷 
docker volume inspect 数据卷名称 
#3 查看全部数据卷信息
 docker volume ls
#4 删除数据卷 
docker volume rm 数据卷名称
#5 应用数据卷 
#5.1 当你映射数据卷时,如果数据卷不存在,Docker会帮你自动创建 docker run -v 数据卷名称:容器内路径 镜像ID 
#5.2 直接指定一个路径作为数据卷的存储位置 docker run -v 路径:容器内部的路径 镜像ID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

the uzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值