Docker学习笔记
一.Docker 的概念
- Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
- Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操作系统,安装好后什么都有
1.核心概念
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用来保存各种打包好的软件镜像;
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
2.使用Docker的步骤:
1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;
我的tomcat 阿里云镜像,比163,的快不知道多少倍,163的能累死你!!!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FBhxFSFl-1679417318848)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200517004339586.png)]
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://g1p7lcm3.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
二.Docker命令
2.1镜像命令
docker images
查看所有镜像;
docker ps 查看容器
docker stop 、`docker ps -aq`
docker stop ID
停止镜像
docker rm `docker ps -aq`
docker rm ID
三.部署tomcat
3.1 拉tomcat
docker pull tomcat:8.0.52
这个问题最少,里面的webapps直接包含内容,其他的9.0还需要继续拷贝内容到webapps下。
3.2 直接运行
docker run -d -p 8888:8080 --name tomcat8888 tomcat:8.0.52
3.3 查看效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XELUFG1s-1679417318849)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200517003936282.png)]
以下是9.0的安装:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n4zOfewH-1679417318850)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200517004559411.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q38We27i-1679417318852)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200517004634049.png)]
不信可以看下啊:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u5V9aNeU-1679417318852)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200517004659929.png)]
那咋回事类???
进入到镜像看下:
docker exec -it tomcat250 /bin/bash
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HaoWiU95-1679417318853)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200517004921175.png)]
cd webapps
然后ls一下,会发现没有东西哦,因为被精简掉了,是不是很抓狂哦!!!气死你:)
咋办?
cd webapps.dist东西都在它下面
回到tomcat目录
使用: cp -r webapps.dist/* webapps即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xESthYB5-1679417318854)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200517005231326.png)]
然后,浏览器再查看,发现OK了!!!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aTg3B7m3-1679417318855)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200517005254226.png)]
知道咋回事了吧!!!
四.安装mysql
1.查找mysql镜像
docker search mysql
2.docker pull mysql:latest
3.查看本地镜像
docker images
4.一般来说数据库容器不需要建立目录映射
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
建立目录映射
duso docker run -p 3306:3306 --name mysql \ -v /usr/local/docker/mysql/conf:/etc/mysql \ -v /usr/local/docker/mysql/logs:/var/log/mysql \ -v /usr/local/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7
5.查看容器是否正确运行
docker container ls
6.进入到docker连接mysql
docker exec -it mysql bash
7.连接mysql
mysql -h localhost -u root -p
或者:
mysql -uroot -proot
五.安装Nginx的镜像
1.查找nginx镜像
docker search nginx
2.获取最新镜像
docker pull nginx:latest
3.查看本地镜像
docker images
4.运行容器
docker run -di --name=mynginx -p 9080:80 nginx
5.安装成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4YE19dor-1679417318856)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200513230455465.png)]
6.将webapps下的mi文件夹改名一下:
mv mi html
7.将该目录复制到nginx下
docker cp html mynginx:/usr/share/nginx/
替换掉nginx原来下面的html目录。效果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uqTaUZDW-1679417318857)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200514010352827.png)]
六.安装redis
6.1 拉过来
docker pull redis
6.2 进到redis-cli下
redis-cli -h 192.168.80.230回车
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pEEdx5Qg-1679417318858)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200516174934074.png)]
6.3 测试
set name zhangchen
get name
七.DockerFile
官方文档:
ADD centos-7-x86_64-docker.tar.xz / LABEL \ org.label-schema.schema-version="1.0" \ org.label-schema.name="CentOS Base Image" \ org.label-schema.vendor="CentOS" \ org.label-schema.license="GPLv2" \ org.label-schema.build-date="20200504" \ org.opencontainers.image.title="CentOS Base Image" \ org.opencontainers.image.vendor="CentOS" \ org.opencontainers.image.licenses="GPL-2.0-only" \ org.opencontainers.image.created="2020-05-04 00:00:00+01:00" CMD ["/bin/bash"]
自己构建的docker file文件
FROM centos MAINTAINER zhangchen<83193980@qq.com> ENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim RUN yum -y install net-tools EXPOSE 80 CMD echo $MAPATH CMD echo "----end mycentos---" CMD /bin/bash
运行:
docker build -f mycentos -t mycent:0.1 .
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cTTSHcwk-1679417318859)(E:\政通路\课堂笔记\S3\Docker\assets\image-20200517233128392.png)]
八.CMD和EntryPoint的区别
vim cmdfile
FROM centos
CMD [“ls”,“-a”] #但不列出 “.” (目前目录) 及 “…” (父目录)
然后
docker build -f cmdfile -t cmdfile .
生成镜像;
这个是成功的镜像id b8a23ce1cde1
再添加一个-l参数;-l命令查看某一个目录会得到一个7个字段的列表
docker run b8a23ce1cde1 -l
链图片转存中…(img-cTTSHcwk-1679417318859)]
八.CMD和EntryPoint的区别
vim cmdfile
FROM centos
CMD [“ls”,“-a”] #但不列出 “.” (目前目录) 及 “…” (父目录)
然后
docker build -f cmdfile -t cmdfile .
生成镜像;
这个是成功的镜像id b8a23ce1cde1
再添加一个-l参数;-l命令查看某一个目录会得到一个7个字段的列表
docker run b8a23ce1cde1 -l
会发现报错;