docker学习笔记(一)

举报
Studying-swz 发表于 2022/10/24 20:05:10 2022/10/24
【摘要】 1.docker概述docker为什么出现?一款产品:开发-----上线 两套环境!开发 ---- 运维。问题:在我的电脑可能运行!版本更新导致的问题!环境配置是十分的麻烦,每一个机器都要部署环境!发布一个项目(jar + (redis、mysql、jdk)),项目能不能带上环境安装打包!windows,最后发布到Linux!传统:开发jar,运维安装各种环境现在:开发打包部署上线,一套流...

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
    

    在这里插入图片描述

  • 安装
    https://docs.docker.com/engine/install/centos/

    #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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。