初识docker命令及Dockerfile书写

查找全部命令

查找全部命令

docker

结果如图:
这里写图片描述

查看docker命令用法

docker command --help

运行docker run

这个命令比较重要,也比较复杂,放在第一个讲.
创建一个新的容器并运行一个命令
语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
简单例子,使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx(默认随机创建容器name)。

docker run -d -P --name mynginx -d nginx:latest

解释
1. -d: 后台运行容器,并返回容器ID;
2. -P :是容器内部端口随机映射到主机的高端口。
3. -p : 是容器内部端口绑定到指定的主机端口。
4. -i: 以交互模式运行容器,通常与 -t 同时使用;即-it:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。
5. -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;即-it:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。

例如:使用docker镜像nginx:latest以后台模式启动一个容器,容器命名为mynginx,指定容器端口5000映射到8080,容器内执行/bin/bash命令,容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。

docker run -d -p 8080:5000 -it --name mynginx -d nginx:latest /bin/bash

参考run语法docker run [OPTIONS] IMAGE [COMMAND] [ARG...],只有docker run 和运行的Image镜像是必需参数,其它可选

查看正在运行的容器docker ps

docker ps

显示最后一次创建的container,包括未运行的

docker ps -l

显示所有的container,包括未运行的

docker ps -a

查看端口映射情况docker port

docker port 容器ID或容器name

查看WEB应用程序日志docker logs

docker logs [容器ID或容器name]

查看容器内运行的进程docker top

docker top [容器ID或容器name]

查看docker容器底层信息 docker inspect

 docker inspect [容器ID或容器name]

停止docker运行docker stop/docker kill

docker stop [容器ID或容器name]

docker kill[容器ID或容器name]

docker kill命令:终止容器运行,相当于向容器里面的主进程发出 SIGKILL 信号。
docker stop命令:也是用来终止容器运行,相当于向容器里面的主进程发出 SIGTERM 信号,然后过一段时间再发出 SIGKILL 信号。
区别是:应用程序收到 SIGTERM 信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号。如果收到 SIGKILL 信号,就会强行立即终止,那些正在进行中的操作会全部丢失。

重启停止的容器或正在运行的容器docker start

重启一个或多个已经停止的容器

docker start [容器name]

重启一个或多个正在运行的容器

docker restart [容器name]

删除容器docker rm

image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。

docker rm  容器ID或容器name
docker search 镜像名

或者访问官方镜像地址,浏览镜像选择您需要的镜像文件,然后使用命令docker pull 镜像名下载镜像。

列出镜像列表docker images

docker images

这里写图片描述
列说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签,TAG,代表这个仓库源的不同个版本,最新的TAG叫做latest
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

拉取镜像docker pull

docker pull 镜像的仓库源/镜像的标签

pull后面的值由上面的镜像的仓库源和镜像的标签拼接得来,如果不加镜像的标签则默认是latest

docker container start 与docker start区别

这里写图片描述
由图中可知,docker container start与docker start是一样的意思,docker container是对容器的操作,container可以省略变成docker start

Dockerfile文件

注意点:
1. 文件没有后缀,名字就是Dockerfile
2. 命令约定全部使用大写,如RUN,ADD,FROM
3. 第一条命令必需是FROM,作用是指定在哪个基础镜像上创建镜像。
4. 注释以“#”形状

下面是常用命令:

FROM

语法

FROM 镜像名

最简单的命令,指定在哪个基础镜像上创建镜像

FROM livingobjects/jre8

在jre8镜像基础上创建自己镜像。

RUN

它接受命令作为参数并用于创建镜像,RUN命令用于创建镜像。
在镜像构建的过程中执行

CMD

语法

CMD ["executable", "param1", "param2"?]

1.在镜像构建容器后执行
2.只能存在一条CMD命令

例如CMD exec java -Djava.security.egd=file:/dev/./urandom -jar /app.jar

ENTRYPOINT

语法

ENTRYPOINT ["executable", "param1", "param2"?]

这个命令和CMD功能一样。
区别在于ENTRYPOINT后面携带的参数不会被docker run 提供的参数覆盖,而CMD会被覆盖。
例如ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

ADD

语法

ADD [source directory or URL] [destination directory]

它的基本作用是从源系统的文件系统上复制文件到目标容器的文件系统。
1. 如果源是一个URL,那该URL的内容将被下载并复制到容器中。
2. 如果如果文件是可识别的压缩格式,则docker会帮忙解压缩
3. 如果要ADD本地文件,则本地文件必须在 docker build <PATH>,指定的path目录下
4. ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了

EXPOSE

语法

EXPOSE [port]

暴露容器内部端口的
例如EXPOSE 5000
暴露的是容器内部端口,不是主机端口,如果外部想使用这个端口需要在运行时映射,如下:

docker run -d -p 127.0.0.1:8080:5000 hello-world

MAINTAINER

语法

MAINTAINER  作者名

申明作者,辅助使用,放丰FROM命令后面

WORKDIR

语法

WORKDIR /path

指定容器工作目录

VOLUME

语法

VOLUME ["/dir_1", "/dir_2" ..]

可以将本地文件夹或者其他container的文件夹挂载到container中,容器即可以访问该目录

ENV

语法

ENV key value

设置变量,可能在容器和脚本里直接使用

猜你喜欢

转载自blog.csdn.net/achenyuan/article/details/80231922