Docker的入门
docker是什么
- Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。由 Docker Inc. 公司 前 dotC1oud公司, PaaS市场中的老牌提供商)的团队编写,基于 Apache 2.0开源授权协议发行。
解决了什么问题
- 对于开发人员来说,提供了一套隔离环境,如果有刚入职的小伙伴就不用为搭建环境而操心了
- 对于运维人员来说,可以通过镜像(稍后再说可以理解为一个个版本),更高效的发布一个个过的版本
- docker里包含了完整的运行环境和执行程序,可以不用关系服务器本身的环境
- docker启动时间非常快,通常是秒级的
下面介绍下基本概念
镜像(images)
image就是一个个集成的环境,一般包含了OS和一些其他的应用程序,一个image可能包含多个layer,可以理解为千层饼这中层叠起来的东西,这些layer都是只读的。
创建镜像方式
- 通过写dockerfile来生成镜像,比较常用
- 可以把停止的容器打包成一个镜像
容器
可以理解为一个个运行的某个镜像,它其实是在镜像最上层添加了一层可写层,有兴趣的话可以去了解下。这里就不详细介绍了。。
registry
这是一个仓库的概念,可以保存用户构建的镜像,也可以从上面拉去镜像,现在很多公司有镜像仓库,Docker公司运营的Docker hub比较常用,因为是国外的服务器,下载速度非常慢,使用的话需要配加速器(可以自己在网上找别的文章配置)
下面就介绍一些常用的命令
镜像下载(默认是去docker hub上下载)
$ docker pull name:tag
查看所有镜像
$ docker images
运行一个image,也就是创建一个容器
-it表示交互式和启动一个终端
–name表示为容器起的名字
-p表示宿主机端口映射到容器中的端口
$ docker run -it -p 8080:8080 --name app name:tag /bin/bash
查看所有容器
$ docker ps -a
进入容器中
$ docker attach container_name
或者
$ docker exec -it container_name /bin/bash
停止容器
$ docker stop container_name
删除容器(只能是已经停止的)
$ docker rm container_name
删除镜像
$ docker rmi imgae_id
提交修改的镜像(也就是把容器再打为一个镜像)
$ docker commit container_name image:tag
使用dockerFile构建镜像
文件名必须为Dockerfile
.表示当前目录
$ docker build -t image:tag .
编写dockerfile时常用命令
From命令
必须以FROM命令开始
表示依赖哪个镜像
$ FROM java:8
run命令相当于shell命令
每个RUN命令会产生一个新的layer层
$ RUN useradd name
$ RUN mkdir -p /home/name/app
WORKDIR
相当于切换工作目录
$ WORKDIR /home/name/app
ADD
相当于复制文件到容器中
$ ADD app.jar /home/name/app.jar
EXPOSE
暴露端口
$ EXPOSE 8080
$ EXPOSE 3306
好了一些基本的命令就介绍到这了,更详细的可以去官网上看。
Docker入门的一些就讲到这了。小伙伴们下期再见。