本文概览:介绍了docker镜像(docker镜像的相关操作、通过Dockfile构建镜像、Dockfile的格式)和docker容器相关操作。

1 Docker容器和镜像

1、定义

“用户是基于镜像来运行容器,镜像可以看做是容器的源代码” 怎么来理解这句话?

镜像是指  构建和打包阶段  的docker代码;容器是指 运行阶段 的docker代码,都是指同一个代码,只是在不同阶段的一个表述而已。

2、理解

可以通过 OS镜像 和 操作系统的概率来理解,未安装时,还在光盘上的就是镜像(docker镜像);当装载到PC上,并运行的时候就是操作系统(docker 容器)。当刚关机之后,操作系统仍然是存在的,只要开机他就可以再次运行操作系统;同样,docker容器在关闭之后仍然存,通过docer start重新启动容器,除非通过docker run才能从主机移除

2 Docker镜像

2.1 查看和下载镜像

1、查看服务器上有哪些镜像

第一列为镜像名字、第二列为版本,第一列和第二列组合成唯一键,如上的ubuntu有latest和14.04两个版本。

对于ubunt存在多个版本,我们在运行时可以通过冒号和标签名来知道该仓库的某一镜像。如下命令:

2、在Docker Hub上查找公用镜像库

(1)通过 docker search命令查看

(2)通过 https://hub.docker.com/ 直接查找

3、从镜像仓库下载镜像,有点类似从git仓库下载代码。

2.2 通过Dockfile构建镜像

通过Dockerfile和docker build命令来创建镜像。把构建命令按照执行顺序写到dockfile中,然后通过docker build来执行dockfile。dockerfile有点类似makefile思想,makefile中保存指令,通过make操作执行makefile。

2.2.1 Dockerfile格式

1、Dockerfile格式

  • Dockerfile中命令必须是大写。
  • Dockerfile第一条命令必须是FROM。FROM指定的镜像必须是已经存在的镜像,我们都是基于基于已经存在的镜像创建新的镜像。

2、具体的DockerFile中命令如下:

(1)FROM

(2)MAAINTAINER

(3)ENV 在构建镜像时设置环境变量

(4)RUN 用来执行shell命令。如下

(5)CMD

和RUN相比,RUN是在构建镜像时运行的命令,而CMD是在容器启动时运行的命令。

(6)VOLUME

举例为

2.2.2 执行DockerFile

通过docker build命令来执行DockerFile。具体格式如下

docker  build -t=”HeartThinkdDo/firstWeb:v1″  ~/file

-t 表示最终的镜像名称

~/file 是指DockerFile的目录信息,是自己指定的。

2.2.3 DockerFile实例

Docker部署spring boot服务

2.3 常用镜像

1、JDK

选择使用openjdk,https://hub.docker.com/_/openjdk/

3 容器

3.1 创建、启动和关闭容器

1、检查docker是否启动,在没有启动时如下

启动之后,如下信息:

2、创建并运行容器-run命令

(1)交互式运行的容器

其中

  • -i
  • -t

(2)守护式运行的容器

通过 “-d” 来指定。如下

(3)公用参数

  • 容器重命名 –name

  • 指定端口 -p ,”-p  服务器端口:容器端口”将服务器端口映射到容器的端口

3、查看服务器上的运行的docker容器有哪些

通过 “docker ps”命令查看,第一列是容器id,第二列是对应镜像,最后一列是容器名称。

如果是查看所有容器,通过“-a”参数:

4、重新启动容器

对于交互式的容器,只要关了终端或者退出终端,容器就停止了,需要重新启动,可以通过容器的id或者name来启动docker。如下

为了重新进入终端,通过如下命令

5、停止容器

通过容器名称或者容器id来停止容器

6、删除容器

(1)删除某一个容器

(2)删除所有容器

3.2 查看容器内运行时信息

1、查看容器内的进程

2、查看容器统计信息

3、查看容器日志

通过“docker logs”来查看这个容器的操作日志,其中“-t会把日志时间打印出来。还可以使用 “-f”,效果类似于“tail -f”的效果

3.3 在容器中执行任务

1、主要分为后台执行和交互式命令,两者区别是:

(1)后台命令

命令在后台执行。通过“-d”来实现,如下命令,在后台执行了创建newuser目录的命令

(2)非后台命令   直接把”-d“去掉就可以了。表示只有等当前命令执行完成之后,才能输入下个命令。

2、调出终端

这个属于交互式命令

(全文)

分类&标签

发表评论

电子邮件地址不会被公开。 必填项已用*标注