一、Docker简介
Docker是一个开放源代码软件项目,让应用程序部署在软件货柜下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。
二、Docker Ubuntu安装
在Ubuntu终端中输入安装Docker命令,安装最新版本的Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
就会自动执行安装程序,由于我的系统已经装好,就不再演示
三、Docker镜像
Docker镜像可理解为一个面向Docker引擎的只读模板,包含了文件系统。如:一个镜像可以只包含一个完整的操作系统环境,也可以安装了其他的应用程序。通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像。
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。我们可以从 Docker Hub 网站来搜索镜像,或使用命令docker search [镜像名称] 来搜索镜像,当镜像下载完成后,可以使用以下命令查看本机的镜像
docker images
-a 列出所有的images(包含历史)
--tree 显示镜像的所有层
我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作 Dockerfile
,通过执行 docker build <DockerFile>
命令可以构建出 Docker 镜像
四、Docker容器
简单一点理解容器和镜像的区别的话,容器类似于主机,而镜像类似于操作系统,一个镜像可以在多个容器中运行,而针对某一个容器的修改,也只会在当前容器中生效
1、查看当前正在运行的容器
docker ps
-a 查看所有容器
2、查看容器日志
docker logs -f -t --tail 行数 容器名
五、Docker常用命令
1、使用ubuntu镜像启动容器
docker run [参数] [镜像名称] [命令]
如docker run -it ubuntu /bin/bash启动名称为ubuntu的镜像,使用命令-it进行终端的交互式操作,使用命令/bin/bash进行交互式 Shell
-d 后台启动,不进入容器,默认为进入容器
-i 打开标准输入输出,用户控制台
-t 支持终端登录
-u 指定用户
-a 标准输入输出和错误信息
-w 指定工作目录
-c 设置cpu权重
-e 指定环境变量
-m 指定内存上限
-p 指定端口
-h 指定主机名称
-v 挂载存储
--cap-add=[]添加权限
--cap-drop=[]删除权限
--name="" 指定容器名称
--rm 容器停止后自动删除
2、启动一个已经停止的容器
docker start [容器 ID]
3、停止一个运行中的容器
docker stop [容器 ID]
4、重新启动一个容器
docker restart [容器 ID]
5、进入容器
docker attach [容器 ID]
docker exec [容器 ID]
两种方法都可以进入容器,需要注意的是,如果使用docker attach进入容器,则退出时容器也会停止,如果使用docker exec进入容器,则退出时不会导致容器的停止
6、删除容器
docker rm -f [容器 ID]
7、拉取服务器镜像仓库里的镜像,默认拉取最新版本
docker pull [镜像名称]
8、将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
docker push [OPTIONS] NAME[:TAG]
六、DockerFile
Dockerfile
是自动构建 docker
镜像的配置文件, 用户可以使用 Dockerfile
快速创建自定义的镜像。类似于Linux下程序的MakeFile。
DockerFile基本包含基础镜像,操作指令和启动指令
#从 Docker Hub 上 pull下对应名称版本号的基础镜像
FROM [Docker Name]:[tag]
#维护信息
MAINTAINER [NAME] <email@email.com>
#拷贝当前目录至容器中的目标目录下
COPY . /targetDir
#指定工作目录
WORKDIR /workdir
#安装所需依赖
#端口设置666
EXPOSE 666
ENTRYPOINT ["enter"]
#启动main
CMD ["main"]
七、DockerFile常用命令
1、镜像来源
FROM <镜像> [AS <名称>]
2、执行命令
RUN ["可执行文件", "参数1", "参数2"]
3、容器启动
CMD ["可执行文件", "参数1", "参数2"...]
4、复制
COPY <源路径>... <目标路径>
5、入口点
ENTRYPOINT ["可执行文件", "参数1", "参数2"]
6、参数
ARG <名称>=<默认值>
默认值可不填
7、设置环境变量
ENV <变量1>=<值1> <变量2>=<值2>...
8、端口声明
EXPOSE <端口>
9、指定工作目录
WORKDIR /workdir
10、保存外部安装卷
VOLUME /test
此 Dockerfile 会生成一个镜像,该镜像会导致 docker run 在 /test 上创建新的挂载点,并将文件复制到新创建的卷中。
11、指定用户
USER <用户名>[:<组>]
12、健康检查
HEALTHCHECK [参数] CMD [命令] (通过在容器内运行命令来检查容器运行状况)
HEALTHCHECK NONE (禁用从基础镜像继承的健康检查)
dockerfile中只能有一个HEALTHCHECK,如果有多个,则只有最后一个会生效
13、退出信号
STOPSIGNAL <信号>