docker

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 Tair(兼容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
目录
相关文章
|
存储 监控 开发者
Docker详解,你知道的和不知道的都在这儿
@[TOC](目录) Docker 是一个开源的容器化平台,允许开发者将应用程序和所有其依赖项打包成一个轻量级、可移植的容器,以便在任何地方运行。Docker 采用了 Linux Namespace 和 cgroups 等技术,实现了高度的资源隔离和安全保障,使得容器化应用得以快速、高效地部署和运行。 本文将详细介绍 Docker 的架构、原理和应用,包括以下内容: 1. Docker 的架构和原理 2. Docker 的安装和使用 3. Docker 的基本命令和操作 4. Docker 的容器管理 5. Docker 的网络管理 6. Docker 的存储管理 7.
153 0
|
6月前
|
存储 弹性计算 数据安全/隐私保护
|
7月前
|
关系型数据库 MySQL Shell
|
7月前
|
JavaScript Linux Docker
【Docker】什么是Docker?
【4月更文挑战第20天】【Docker】什么是Docker?
|
NoSQL Java Linux
|
Docker 容器 Kubernetes
docker
docker
125 0
|
Linux Docker Python
JupyterNotebook-Docker版
制作jupyter notebook的docker镜像,兼容numpy, pandas, matplotlib, pyspark, opencv-python, requests, flask等组件。
470 0
|
存储 持续交付 虚拟化
|
NoSQL Shell Redis
docker的使用
docker的使用
151 0
|
安全 前端开发 应用服务中间件
Docker 介绍 一
Docker 介绍 一
438 0
Docker 介绍 一
下一篇
DataWorks