查找全部命令
查找全部命令
docker
- 1
结果如图:
##查看docker命令用法
docker command --help
- 1
运行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;
- -P :是容器内部端口随机映射到主机的高端口。
- -p : 是容器内部端口绑定到指定的主机端口。
- -i: 以交互模式运行容器,通常与 -t 同时使用;即
-it
:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。 - -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
- 1
参考run语法docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
,只有docker run 和运行的Image镜像是必需参数
,其它可选
查看正在运行的容器docker ps
docker ps
- 1
显示最后一次创建的container,包括未运行的
docker ps -l
- 1
显示所有的container,包括未运行的
docker ps -a
- 1
查看端口映射情况docker port
docker port 容器ID或容器name
- 1
查看WEB应用程序日志docker logs
docker logs [容器ID或容器name]
- 1
查看容器内运行的进程docker top
docker top [容器ID或容器name]
- 1
查看docker容器底层信息 docker inspect
docker inspect [容器ID或容器name]
- 1
停止docker运行docker stop/docker kill
docker stop [容器ID或容器name]
- 1
或
docker kill[容器ID或容器name]
- 1
docker kill
命令:终止容器运行,相当于向容器里面的主进程发出 SIGKILL 信号。
docker stop
命令:也是用来终止容器运行,相当于向容器里面的主进程发出 SIGTERM 信号,然后过一段时间再发出 SIGKILL 信号。
区别是:应用程序收到 SIGTERM 信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号。如果收到 SIGKILL 信号,就会强行立即终止,那些正在进行中的操作会全部丢失。
##重启停止的容器或正在运行的容器docker start
重启一个或多个已经停止的容器
docker start [容器name]
- 1
重启一个或多个正在运行的容器
docker restart [容器name]
- 1
删除容器docker rm
image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。
docker rm 容器ID或容器name
- 1
搜索docker search
docker search 镜像名
- 1
或者访问官方镜像地址,浏览镜像选择您需要的镜像文件,然后使用命令docker pull 镜像名
下载镜像。
##列出镜像列表docker images
docker images
- 1
列说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签,TAG,代表这个仓库源的不同个版本,最新的TAG叫做latest
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
拉取镜像docker pull
docker pull 镜像的仓库源/镜像的标签
- 1
pull后面的值由上面的镜像的仓库源和镜像的标签拼接得来
,如果不加镜像的标签则默认是latest
docker container start 与docker start区别
由图中可知,docker container start与docker start
是一样的意思,docker container是对容器的操作,container可以省略变成docker start
Dockerfile文件
注意点:
- 文件没有后缀,名字就是Dockerfile
- 命令约定全部使用大写,如
RUN,ADD,FROM
- 第一条命令必需是FROM,作用是指定在哪个基础镜像上创建镜像。
- 注释以
“#”
形状
下面是常用命令:
##FROM
语法
FROM 镜像名
- 1
最简单的命令,指定在哪个基础镜像上创建镜像
FROM livingobjects/jre8
- 1
在jre8镜像基础上创建自己镜像。
RUN
它接受命令作为参数并用于创建镜像,RUN命令用于创建镜像。
在镜像构建的过程中执行
。
CMD
语法
CMD ["executable", "param1", "param2"?]
- 1
1.在镜像构建容器后执行
2.只能存在一条CMD命令
例如CMD exec java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
##ENTRYPOINT
语法
ENTRYPOINT ["executable", "param1", "param2"?]
- 1
这个命令和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的内容将被下载并复制到容器中。
- 如果如果文件是可识别的压缩格式,则docker会帮忙解压缩
- 如果要ADD本地文件,则本地文件必须在
docker build
,指定的path
目录下 - ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了
EXPOSE
语法
EXPOSE [port]
- 1
暴露容器内部端口的
例如EXPOSE 5000
暴露的是容器内部端口,不是主机端口,如果外部想使用这个端口需要在运行时映射,如下:
docker run -d -p 127.0.0.1:8080:5000 hello-world
- 1
MAINTAINER
语法
MAINTAINER 作者名
- 1
申明作者,辅助使用,放丰FROM命令后面
##WORKDIR
语法
WORKDIR /path
- 1
指定容器工作目录
##VOLUME
语法
VOLUME ["/dir_1", "/dir_2" ..]
- 1
可以将本地文件夹或者其他container的文件夹挂载到container中,容器即可以访问该目录
ENV
语法
ENV key value
- 1
设置变量,可能在容器和脚本里直接使用
Docker Dockerfile 定制镜像