• docker镜像、容器 常用命令,容器端口映射


    前言

    当看到此篇文章时,你应该已经搭建好了docker环境了吧?如果没有,请移步另一个博客:docker的安装和设置镜像加速

    一、docker基础命令

    docker --version   查看版本号
    systemctl start docker  启动docker
    systemctl daemon-reload  守护进程重启
    systemctl restart docker  重启docker
    docker service docker stop  关闭docker
    docker stats 查看docker占用的内存
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    守护进程:在docker中,守护进程用于监控指定的进程,当发现目标进程工作异常时,可以对该目标进程进行控制

    二、docker镜像命令

    docker镜像好比是一个模版,可以通过这个模版来创建容器服务,通过这个镜像可以创建多个容器
    容器与容器之间相互是隔离的。

    1、docker images:列出本地主机的镜像

    docker images  列出本地主机的镜像
    
    • 1

    在这里插入图片描述
    REPOSITORY:表示镜像的仓库源
    TAG:镜像的标签
    IMAGE ID:镜像id
    CREATED:镜像创建时间
    SIZE:镜像大小

    2、 docker search :查看镜像

    docker search xxxx  查看某个服务的镜像是否存在
    docker search --limit 5 mysql  查看mysql服务的镜像,且只列出5个
    docker search mysql --limit  4 --no-trunc   查看mysql服务的镜像,且只列出4个,拦截信息不会被截断(展示完整信息)
    docker search mysql  --filter is-official=true  查看mysql服务的镜像,根据官方镜像过滤
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    NAME:镜像仓库源的名称
    DESCRIPTION: 镜像的描述
    OFFICIAL:是否 docker 官方发布。如果是官方镜像,显示 “OK”
    stars:类似 Github 里面的 star,表示点赞、喜欢的意思
    AUTOMATED:自动构建。如果是自动化构建,显示“OK”

    3、docker pull:拉取镜像

    Docker Hub地址:https://hub.docker.com/_/

    在这里插入图片描述
    在这里插入图片描述

    docker pull xxx    下载镜像
    docker pull mysql  从Docker Hub里,下载mysql最新的镜像
    docker pull -a mysql 从Docker Hub下载REPOSITORY为mysql的所有镜像
    docker pull mysql:5.7 从Docker Hub下载tag为5.7的mysql镜像
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    4、docker rmi : 删除docker镜像

    docker rmi id/名字  删除docker镜像
    docker rmi c20987f18b13  删除我本地的mysql镜像,根据镜像id删除
    docker rmi mysql   删除我本地的mysql镜像,根据镜像名字删除
    docker rmi -f mysql 强制删除mysql镜像
    docker rmi -f nginx mysql  同时删除我本地的nginx、mysql镜像
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    三、docker容器命令

    1、环境准备

    docker pull tomcat# 先拉取一个centos镜像
    
    • 1

    2、运行容器

    docker run --name container-name -d image-name:tag  运行容器
    docker run --name tomcat_ -d tomcat  通过tomcat镜像,生成名为:tomcat_的容器
    
    • 1
    • 2

    –name:自定义容器名
    -d:表示后台运行
    image-name:指定运行的镜像名称
    tag:镜像的版本
    在这里插入图片描述

    3、启动、停止、重启容器

    docker ps -a  先查看所有容器信息
    
    • 1

    在这里插入图片描述
    CONTAINER ID: 容器 ID。

    IMAGE: 使用的镜像。

    COMMAND: 启动容器时运行的命令。

    CREATED: 容器的创建时间。

    STATUS: 容器状态。

    docker start id  根据容器id启动容器   
    docker start 1d13832397e6  启动我本地的tomcat_容器
    docker start name  根据容器名字启动容器
    docker start tomcat_  启动我本地的tomcat_容器
    docker restart id/name 根据容器id或者容器名字重启容器
    docker restart tomcat_ 重启我本地的tomcat_容器
    docker stop id/name 停止容器
    docker kill id/name 停止容器
    docker stop tomcat_  / docker kill tomcat_  停止我本地的tomcat_容器
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    4、查看容器日志

    docker logs id/name 查看容器日志
    docker logs tomcat_ 查看tomcat_容器的日志
    
    • 1
    • 2

    在这里插入图片描述

    5、进入容器

    docker exec -it 容器名字/容器id  /bin/bash  进入容器
    docker exec -it tomcat_ /bin/bash  进入tomcat_容器内
    
    • 1
    • 2

    四、容器端口映射

    docker run --name 容器名字 -d 镜像名字:tag:单纯的如此运行容器,程序占用的是 Docker 容器内部的端口,并不是服务器对外的访问端口,所以必须做 端口映射 将服务器的实际端口映射到 Docker 容器中的端口才能访问。
    
    • 1

    在这里插入图片描述

    docker run --name 容器名字:tag -d -p 服务器端口:Docker端口 image-name  端口映射
    
    • 1

    –name:自定义容器名,不指定时,docker 会自动生成一个名称

    -d:后台运行容器

    -p: Linux 服务器与 Docker 容器的端口映射,默认情况下容器中镜像占用的端口是 Docker 容器中的端口,与外界是隔绝的,必须进行端口映射才能访问。

    image-name:指定运行的镜像名称以及 Tag

    1、tomcat端口映射案例

    [root@iZm5e8w23bqasdqw00wz524Z ~]# docker pull tomcat
    Using default tag: latest
    latest: Pulling from library/tomcat
    0e29546d541c: Pull complete 
    9b829c73b52b: Pull complete 
    cb5b7ae36172: Pull complete 
    6494e4811622: Pull complete 
    668f6fcc5fa5: Pull complete 
    dc120c3e0290: Pull complete 
    8f7c0eebb7b1: Pull complete 
    77b694f83996: Pull complete 
    0f611256ec3a: Pull complete 
    4f25def12f23: Pull complete 
    Digest: sha256:9dee185c3b161cdfede1f5e35e8b56ebc9de88ed3a79526939701f3537a52324
    Status: Downloaded newer image for tomcat:latest
    docker.io/library/tomcat:latest
    [root@iZm5e8w23bqasdqw00wz524Z ~]# docker run --name tomcat1 -d -p 9001:8080 tomcat
    c7ea8efea19f4fdde6ff63a1cd21ad4c329592ec55a90713ee75fa1f4e5e2ae6
    [root@iZm5e8w23bqasdqw00wz524Z ~]# docker exec -it tomcat1 /bin/bash
    root@c7ea8efea19f:/usr/local/tomcat# ls -l
    total 160
    -rw-r--r-- 1 root root 18994 Dec  2 22:01 BUILDING.txt
    -rw-r--r-- 1 root root  6210 Dec  2 22:01 CONTRIBUTING.md
    -rw-r--r-- 1 root root 60269 Dec  2 22:01 LICENSE
    -rw-r--r-- 1 root root  2333 Dec  2 22:01 NOTICE
    -rw-r--r-- 1 root root  3378 Dec  2 22:01 README.md
    -rw-r--r-- 1 root root  6905 Dec  2 22:01 RELEASE-NOTES
    -rw-r--r-- 1 root root 16517 Dec  2 22:01 RUNNING.txt
    drwxr-xr-x 2 root root  4096 Dec 22 17:07 bin
    drwxr-xr-x 1 root root  4096 Apr 11 10:44 conf
    drwxr-xr-x 2 root root  4096 Dec 22 17:06 lib
    drwxrwxrwx 1 root root  4096 Apr 11 10:44 logs
    drwxr-xr-x 2 root root  4096 Dec 22 17:07 native-jni-lib
    drwxrwxrwx 2 root root  4096 Dec 22 17:06 temp
    drwxr-xr-x 2 root root  4096 Dec 22 17:06 webapps
    drwxr-xr-x 7 root root  4096 Dec  2 22:01 webapps.dist
    drwxrwxrwx 2 root root  4096 Dec  2 22:01 work
    root@c7ea8efea19f:/usr/local/tomcat# exit
    exit
    [root@iZm5e8w23bqasdqw00wz524Z~]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    docker pull tomcat  拉取tomcat镜像
    docker run --name tomcat1 -d -p 9001:8080 tomcat docker端口8080映射外部端口9001
    docker tomcat1 exec -it /bin/bash  进入tomcat容器内
    ls -l   查看目录结构
    
    • 1
    • 2
    • 3
    • 4

    可以看到,进入tomcat1容器内,如同是在本地进入安装程序的根目录下一样,进去后可以执行 linux 命令。同样,可以通过exit命令(或者是ctrl+D)来退出。

    五、Docker 容器与宿主服务器文件复制

    cd /home  我先进入到根目录
    touch 11.txt    创建了一个11.txt文件
    docker cp /home/11.txt tomcat1:/home/11.txt  将宿主机的11.txt文件,复制到tomcat1容器的home目录下
    docker exec -it tomcat1 /bin/bash  进入tomcat1容器内
    cd /home  进入tomcat1容器的home目录
    ls     查看当前目录下的文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    [root@iZm5e8w23bqasdqw00wz524Z /]# cd /home
    [root@iZm5e8w23bqasdqw00wz524Z home]# touch 11.txt
    [root@iZm5e8w23bqasdqw00wz524Z home]# docker cp /home/11.txt tomcat1:/home/11.txt
    [root@iZm5e8w23bqasdqw00wz524Z  home]# docker exec -it tomcat1 /bin/bash
    root@c7ea8efea19f:/usr/local/tomcat# cd /home
    root@c7ea8efea19f:/home# ls
    11.txt
    root@c7ea8efea19f:/home# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    docker cp 宿主机路径/11.txt tomcat1:容器路径/11.txt 将宿主机的11.txt文件,复制到tomcat1容器的home目录下

  • 相关阅读:
    构建简单的梯度提升决策树(GBDT)模型:MATLAB 实现详解
    经纬高到北东天的坐标相互转换matlab
    【C语言】结构体内存对齐
    java.sql.SQLException:Unknown system variable ‘tx_isolation‘问题解决
    laravel 事件 & 订阅
    openjdk-jdk8-b109 hotspot虚拟机启动过程分析_1
    简单理解注意力机制与实现
    八股文-TCP的三次握手
    【cocos creator】编辑器里自动播放spine动画
    2023版 STM32实战6 输出比较(PWM)包含F407/F103方式
  • 原文地址:https://blog.csdn.net/weixin_46457203/article/details/124100307