docker

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: docker

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

会发现报错;


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
应用服务中间件 nginx Docker
Docker的世界
Docker的世界
15 0
|
8月前
|
Java Linux 虚拟化
docker
docker
1303 0
|
4月前
|
Linux 应用服务中间件 nginx
Docker使用
Docker容器技术入门
50 0
|
7月前
|
Docker 容器
|
8月前
|
JSON API 数据格式
docker详解
docker详解
63 0
|
10月前
|
存储 Kubernetes 负载均衡
Docker
是一个开源的容器化平台,它可以让开发者和系统管理员轻松地创建、部署和运行应用程序。Docker使用操作系统级别的虚拟化技术,可以将应用程序及其依赖项打包到一个称为Docker容器的单个可移植包中,从而实现应用程序的隔离、移植性和可重复性。
1837 2
|
10月前
|
存储 安全 测试技术
Docker初步了解
Docker初步了解
53 0
|
关系型数据库 MySQL Java
初识Docker
你好看官,里面请!今天笔者讲的是初识Docker。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
155 1
初识Docker
|
关系型数据库 Linux KVM
Docker是什么,有什么用?
Docker是什么,有什么用?
8064 0
Docker是什么,有什么用?