信息查看
- docker info
- docker config
- docker version
登录登出
-
docker login
docker login -u ‘username’ -p ‘password’ url
执行完docker login后,会在/${home}/.docker/config.json文件中生成auth信息 -
docker logout
执行完成后,/${home}/.docker/config.json文件中的auth信息仍然存在
镜像
- 查看本地镜像
docker images
- 查看镜像详细信息
docker inspect repository_name:tag
- 拉取远程镜像
docker pull repository_name:tag
- 推送本地镜像到远程仓库
docker push user_name/repository_name:tag
注意两点:1.需要先到官网注册并执行docker login
2.本地镜像的repository需要带user_name - 删除本地镜像
docker rmi repository_name:tag[image_id]
- 基于dockerfile构建镜像
docker build -t repository_name:tag docker_file_path
- 在仓库中搜索镜像
docker search repository_name
- 由当前容器生成镜像
docker commit -m="描述" -a="作者" container_id new_repository_name:tag
- 复制镜像
docker tag image_id new_repository_name:new_tag
- 如果new_repository_name:new_tag已存在,不会产生新的镜像
容器
- 启动容器
docker run --name container_name -p local_port:container_port -d image_name
- –rm 停止容器时自动删除容器
- –name 指定容器名称
- -p 指定本地端口与容器内端口映射
- -P 随机一个宿主机端口与容器内端口映射
- -d 后台运行
- –volume “$PWD/”:/var 指定本地路径与容器内路径映射
- 启动容器并进入容器内示例
docker run -it tomcat:8.0.0 /bin/bash
- 查看所有容器
docker ps -a
- 查看正在运行的容器
docker ps
- 查看容器IP
docker inspect container_id
- 启动一个已停止的容器
docker start container_id
- 停止一个正在运行的容器
docker stop container_id
- 重启一个已停止的容器
docker restart container_id
- 进入正在运行的容器
docker exec -it container_id /bin/bash 或 docker exec -it container_id /bin/sh
- 退出正在运行的容器
exit
- 强制删除正在运行的容器
docker rm -f container_id
- 删除已停止的容器
docker rm container_id
- 删除所有停止的容器
docker container prune
DockerFile
用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
- 上下文路径
该路径下存放需要发送给 docker 引擎构建镜像的文件。默认上下文路径就是 Dockerfile 所在的位置。 - FROM
指定基于哪个镜像 - MAINTAINER
指定镜像作者 - RUN
在docker build阶段执行,用于执行后面跟着的命令行命令。
exec格式:RUN [“可执行文件”, “参数1”, “参数2”]
shell格式:RUN <命令行命令> - ADD
从上下文目录中复制文件或者目录到容器里指定路径。压缩包会自动解压,url会自动下载。 - COPY
从上下文目录中复制文件或者目录到容器里指定路径。压缩包不会自动解压,url不会自动下载。推荐copy代替add。 - CMD
在docker run 时运行,为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。
如果存在多个 CMD 指令,仅最后一个生效。
可被 docker run 命令行参数中指定要运行的程序所覆盖。
CMD <shell 命令>
CMD ["<可执行文件或命令>","<param1>","<param2>",...]
CMD ["<param1>","<param2>",...] # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数
- ENTRYPOINT
类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 ENTRYPOINT 指令指定的程序。
ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
-
LABEL
添加一些元数据(metadata),以键值对的形式。
可以用来代替MAINTAINER的使用 -
ENV
设置环境变量,在后续的指令中可以使用这个环境变量。 -
ARG
设置环境变量,仅对 Dockerfile有效,即只在docker build的过程中有效,构建好的镜像内不存在此环境变量。 -
EXPOSE
暴露容器内部端口,docker run -P 时,会自动随机映射该端口 -
VOLUME
定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
在执行docker run时,可以通过 -v 参数修改挂载点。 -
WORKDIR
切换到镜像中的指定路径,设置工作目录。
一般使用绝对路径,如果提供了相对路径,它将相对于前一个 WORKDIR 指令的路径 -
USER
切换后续命令执行的用户(用户和用户组必须提前创建好)。 -
如何在dockerfile阶段知道容器中的路径
-
如何在dockerfile阶段知道容器中的用户
-
entrypoint与cmd同时存在,docker run的执行过程是什么样
修改镜像服务器
在/etc/docker/daemon.json文件中添加如下内容
{
"registry-mirrors": [
"https://ustc-edu-cn.mirror.aliyuncs.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
也可以配置云服务的镜像加速器
重启docker systemctl restart docker
查看修改是否生效 docker info