安装
docker 与 虚拟机
- “虚拟机需要数分钟启动,而Docker容器只需要50毫秒”
- 虚拟化技术是虚拟了整套环境
- 虚拟机缺点:资源占用多、启动慢
- 虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。而Docker通常用于隔离不同的应用,例如前端,后端以及数据库。
设置阿里加速器
vim /etc/docker/daemon.json
{
"registry-mirrors":["https://ji0bqesg.mirror.aliyuncs.com"]
}
常用命令
镜像
-
后台方式运行 -d
-
docker run hello-world
-
docker info
-
帮助手册 docker --help
-
查看已有镜像 docker images
-
查看摘要 docker images --digests
-
搜索Tomcat镜像 docker search tomcat
-
搜索nginx镜像 docker search nginx
-
下载nginx镜像 docker pull nginx
-
删除镜像 docker rmi hello-world:latest
-
强制删除镜像 docker rmi -f hello-world:latest
-
运行镜像 docker run -it 5a069ba3df4d (5a069ba3df4d:镜像id,docker images 的 IMAGE ID)
-
后台运行 docker run -d 镜像id
容器
- 查看所有的容器 docker ps
- 查看详情 docker ps -a
- 运行容器 docker start/restart/stop 030e27e645f6
- 030e27e645f6:容器id,docker ps -a 的 CONTAINER ID
- 删除容器 docker rm 容器id
- 强制停止容器docker kill 容器id
- 进入Tomcat的bash路径 docker exec -it d77dfa1e812a /bin/bash
- 退出容器 Ctrl + p + q
- 退出 exit
- 端口映射 docker run -d -p 7777:8080 --name mytomcat tomcat
- 用已存在的容器副本制作一个新的镜像 docker commit -m=“create imag from current contrainer” -a=“qiyu(作者)” 96f43f96379d(容器ID) “tomcat002:2.0”
- 从容器内拷贝文档到主机 docker cp 容器ID:容器内路径 主机路径
Docker
- 镜像
- 容器
- 仓库
镜像
什么是镜像?
- 文件和元数据的集合(rootfs)
- 镜像是分层的
- 不同的image可以共享相同的层
- 镜像本身是只读的
数据卷
- 数据卷类似U盘,用来保存数据的设备
- 容器持久化、容器间数据共享
Dockerfile
Dockerfile是什么
Dockerfile 是用来构建Docker镜像的构建文件
关键字
- FROM 基础镜像,当前新镜像是基于哪个镜像的
- MAINTAINER 镜像维护者的姓名和邮箱地址
- RUN 镜像构建时需要运行的命令
- WORKDIR 容器创建后,默认在哪个目录
- EXPOSE 当前容器暴露的端口
- ENV 用来在构建镜像时设置的环境变量
- ADD 将宿主机的目录下的文件copy到镜像并且ADD命令会自动解压压缩包
- COPY 复制
- VOLUME 容器数据卷,用于保存和持久化
- CMD 【很少使用】指定容器启动过程中需要运行的命令,多条命令时只有最后一条生效,此外,CMD命令会被docker run 之后的参数替换。
- ENTRYPOINT 指定容器启动过程中需要运行的命令,会把 docker run 命令的参数追加到后面
demo
docker build -f /pin_y/mydockerfile/Dockerfile -t mytomcat0009 .
FROM centos
MAINTAINER qiyu<qiyu@126.com>
COPY text.txt /usr/local/testincontainer.txt
ADD apache-tomcat-9.0.19.zip /usr/local/
ADD jdk-8u11-linux-x64.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.14
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.14
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.9.14/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.14/logs/catalina.out