docker

> windows系统下docker桌面版安装指南

- 先决条件: windows10非家庭版,启用虚拟化

- 设置容器资源

- 设置镜像加速:[阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台](https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)
 
  ```
  "registry-mirrors": [
      "https://bp10feec.mirror.aliyuncs.com"
    ]
  ```

- 阿里云k8s镜像预加载脚本
 
  + load_images.ps1 for windows
 
  + load_images.sh for mac
 
  + 均使用powershell运行

- 安装参考:[k8s-for-docker-desktop](https://github.com/AliyunContainerService/k8s-for-docker-desktop)

- 官方文档:[Docker](https://docs.docker.com/)

> ## docker常用命令

- docker version : docker版本信息    

- docker info :详细信息

- docker --help:万能命令

- 文档地址:[Use the Docker command line | Docker Documentation](https://docs.docker.com/engine/reference/commandline)

- #### 镜像命令
 
  + docker images : 查看镜像
 
  + docker images --help
 
  + ```
    -a, --all             Show all images
          --digests         Show digests
      -f, --filter filter   Filter output based on conditions provided
          --format string   Pretty-print images using a Go template
          --no-trunc        Don't truncate output
      -q, --quiet           numeric IDs
    ```
 
  + docker search:搜索
 
  + docker pull:下载
 
  + docker rmi rf 镜像id:删除镜像

- #### 容器命令
 
  - 有镜像才可以创建容器
 
  - 新建容器并启动
   
    - docker run [可选参数] image
     
      - 参数说明
      - --name="Name"  容器名字 用来区分容器
      - -d 后台方式运行
      - -it 使用交互方式运行,进入容器查看内容
      - -p 指定容器端口
        - -p ip:主机端口:容器端口
        - -p 主机端口:容器端口(常用)
        - -p 容器端口
        - 容器端口
      - 测试,启动并进入容器
        - docker run -it centos /bin/bash
      - 从容器中退回主机
        - exit
   
    - 列出所有正在运行中的容器
     
      - docker ps:当前正在运行的容器
      - docker ps -a:历史运行过的容器
      - docker ps -q:只显示容器编号
   
    - 退出容器
     
      - exit # 直接容器停止并退出
     
      - Ctrl + P + Q # 直接容器不停止并退出
   
    - 删除容器
     
      - docker rm 容器id   删除指定容器
     
      - docker rm -f  $(docker pd -aq)
   
    - 启动和停止容器的操作
     
      - docker start 容器id             # 启动容器
     
      - docker restart 容器id         # 重启
     
      - docker stop 容器id             # 停止正在运行的容器
     
      - docker kill 容器id                # 强制停止当前容器
   
    - 例如
     
      - 用bash命令启动centos:Docker run -it centos /bin/bash

- #### 日志、元数据、进程查看
 
  - 后台启动容器
   
    ```
    docker run -d 镜像名
   
    docker后台启动必须要有对应的前台进程,否则启动后会自动停止
    ```
 
  - 查看日志
   
    - docker logs (docker logs -tf --tail 10 容器id:以字符串的形式显示所有log
 
  - 查看容器中的进程信息
   
    ```
    docker top 容器id
    ```
 
  - 查看镜像元数据
   
    ```
    docker inspect 容器id
    ```
 
  - 进入当前正在运行的容器
   
    ```
    docker exec -it ID /bin/bash # 进入容器后会开启一个新的终端,可以操作
    docker attach -ID # 正在执行当前的代码
    ```
 
  - 从容器内拷贝文件到主机上
   
    ```
    docker cp ID:容器内路径 目标主机路径
    ```

- docker process overview(小结)
 
  ![](C:\Users\yuanyhua\Desktop\D\learningDOC\img\docker overview.png)
 
  ```
  attach # 当前shell下的attach链接指定运行镜像 Attach to a running container
  build # 通过DockerFile 定制镜像 Build an image from a DockerFile
  commit # 提交当前容器为新的镜像 Create a new image from a container’s changes
  cp # 从容器中拷贝指定文件或目录到宿主机中 Copy files/folders between a container and the local filesystem
  create #创建一个新的容器,同run,但不启动容器 Create a new container
  diff # 查看docker容器变化 Inspect changes to files or directories on a container’s filesystem
  events # 从docker服务获取容器实时事件 Get real time events from the server
  exec # 在已存的容器上运行命令 Run a command in a running container
  export # 导出容器的内容流作为一个tar归档文件[对应import] Export a container’s filesystem as a tar archive
  history # 展示一个镜像形成历史 Show the history of an image
  images # 列出系统当前镜像 List images
  import # 从tar包中的内容创建一个新的文件系统映像 Import the contents from a tarball to create a filesystem image
  info # 显示系统相关信息 Display system-wide information
  inspect # 查看容器详细信息 Return low-level information on Docker objects
  kill # kill指定docker容器 Kill one or more running containers
  load # 从一个tar包中加载一个镜像 Load an image from a tar archive or STDIN
  login # 注册或者登录一个docker源服务器 Log in to a Docker registry
  logout # 从当前docker registry退出 Log out from a Docker registry
  logs # 输出当前容器日志信息  Fetch the logs of a container
  port # 查看映射端口对应的容器内部源端口 List port mappings or a specific mapping for the container
  pause # 暂停容器 Pause all processes within one or more containers
  ps # 列出容器列表 List containers
  pull # 列出容器列表 Pull an image or a repository from a registry
  push # 推送指定镜像或者库镜像至docker源服务器 Push an image or a repository to a registry
  restart # 重启运行的容器 Restart one or more containers        
  rm # 移除一个或多个容器 Remove one or more containers
  rmi # 移除一个或多个镜像[无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或-f 强制删除 Remove one or more images]
  run # 创建一个新的容器并运行一个命令 Run a command in a new container
  save # 保存一个镜像为一个tar包 Save one or more images to a tar archive (streamed to STDOUT by default)
  search # 在dockerhub中搜索镜像 Search the Docker Hub for images
  start # 启动容器 Start one or more stopped containers
  stop # 停止容器 Stop one or more running containers
  tag # 给源中镜像打标签 Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top # 查看容器中运行的进程信息 Display the running processes of a container
  unpause # 取消暂停容器 Unpause all processes within one or more containers
  version # 查看docker版本号 Show the Docker version information
  wait # 截取容器停止时的退出状态信息 Block until one or more containers stop, then print their exit codes
  ```

> ## docker安装nginx

> ## docker安装tomcat

```
官方使用
docker run -it --rm tomcat:9.0 # tomcat用完即删
下载启动
docker pull tomcat
启动运行(容器)
docker run -d -p 3355:8080 --name tomcat01 tomcat
测试
进入容器
docker exec -it tomcat01 /bin/bash
```

> ## 可视化

- portainer
 
  + 图形化界面管理工具!提供一个后台面板供我们操作
   
    ```
    docker run -d -p 8088:9000
    ```

- Rancher(CI/CD)

> ## Docker镜像讲解

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

+ Docker镜像加载原理:
 
  > Unions(联合文件系统)

文件系统是一种分层、轻量级、并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不通目录挂载到同一个虚拟文件系统下,union文件系统是docker镜像的基础,镜像可以通过分层来进行继承,基于基础镜像可以制作各种具体的应用镜像。

特性: 一次加载多个文件系统,但从外面只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

> Dockerj镜像加载原理

> commit镜像
- docker commit 提交容器成为一个新的副本
- docker commit -m "提交描述信息" -a "作者" imageID ImageName [tag]
> 实战测试
- 启动一个默认的tomcat, 没有webapps应用,镜像的原因,官方默认webapps下无文件
- 我自己拷贝进去了基本文件
- 将我们操作过的容器通过commit提交为一个新的镜像供以后使用;目录的挂载,将容器的目录挂载到linux系统上
> ## 容器数据卷
- 容器间的数据共享技术,将Docker容器产生的数据同步到本地
> ### 容器数据卷
  - 方式1:直接使用命令来挂载 -v
    +  docker run -it -v 主机目录:容器内目录。例如,docker run -it -v /home.ceshi:/home centos /bin/bash
  - 启动起来的时候可以通过docker inspect imageID来查看挂载情况(Mounts目录);
  - DockerFile
    - Dockerfie被用来构建docker镜像
    - 具名和匿名挂载
      +  匿名挂载: ` docker run -d -p --name nginx01 -v /etc/nginx/nginx`;
      +  查看所有volume的情况: docker volume ls
      +  具名挂载: ` docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx nginx`;
      +  所有docker容器内的卷,在没有指定目录的情况下,存放路径为`/var/lib/docker/volumes/juming-nginx/_data`
      +  查看数据卷: ` docker volume inspect juming-nginx`
      +  区分具名挂载和匿名挂载
         +  -v 容器内路径        # 匿名挂载
         +  -v 卷名:容器内路径   # 具名挂载
         +  、宿主机路径::容器内路径       # 指定路径挂载
      + 拓展
 
        1.  `ro: 只读, rw:可读可写`
        ```
            docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
            docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
        ```
    -  数据卷容器
       -  容器数据同步: --volumes-from, 数据会拷贝到多个容器
> ## DockerFile
-  dockerfile是用来构建docker镜像的文件,命令参数脚本
-  构建步骤
  1. 编写一个dockerfie文件
  2. docker build 构建成为一个镜像
  3. docker run 运行镜像
  4. docker push发布镜像(dockerhub,阿里云镜像库)
  5. 指令
     1.









> ## Docker网络
posted @ 2022-09-30 22:39  fridaa  阅读(45)  评论(0编辑  收藏  举报