北平连续两天小雨
Docker是什么
Docker的架构图
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 —— 来自百度百科
Docker是基于Go语言实现的云开源项目
Docker解决了什么问题
不同的环境会导致开发和运维吵架,有了Docker,运维也能变基友
•打包所有的配置交付运维,不会再出现和预期不一致•以前搬家是一件一件,容易出问题,有了Docker搬家是一栋楼直接扛走•一次部署,多次运行
安装Docker
•官网安装文档[1]
•较旧的Docker版本称为docker或docker-engine。如果已安装这些程序,请卸载它们以及相关的依赖项。
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
•安装yum-utils软件包
sudo yum install -y yum-utils
•官网文档,但是相对不是很稳定
$sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
•替换为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
•安装最新版本的docker-ce
sudo yum install docker-ce docker-ce-cli containerd.io
•查看Docker的版本
docker --version
•当前版本为19.03.8
•启动docker
sudo systemctl start docker
•Docker安装完成
•下载镜像时默认链接的是docker hub,国外的网站不稳定,我们需要切换成阿里的
•
Dokcer hello-world
•下载hello-world并运行 docker search hello-world
docker pull hello-world
docker run hello-world
docker commit 提交容器副本使之成为一个新的镜像
•下载最新的tomcat镜像 docker search tomcat
docker pull tomcat
•下载完成后查看镜像
docker images
•运行tomcat
docker run -d -p 8080:8080 --name mytomcat tomcat
•docker 【OPTIONS]常用说明
•--name 容器的新名字
•-i 以交互模式运行容器,通常与-t同时使用
•-t 以容器重新分配一个伪输入终端,通常与-i同时使用
•-P 随机端口映射
•-p 指定蛋壳映射
•查看当前运行的容器
docker ps
•访问ip+端口口
•竟然访问失败了,进入到tomcat的目录中看看tomcat的webapps中有什么
docker exec -it [CONTAINER ID] /bin/bash
•我们发现webapps目录是空,所以导致了404,删除webapps文件夹,把webapps.dist复制到webapps中
rm -rf webapps cp -r webapps.dist/ webapps
•复制成功后查看webapps中已经有了内容,退出并执行commit
exit docker commit -a "shiyi" -m "create shiyitomcat" [CONTAINER ID] shiyitomcat
•查看容器
•运行shiyitomcat
docker run -d -p 8081:8080 shiyitomcat
•查看运行的容器
•访问ip+8081端口号,成功出现Tom
Docker 容器数据卷
第一种方式:使用命令
•Docker 容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了,为了能报错数据在docker中我们使用数据卷 ,能够实现容器到主机,主机到容器的数据共享 •启动容器并且添加容器卷 docker run -it -v /myDataVolume:/dataVolumeContainer shiyitomcat
•可以查看宿主机根目录有myDataVolume,容器中的根目录有dataVolumeContainer目录,两者之间可以实现数据共享
•启动容器并添加容器卷,只有宿主机可以写,容器机只能读(ro:read only)
docker run -it -v /myDataVolume:/dataVolumeContainer:ro shiyitomcat
第二种方式Dockerfile
•编写Dockerfile •vim Dockerfile FROM centos VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"] CMD echo "finished" CMD /bin/bash
•编写完成后docker build
docker build -f /mydocker/Dockerfile -t crazy/centos .
•构建完成后查看
•启动容器后会自动创建两个容器卷
docker run -it crazy/centos
•启动后并查看目录
•没有指定宿主机的共享数据目录,docker指定了默认的目录
docker inspect [CONTAINER ID]
•继承自某个容器
docker run -it --name mycentos --volumes-from crazy/centos
•Dockerfile保留字
FROM:基础镜像,当前新镜像是基于哪个镜像的 MAINTAINER: 镜像维护者的姓名和邮箱 RUN:容器构建时需要执行的命令 EXPOSE:暴露出端口号 WORKDIR:工作目录 EVN: 环境变量 ADD:添加且解压缩 COPY:添加 VOLUME:容器卷,数据保存和共享 CMD:指定容器启动时要启动的命令,Dockerfile中可以有多个,但只会执行最后一个 ENTRYPOINT:追加 ONBUILD:触发器
Docker常用命令
•删除已经运行的容器 docker rmi -f [CONTAINER ID]
•删除所有正在运行的容器
docker rm -f $(docker ps -a)
我是失忆,不善言辞又感性的一个人。
欢迎在下方留言。如果你喜欢这篇文章,别忘了三连,点赞,再看,留言。你们的支持就是失忆的动力。