1.docker概述
·docker为什么出现?
一款产品:开发-----上线 两套环境!
开发 ---- 运维。问题:在我的电脑可能运行!版本更新导致的问题!
环境配置是十分的麻烦,每一个机器都要部署环境!
发布一个项目(jar + (redis、mysql、jdk)),项目能不能带上环境安装打包!
windows,最后发布到Linux!
传统:开发jar,运维安装各种环境
现在:开发打包部署上线,一套流程做完!
·简单而说:Docker就是要解决上面的问题?
java — apk ----发布(应用商店)-----张三使用apk------安装即可!
java — jar(环境)----打包项目以及环境(镜像)-----(Docker仓库)-----下载我们发布的镜像----直接运行即可!
·历史?
2010年-------2013年开源------2014docker1.0发布
·为什么这么火?
比较轻巧,相比于虚拟机:在windows中装一个vm,通过这个软件可以虚拟出一台或者多台电脑。
vm:linux centos原生镜像(一个电脑!)隔离,需要开启多个虚拟机! 几个G 几分钟
docker:隔离,镜像(最核心的环境 4m + jdk +mysql)十分的小巧,运行镜像就可以了!小巧! 几个M KB 运行启动快!
2.docker能干什么?
- 虚拟机技术(虚拟出一条硬件)缺点:
1.资源占用十分多 2.冗余步骤多 3.启动很慢 - Docker优点:
容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,每个容器间是相互隔离的,每个容器内都有一个属于自己的文件系统,互不影响。
3.docker安装
基本组成
- 镜像(image):docker镜像就好比一个模板,可以通过这个模板来创建服务,tomcat镜像----->run---->tomcat01实例(提供服务器)。通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)容器(container):Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。
启动,停止,删除,基本命令!目前可
- 以理解为一个简易的Linux系统!
- 仓库(repository):仓库就是存放镜像的地方!仓库分为公有仓库和私有库!
Docker Hub(默认是国外的)
阿里云…都有容器服务器(配置镜像加速!) - 安装Docker:
- 系统内核3.10以上
uname -r
- 系统版本
cat /etc/os-release
#1.卸载旧的版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine #2.需要的安装包 yum install -y yum-utils #3.设置镜像的仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #更新yum软件包索引 yum makecache fast #4.安装docker docker-ce社区版 ee是企业版 yum install docker-ce docker-ce-cli containerd.io #5.启动docker systemctl start docker #6.验证docker docker version #7.hello-world docker run hello-world #8.查看hello-world镜像在不在 docker images #9.了解--卸载docker #9.1卸载依赖 yum remove docker-ce docker-ce-cli containerd.io #9.2删除资源 sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd 注:/var/lib/docker docker的默认工作路径
4.配置案例云镜像加速(个人版免费)
- 1.登录阿里云
- 2.找到镜像加速地址
- 3.配置使用
- 1.sudo mkdir -p /etc/docker 2.sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://yu7743ej.mirror.aliyuncs.com"] } EOF 3.sudo systemctl daemon-reload 4.sudo systemctl restart docker
5.Run的流程和docker原理
- run的流程
- docker是怎么工作的?
docker是一个Client - Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问!
DockerServer 接收到Docker-Client的指令,就会执行这个命令!
- Docker为什么比VM快?
6.docker的常用命令
6.1帮助命令
```powershell docker version #显示docker的版本信息 docker info #显示docker的系统信息,包含镜像和容器的数量 docker 命令 --help #查看帮助信息 ``` docker命令文档:[https://docs.docker.com/engine/reference/commandline/](https://docs.docker.com/engine/reference/commandline/cli/)
6.2镜像命令
6.2.1 docker images #查看所有本地的主机上的镜像
```powershell [root@iZ2zefiis08efdip3nlhu2Z ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 2 months ago 13.3kB #解释 REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的id CREATED 镜像的创建时间 SIZE 镜像的大小 #可选项 -a,--all #列出所有镜像 -q,--quit #只显示镜像的id ```
6.2.2 docker search #搜索镜像
```powershell [root@iZ2zefiis08efdip3nlhu2Z ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11803 [OK] mariadb MariaDB Server is a high performing open sou… 4492 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 885 [OK] percona Percona Server is a fork of the MySQL relati… 565 [OK] phpmyadmin phpMyAdmin - A web interface for MySQL and M… 391 [OK] centos/mysql-57-centos7 MySQL 5.7 SQL database server 92 mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 89 centurylink/mysql Image containing mysql. Optimized to be link… 59 [OK] # 可选项,通过收藏来过滤 --filter=STARS=3000 #搜索出来的镜像stars大于3000 ```
6.2.3 docker pull #下载镜像
```powershell #下载镜像docker pull 镜像名[:tag] [root@iZ2zefiis08efdip3nlhu2Z ~]# docker pull mysql Using default tag: latest #如果不写tag,默认就是latest latest: Pulling from library/mysql ffbb094f4f9e: Pull complete #分层下载,docker image的核心 联合文件系统 df186527fc46: Pull complete fa362a6aa7bd: Pull complete 5af7cb1a200e: Pull complete 949da226cc6d: Pull complete bce007079ee9: Pull complete eab9f076e5a3: Pull complete 8a57a7529e8d: Pull complete b1ccc6ed6fc7: Pull complete b4af75e64169: Pull complete 3aed6a9cd681: Pull complete 23390142f76f: Pull complete Digest: sha256:ff9a288d1ecf4397967989b5d1ec269f7d9042a46fc8bc2c3ae35458c1a26727 #签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest #真实地址 #指定版本下载 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker pull mysql:5.7 5.7: Pulling from library/mysql ffbb094f4f9e: Already exists #这里和上面的共用了,这是linux的一个优点 df186527fc46: Already exists fa362a6aa7bd: Already exists 5af7cb1a200e: Already exists 949da226cc6d: Already exists bce007079ee9: Already exists eab9f076e5a3: Already exists c7b24c3f27af: Pull complete 6fc26ff6705a: Pull complete bec5cdb5e7f7: Pull complete 6c1cb25f7525: Pull complete Digest: sha256:d1cc87a3bd5dc07defc837bc9084f748a130606ff41923f46dec1986e0dc828d Status: Downloaded newer image for mysql:5.7 docker.io/library/mysql:5.7 ```
6.2.4 docker rmi -f 镜像id/镜像名称 #删除镜像
```powershell [root@iZ2zefiis08efdip3nlhu2Z ~]# docker rmi 738e7101490b Untagged: mysql:5.7 Untagged: mysql@sha256:d1cc87a3bd5dc07defc837bc9084f748a130606ff41923f46dec1986e0dc828d Deleted: sha256:738e7101490b45decf606211a5437ed87aa6a82f1ff03c354564bf9375ce20f9 Deleted: sha256:addad8cfeac97b96eb6652a576269346ac96def9a6709ed2388e24fff4345837 Deleted: sha256:e288c3439a7e2f423f50bf22979a759371c51a70bbbaa450993c336978460b1a Deleted: sha256:33ece15accaa3bb20e3dee84e2e4501469b917c3abba3d5475cd1fec8bb3e82c Deleted: sha256:6b15390bceeca8424d82e75f5c9aca5eb4693f96849d6382168a99747877693d #删除全部镜像 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker rmi -f $(docker images -aq) Untagged: mysql:latest Untagged: mysql@sha256:ff9a288d1ecf4397967989b5d1ec269f7d9042a46fc8bc2c3ae35458c1a26727 Deleted: sha256:bbf6571db4977fe13c3f4e6289c1409fc6f98c2899eabad39bfe07cad8f64f67 Deleted: sha256:a72da99dce60d6f8d4c4cffa4173153c990537fcdfaa27c35324c3348d55dd5c Deleted: sha256:8b535d432ef2fbd45d93958347b2587c5cbe334f07d6909ad9d2d480ebbafb65 Deleted: sha256:14d13a3b33fc76839f156cd24b4636dab121e6d3d026cefa2985a4b89e9d4df8 Deleted: sha256:77c21a5a897a1ba752f3d742d6c94ee7c6b0e373fd0aeecc4bf88b9a3982007e Deleted: sha256:189162becec8bb4588c54fb4ea7e62d20121812e68aeb0291fb4bb5df9ec0985 Deleted: sha256:34980dadfd6a5bb9d7f9e8d4e408000e0a8f4840cc7d3092dc94357ebe7a89b6 Deleted: sha256:15b2beb64a91785c8f3709ecd2410d13577b3174faad164524434ce6a7633506 Deleted: sha256:e38dd14d47b61171927ea4b928f7296123b65a81ad1cfde8f5d00cadf1e81bbb Deleted: sha256:865abdfd8444741f581ce582e4ac5746c4a00c282febf65aa808a235ec7abf78 Deleted: sha256:b1e35233e1ac953bd06fc8fa83afb3a88c39c1aeae0c89a46cb1b652d6821b38 Deleted: sha256:3bcfdf6641227ff63e3ddf9e38e45cf317b178a50a664e45c6ae596107d5bc46 Deleted: sha256:f11bbd657c82c45cc25b0533ce72f193880b630352cc763ed0c045c808ff9ae1 Untagged: hello-world:latest Untagged: hello-world@sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685 Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412 ``` `
6.3 容器命令
**说明:只有有了镜像,才可以创建容器,Linux,下载一个centos镜像来测试学习** ```powershell [root@iZ2zefiis08efdip3nlhu2Z ~]# docker pull centos Using default tag: latest latest: Pulling from library/centos a1d0c7532777: Pull complete Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Downloaded newer image for centos:latest docker.io/library/centos:latest ```
6.3.1 新建容器并启动
`````powershell docker run [可选参数] image # 参数说明 --name="Name" 容器名字 tomcat01 tomcat02,用来区分容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -p 指定容器的端口 -p 8080:8080 -p ip:主机端口:容器端口 -p 主机端口:容器端口(常用) -p 容器端口 容器端口 -P 随机指定端口 #测试,启动并进入容器 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker run -it centos /bin/bash [root@d5c5b9d0bc90 /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr #从容器中退出,返回主机 [root@d5c5b9d0bc90 /]# exit exit [root@iZ2zefiis08efdip3nlhu2Z ~]# ls button frp mysql57-community-release-el7-11.noarch.rpm out.txt devstack jar.file nginx ```
6.3.2 列出所有运行的容器
```powershell #docker ps 命令 # 列出当前正在运行的容器 -a # 列出当前正在运行的容器+带出历史运行的容器 -n=? #显示最近创建的容器 -q #只显示容器的编号 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@iZ2zefiis08efdip3nlhu2Z ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d5c5b9d0bc90 centos "/bin/bash" 3 minutes ago Exited (0) 2 minutes ago cool_cannon 9b8a8e35cf07 feb5d9fea6a5 "/hello" 43 hours ago Exited (0) 43 hours ago jovial_mahavira ```
6.3.3 退出容器
```powershell exit #直接容器停止并退出 ctrl + p + q #容器不停止并退出 ```
6.3.4 删除容器
```powershell docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果强制需要-f docker rm -f $(docker ps -aq) #删除所有的容器 docker ps -a -q|xargs docker rm #删除所有的容器 ```
6.3.5 启动和停止容器的操作
```powershell docker start 容器id #启动容器 docker restart 容器id #重启容器 docker stop 容器id #停止当前正在运行的容器 docker kill 容器id #强制停止当前运行的容器 ```
6.4 常用的其他命令
6.4.1后台启动容器
```powershell #命令 docker run -d 镜像名 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker run -d cento #问题docker ps,发现centos直接停止了 #常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止 #nginx,容器启动后,发现自己没有提供服务,就会立即停止,就是没有程序了 ```
6.4.2 查看日志
```powershell docker logs -f -t --tail 容器 #默认没有日志 #自己编写一段shell脚本 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done" 427515b5f705df09e2a53ec4a8627905e372978ff0b8420c9b29eecd8be84a5e [root@iZ2zefiis08efdip3nlhu2Z ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 427515b5f705 centos "/bin/sh -c 'while t…" 46 seconds ago Up 46 seconds dreamy_knuth #显示日志 -tf #显示日志 --tail number #要显示日志条数 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker logs -tf --tail 10 427515b5f705 2021-12-09T08:35:37.620883699Z kuangshen 2021-12-09T08:35:38.623134389Z kuangshen 2021-12-09T08:35:39.625366194Z kuangshen 2021-12-09T08:35:40.627611852Z kuangshen 2021-12-09T08:35:41.629898108Z kuangshen 2021-12-09T08:35:42.632052261Z kuangshen 2021-12-09T08:35:43.634256067Z kuangshen 2021-12-09T08:35:44.636545513Z kuangshen 2021-12-09T08:35:45.638704350Z kuangshen 2021-12-09T08:35:46.640731850Z kuangshen 2021-12-09T08:35:47.642781720Z kuangshen 2021-12-09T08:35:48.644839453Z kuangshen 2021-12-09T08:35:49.647012074Z kuangshen 2021-12-09T08:35:50.648999842Z kuangshen ```
6.4.3 查看容器中进程信息
```powershell [root@iZ2zefiis08efdip3nlhu2Z ~]# docker top 427515b5f705 UID PID PPID C STIME TTY TIME CMD root 23619 23598 0 16:34 ? 00:00:00 /bin/sh -c while true;do echo kuangshen;sleep 1;done root 23903 23619 0 16:38 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1 ```
6.4.4 查看镜像的元数据
```powershell docker inspect 容器id ```
6.4.5 进入当前正在运行的容器
```powershell #我们通常容器都是使用后台方式运行,需要进入容器,修改一些配置 #命令 docker exec -it 容器id /bin/bash #测试 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done" f3a81f28c21d6f82a1c27521f53861d2a31a75e44f0671601bec6285de1b6d6e [root@iZ2zefiis08efdip3nlhu2Z ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f3a81f28c21d centos "/bin/sh -c 'while t…" 3 seconds ago Up 3 seconds angry_albattani [root@iZ2zefiis08efdip3nlhu2Z ~]# docker exec -it f3a81f28c21d /bin/bash [root@f3a81f28c21d /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 08:45 ? 00:00:00 /bin/sh -c while true;do echo kuangshen;sleep 1;done root 38 0 0 08:45 pts/0 00:00:00 /bin/bash root 54 1 0 08:45 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1 root 55 38 0 08:45 pts/0 00:00:00 ps -ef #方式二 docker attach 容器id #测试 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker attach 容器id 正在运行的代码...... #docker exec #进入容器后,开启一个新的终端,可以在里面操作(常用) #docker attach #进入容器正在执行的终端,不会进入新的终端 ``` **从容器拷贝文件到主机上** ```powershell docker cp 容器id:容器内路径 目的主机路径 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 670bcd0d814f centos "/bin/bash" 51 seconds ago Up 50 seconds mystifying_hermann #进入docker容器内部 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker attach 670bcd0d814f [root@670bcd0d814f /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@670bcd0d814f /]# cd /home [root@670bcd0d814f home]# ls #在容器内新建一个文件 [root@670bcd0d814f home]# touch test.java [root@670bcd0d814f home]# ls test.java [root@670bcd0d814f home]# exit exit [root@iZ2zefiis08efdip3nlhu2Z ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@iZ2zefiis08efdip3nlhu2Z ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 670bcd0d814f centos "/bin/bash" About a minute ago Exited (0) 6 seconds ago mystifying_hermann #将这个文件拷贝出来到主机上 [root@iZ2zefiis08efdip3nlhu2Z ~]# docker cp 670bcd0d814f:/home/test.java /home [root@iZ2zefiis08efdip3nlhu2Z ~]# ls button frp mysql57-community-release-el7-11.noarch.rpm out.txt devstack jar.file nginx [root@iZ2zefiis08efdip3nlhu2Z ~]# cd /home [root@iZ2zefiis08efdip3nlhu2Z home]# ls jar.file videodemo-0.0.1-SNAPSHOT.jar mysql57-community-release-el7-11.noarch.rpm videodemo4.rar test.java #拷贝是一个手动过程,未来我们使用 -V 卷的技术,可以实现 ```
- 小结
7.作业:docker安装nginx
- docker安装nginx
# 1.搜索镜像 search 建议大家去docker搜索,可以看到帮助信息 # 2.下载镜像 pull # 3.运行测试 [root@iZ2zefiis08efdip3nlhu2Z home]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx e5ae68f74026: Pull complete 21e0df283cd6: Pull complete ed835de16acd: Pull complete 881ff011f1c9: Pull complete 77700c52c969: Pull complete 44be98c0fab6: Pull complete Digest: sha256:9522864dd661dcadfd9958f9e0de192a1fdda2c162a35668ab6ac42b465f0603 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest [root@iZ2zefiis08efdip3nlhu2Z home]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest f652ca386ed1 7 days ago 141MB centos latest 5d0da3dc9764 2 months ago 231MB [root@iZ2zefiis08efdip3nlhu2Z home]# docker run -d --name nginx01 -p 3344:80 nginx 1442a7fbd27faf785267741dc61bb4724e22fad4cfa96c1508a0234adcb7b8ae # -d 后台运行 # --name 容器命名 # -p 宿主机端口:容器内部端口 [root@iZ2zefiis08efdip3nlhu2Z home]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1442a7fbd27f nginx "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 0.0.0.0:3344->80/tcp nginx01 670bcd0d814f centos "/bin/bash" 4 hours ago Up 4 hours mystifying_hermann [root@iZ2zefiis08efdip3nlhu2Z home]# curl localhost:3344 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> #进入容器 [root@iZ2zefiis08efdip3nlhu2Z home]# docker exec -it nginx01 /bin/bash root@1442a7fbd27f:/# ls bin docker-entrypoint.d home media proc sbin tmp boot docker-entrypoint.sh lib mnt root srv usr dev etc lib64 opt run sys var root@1442a7fbd27f:/# whereis nginx nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx root@1442a7fbd27f:/# cd /etc/nginx root@1442a7fbd27f:/etc/nginx# ls conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params root@1442a7fbd27f:/etc/nginx#
- 端口暴露
思考问题:修改主宿机映射到docker容器内—卷问题?见之后
8.作业:docker安装tomcat
- docker安装tomcat
#官方使用 (一般用来测试,用完自动删除) docker run -it --rm tomcat:9.0 #我们之前的启动都是后台,停止了容器,容器还是可以查到的 #下载再启动 docker pull tomcat:9.0 #[root@iZ2zefiis08efdip3nlhu2Z home]# docker pull tomcat Using default tag: latest latest: Pulling from library/tomcat 5e0b432e8ba9: Pull complete a84cfd68b5ce: Pull complete e8b8f2315954: Pull complete 0598fa43a7e7: Pull complete e0d35e3be804: Pull complete 8fc448a0c88b: Pull complete dbdff6e5955b: Pull complete 5daf3771e3d8: Pull complete e4265b3badfc: Pull complete 126f233cb97a: Pull complete Digest: sha256:429d5c140820d5eba38042823501d5f4e0f03b282133513e29c22d6358daa7c7 Status: Downloaded newer image for tomcat:latest docker.io/library/tomcat:latest #启动 [root@iZ2zefiis08efdip3nlhu2Z home]# docker run -d -p 3355:8080 --name tomcat01 tomcat 016c9b95a02dcc91e23ce196ff88528dff4f9074bdaf4cd0a76ca28b0aa681b8 #测试访问没有问题 #进入容器 [root@iZ2zefiis08efdip3nlhu2Z home]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 016c9b95a02d tomcat "catalina.sh run" 4 minutes ago Up 4 minutes 0.0.0.0:3355->8080/tcp tomcat01 1442a7fbd27f nginx "/docker-entrypoint.…" 41 minutes ago Up 21 minutes 0.0.0.0:3344->80/tcp nginx01 [root@iZ2zefiis08efdip3nlhu2Z home]# docker exec -it tomcat01 /bin/bash root@016c9b95a02d:/usr/local/tomcat# ls BUILDING.txt NOTICE RUNNING.txt lib temp work CONTRIBUTING.md README.md bin logs webapps LICENSE RELEASE-NOTES conf native-jni-lib webapps.dist root@016c9b95a02d:/usr/local/tomcat# cd webapps root@016c9b95a02d:/usr/local/tomcat/webapps# ls #发现问题:1.linux命令少了 2没有webapps #因为:阿里云镜像的原因,默认是最小的镜像,所有没必要的都要提出,来自保证最小可运行的环境 #解决:复制一下即可 root@016c9b95a02d:/usr/local/tomcat# cd webapps root@016c9b95a02d:/usr/local/tomcat/webapps# ls root@016c9b95a02d:/usr/local/tomcat/webapps# cd .. root@016c9b95a02d:/usr/local/tomcat# cd webapps.dist root@016c9b95a02d:/usr/local/tomcat/webapps.dist# ls ROOT docs examples host-manager manager root@016c9b95a02d:/usr/local/tomcat/webapps.dist# cd .. root@016c9b95a02d:/usr/local/tomcat# cp -r webapps.dist/* webapps root@016c9b95a02d:/usr/local/tomcat# cd webapps root@016c9b95a02d:/usr/local/tomcat/webapps# ls ROOT docs examples host-manager manager
9.作业:docker安装es + kibana
略:es + kibana 还未学习!!!!
10.可视化–portainer
- 什么是portainer?
Docker图形界面管理工具!提供一个后台面板提供我们操作!
docker run -d -p 8088:9000 \ --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
访问测试:http://ip:8088/
通过它来访问了:
创建账户:admin、123456
进入之后的面板:
11.镜像原理之联合文件系统
- 镜像是什么?
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需要的所有内容,包括代码、运行时、库、环境变量和配置文件。
所有的应用,直接打包docker镜像,就可以直接跑起来! - 如何得到镜像:
从远程仓库下载、朋友拷贝给你、自己制作一个镜像DockerFile - Docker镜像加载原理
- UnionFS(联合文件系统)
我们下载的时候看到的一层层就是这个! - Docker镜像加载原理
- 分层理解(不同镜像之间的分层共用)
镜像层无法改变,自己增加的操作会是新的一层,可以发布成一个新的镜像。 - 提交自己的镜像
docker commit #提交容器成为一个新的副本 #,命令和git类似 docker commit -m = "提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
实战测试:
#1.启动一个默认的tomcat #2.发现这个默认的tomcat 是没有webapps应用,镜像的原因,官方的镜像默认webapps下面是没有文件的! #3.我自己拷贝进去了基本的文件 #4.将我们操作过的容器通过commit提交为一个镜像!我们以后就可以使用我们修改后的进行镜像就可以了。
注:到了这里才是入门docker!😂
学习视频:
https://www.bilibili.com/video/BV1og4y1q7M4?p=17&spm_id_from=pageDriver