Docker之镜像与容器

1.  镜像与容器联系和存储驱动

    1.  配置国内镜像仓库

        vi /etc/docker/daemon.json

{
"registry-mirrors": ["https://registry.docker-cn.com"],  加速器
"insecure-registries":["172.168.1.194"]  信任私有库
}

    2.  镜像与容器联系

        镜像不是一个单一的文件,而是多层构成。我们可以通过docker history ID/name查看镜像各层内容及大小。镜像默认存储在/var/lib/docker/<storage-driver>.

        查看镜像多层内容:  docker history 镜像名称

        查看docker存储驱动:  docker info  centos使用overlay2,ubuntu使用aufs

        overlay2支持的文件系统:  ext4, xfs

        容器是在镜像上面加了一层读写层

        Docker使用存储驱动器管理每层内容及可读写的容器层

    3.  镜像结构

        Docker镜像采用分层结构,最底层为bootfs,上层为rootfs

          bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源;

          rootfs:位于bootfs之上,表现为docker容器的根文件系统

              docker中,rootfs由内核挂载为只读模式,而通过联合挂载技术额外挂载一个可写层。

        下层的镜像称为父镜像,最底层的称为基础镜像。

        最上层为可读写层,其下的称为只读层

2.  镜像管理

    1.  搜索镜像

        docker  search nginx

    2.  下载镜像

        docker image pull 镜像名称:TAG

        例子:

          docker image pull httpd 

          如果不写tag,默认为TAG为lasest.

          严格来讲:pull镜像的时候,应该指定镜像服务器的地址。

          docker image pull registry.hub.docker.com/httpd:TAG

          docker image pull –a  下载仓库中的所有镜像。

          新版本:  docker image pull nginx

    3.  查看镜像的详细信息 

        docker image inspect 镜像名:TAG

        可以看到镜像的制作者,适应架构,各层的数字摘要

    4.  查看镜像的历史

        docker image history 镜像名:TA

        因为镜像文件是由多层形成的,使用这个命令可以看到镜像文件的形成历史。  

    5.  上传镜像到一个私有库

        docker image push 私有库地址:tag

    6.  保存镜像到一个文件中

        docker image save 镜像名:TAG -o 文件

    7.  载入镜像

        docker image load --input 镜像名:TAG

        docker image load -i 镜像名:TAG

        docker image < 镜像名:TAG

    8.  删除镜像

        docker image rmi 镜像名:TAG

    9.  修改镜像标签

        docker image tag source_image new_image:TAG

    10.  强制删除镜像

        docker image rmi -f 镜像名:TAG

    11.  列出镜像

        docker image ls

3.  容器管理

    1.  创建容器

        docker container create 镜像名称:TAG

        创建的容器处于停止状态,还需要使用docker start 启动容器。

    2.  启动容器

        docker container run 镜像名称:TAG

        

        例子:

          docker run -itd --name=tomcat-search -p 8087:8080 -v   /home/java/app/search/webapps:/usr/local/apache-tomcat-8.5.43/webapps -v /home/java/app/search/logs:/usr/local/apache-tomcat-8.5.43/logs tomcat:v2  

    3.  停止容器

        docker container stop 容器名称或容器ID

    4.  重启容器

        docker container restart 容器名称或容器ID

    5.  删除容器

        docker container rm 容器名称或容器ID

        docker container rm 容器名称或容器ID -f  强制删除容器

    6.  查看容器

        docker container ps  查看当前运行的容器

        docker container ps -a   查看所有的容器

    7.  显示运行的容器进程

         docker container top tomcat-cart  显示的是容器内部运行的进程

    8.  杀死运行中的容器

        docker container kill tomcat-cart

    9.  查看容器内运行程序的日志,包含标准输出日志和标准输出错误日志

        docker container logs tomcat-cart 

    10.  命名容器

        docker container run -d --name web nginx:1.21

    11.  查看容器详情

        docker container inspect 容器ID

    12.  查看容器资源情况

        docker container stats 容器ID

    13.  进入容器

        docker container exec -it 容器ID /bin/bash

        -d, --detach:在容器中后台执行命令;

        --privileged=true|false:是否给执行命令以高权限,默认值为false; 

        -i, --interactive=true|false:打开标准输入接受用户输入命令,默认值为false;

        -t, --tty=true|false:分配伪终端,默认值为false;

    14.  暂停容器

        docker container pause 容器ID

    15.  清理所有停止的容器

        docker container prune

    16.  拷贝数据

        docker cp命令用于容器与主机之间的数据拷贝

        docker cp 本地文件 容器ID:容器内部路径

        主机到容器  docker cp /www 9ff9ff99fd:/www/

        docker cp 容器ID:容器内部路径 本地文件

        容器到主机  docker cp 9ff9ff99fd:/www  /tmp

  

posted @ 2023-05-19 15:29  奋斗史  阅读(30)  评论(0)    收藏  举报