写点什么

docker 学习笔记(一)

作者:Studying_swz
  • 2022-10-19
    天津
  • 本文字数:12085 字

    阅读完需:约 1 分钟

docker学习笔记(一)

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
复制代码


![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bc8376560dbb4df898dbb632c5f39e72~tplv-k3u1fbpfcp-zoom-1.image)
复制代码


  • 系统版本


  cat /etc/os-release
复制代码


![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/401e8e2f666449e7abeb1f981da0db5d~tplv-k3u1fbpfcp-zoom-1.image)
复制代码



  #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的默认工作路径
复制代码


![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bcf6dac021094107914f14bab5482e0c~tplv-k3u1fbpfcp-zoom-1.image)  ![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b35061bbd15b41e799566762f12999eb~tplv-k3u1fbpfcp-zoom-1.image)
复制代码

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 帮助命令

  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 #查看所有本地的主机上的镜像

  [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 #搜索镜像

  [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 #下载镜像

  #下载镜像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/镜像名称 #删除镜像

  [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镜像来测试学习**
复制代码


  [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 新建容器并启动

  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 列出所有运行的容器

  #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 退出容器

  exit  #直接容器停止并退出  ctrl + p + q #容器不停止并退出
复制代码

6.3.4 删除容器

  docker rm 容器id  #删除指定的容器,不能删除正在运行的容器,如果强制需要-f  docker rm -f $(docker ps -aq)  #删除所有的容器  docker ps -a -q|xargs docker rm  #删除所有的容器
复制代码

6.3.5 启动和停止容器的操作

  docker start 容器id  #启动容器  docker restart 容器id  #重启容器  docker stop 容器id  #停止当前正在运行的容器  docker kill 容器id    #强制停止当前运行的容器
复制代码

6.4 常用的其他命令

6.4.1 后台启动容器

  #命令 docker run -d 镜像名  [root@iZ2zefiis08efdip3nlhu2Z ~]# docker run -d cento
#问题docker ps,发现centos直接停止了 #常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止 #nginx,容器启动后,发现自己没有提供服务,就会立即停止,就是没有程序了
复制代码

6.4.2 查看日志

  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 查看容器中进程信息

  [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 查看镜像的元数据

  docker inspect 容器id
复制代码

6.4.5 进入当前正在运行的容器

  #我们通常容器都是使用后台方式运行,需要进入容器,修改一些配置
#命令 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 #进入容器正在执行的终端,不会进入新的终端
复制代码


**从容器拷贝文件到主机上**
复制代码


  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/通过它来访问了:![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9ae81650b71448149ced22de3917004c~tplv-k3u1fbpfcp-zoom-1.image)创建账户:admin、123456进入之后的面板:![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dba38684dd8545adb2af4692a4e69721~tplv-k3u1fbpfcp-zoom-1.image)
复制代码

11.镜像原理之联合文件系统

  • 镜像是什么?镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需要的所有内容,包括代码、运行时、库、环境变量和配置文件。所有的应用,直接打包 docker 镜像,就可以直接跑起来!

  • 如何得到镜像:从远程仓库下载、朋友拷贝给你、自己制作一个镜像 DockerFile

  • Docker 镜像加载原理

  • UnionFS(联合文件系统)我们下载的时候看到的一层层就是这个!


  • Docker 镜像加载原理


  • 分层理解(不同镜像之间的分层共用)

    镜像层无法改变,自己增加的操作会是新的一层,可以发布成一个新的镜像。

  • 提交自己的镜像


    docker  commit #提交容器成为一个新的副本        #,命令和git类似    docker commit -m = "提交的描述信息"  -a="作者" 容器id 目标镜像名:[TAG]
复制代码


  实战测试:
复制代码


    #1.启动一个默认的tomcat
#2.发现这个默认的tomcat 是没有webapps应用,镜像的原因,官方的镜像默认webapps下面是没有文件的!
#3.我自己拷贝进去了基本的文件 #4.将我们操作过的容器通过commit提交为一个镜像!我们以后就可以使用我们修改后的进行镜像就可以了。
复制代码


  ![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/73c7a6c8866c43e3b866e51768de9e93~tplv-k3u1fbpfcp-zoom-1.image)
复制代码



注:到了这里才是入门 docker!😂


学习视频:https://www.bilibili.com/video/BV1og4y1q7M4?p=17&spm_id_from=pageDriver

发布于: 刚刚阅读数: 3
用户头像

Studying_swz

关注

还未添加个人签名 2020-12-23 加入

还未添加个人简介

评论

发布
暂无评论
docker学习笔记(一)_10月月更_Studying_swz_InfoQ写作社区