ubuntu安装、使用docker超级详细的入门教程

这篇具有很好参考价值的文章主要介绍了ubuntu安装、使用docker超级详细的入门教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker安装

  • 查看官网(https://docs.docker.com/get-docker),根据系统版本安装。
  1. 删除老版本

    sudo apt-get remove docker docker-engine docker.io containerd runc
    
  2. 设置储存库

    sudo apt-get install \  
    ca-certificates \  
    curl \  
    gnupg \
    lsb-release 
    
  3. 添加官方秘钥

    sudo mkdir -p /etc/apt/keyrings  
    
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
  4. 授权docker并更新apt

    sudo chmod a+r /etc/apt/keyrings/docker.gpg
    
    sudo apt-get update
    
  5. 安装最新docker

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  6. 试运行

    sudo docker run hello-world
    

    ubuntu安装、使用docker超级详细的入门教程

docker卸载

  1. 卸载应用

    sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  2. 删除目录

    sudo rm -rf /var/lib/docker  
    
    sudo rm -rf /var/lib/containerd
    
  3. 默认路径

    /var/lib/docker
    

更换docker源

  1. 登录阿里云平台(支付宝就能登录)

  2. 找到容器镜像服务
    控制台-产品与服务-弹性计算-容器镜像服务

  3. 找到镜像加速器
    容器镜像服务-镜像工具-镜像加速器

  4. 找到相关文档,配置使用

      sudo mkdir -p /etc/docker  
      
      sudo tee /etc/docker/daemon.json <<-'EOF'  
      {  
        "registry-mirrors": ["https://*********.mirror.aliyuncs.com"]  # 这里的地址每个人都有自己的
      }  
      EOF 
      
      sudo systemctl daemon-reload  
      
      sudo systemctl restart docker
    

Docker的常用命令

帮助命令

  • 查看信息

     docker version # 显示docker版本信息
     docker info    # 显示docker的系统信息,包括镜像和容器的数量
     docker 命令 --help  # 帮助命令 例如: docker images --help
    
    • 帮助文档地址:https://docs.docker.com/engine/reference/commandline/docker/

镜像命令

  • 查看镜像命令

      docker images
      # 可选项
      -a, --all # 列出所有镜像
      -q, --quiet 只显示镜像的id
    
  • 搜索镜像

    docker search 
    # 可选项
    --filter=Stars=3000 # 搜索出来的就是start大于3000的
    # 例如搜索星数量大于3000的:
     root@mediaServer:~# docker search mysql --filter=stars=3000
     NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
     mysql     MySQL is a widely used, open-source relation…   13622     [OK]
     mariadb   MariaDB Server is a high performing open sou…   5202      [OK]
    
    
  • 下载镜像

     docker pull [:tag] 
     # 例如
       root@mediaServer:~# docker pull mysql
       Using default tag: latest # 不写 tag,则默认是 latest (最新版)
       latest: Pulling from library/mysql
       72a69066d2fe: Pull complete  # 这里是分层下载,docker image的核心 -联合文件系统
       93619dbc5b36: Pull complete  # 通过联合文件系统,不同版本间会有相同的分层,相同分层可以共用,极大的节省空间
       99da31dd6142: Pull complete
       626033c43d70: Pull complete
       37d5d7efb64e: Pull complete
       ac563158d721: Pull complete
       d2ba16033dad: Pull complete
       688ba7d5c01a: Pull complete
       00e060b6d11d: Pull complete
       1c04857f594f: Pull complete
       4d7cfa90e6ea: Pull complete
       e0431212d27d: Pull complete
       Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709 # 签名
       Status: Downloaded newer image for mysql:latest
       docker.io/library/mysql:latest # 真实地址
     # docker pull mysql 等价于 docker pull docker.io/library/mysql:latest
     # 如果要下载指定版本,将tag换成版本号,版本号需要在docker hub中存在 
     # docker hub地址 https://hub.docker.com/
     # 例如 指定版本号 
       root@mediaServer:~# docker pull mysql:5.7
       5.7: Pulling from library/mysql # 指定的5.7版本
       72a69066d2fe: Already exists  # 共用分层,不用下载
       93619dbc5b36: Already exists
       99da31dd6142: Already exists
       626033c43d70: Already exists
       37d5d7efb64e: Already exists
       ac563158d721: Already exists
       d2ba16033dad: Already exists
       0ceb82207cd7: Pull complete
       37f2405cae96: Pull complete
       e2482e017e53: Pull complete
       70deed891d42: Pull complete
       Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
       Status: Downloaded newer image for mysql:5.7
       docker.io/library/mysql:5.7
     # 下载完毕后使用docker images可以查看当前docker拥有镜像
       root@mediaServer:~# docker images
       REPOSITORY              TAG       IMAGE ID       CREATED         SIZE
       mysql                   5.7       c20987f18b13   12 months ago   448MB  # 5.7版本mysql
       mysql                   latest    3218b38490ce   12 months ago   516MB  # 最新版mysql
       hello-world             latest    feb5d9fea6a5   15 months ago   13.3kB # 之前测试时下载的镜像
    
  • 删除镜像

     docker rmi -f 镜像id # 删除指定容器,rmi中的i理解成image,比较容易记忆
     docker rmi -f 镜像id 镜像d 镜像id 镜像id #删除多个镜像
     docker rmi -f $(docker images -aq) # 删除全部镜像
     # 删除全部镜像
       root@mediaServer:~# docker rmi -f $(docker images -aq) #括号中可使用镜像id查询命令
       root@mediaServer:~# docker images
       REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
      
    

容器命令

  • 说明:有了镜像后才能创建容器,下载一个centerOS镜像来测试

    docker pull centos
    
  • 新建容器并启动

      docker run [可选参数] image
      # 参数说明
      --name="Name" 容器名字 tomcat01 tomcat02,用来区分容器
      -d            后台方式运行
      -it           使用交互方式运行,进入容器查看内容
      -p            指定容器的端口 -p 8080:8080
          -p ip:主机端口:容器端口
          -p 主机端口:容器端口(常用)
          -p 容器端口
          容器端口
      -P            随机指定端口
      # 例如,启动并进入容器
      root@mediaServer:~# docker run -it centos /bin/bash
      [root@031b6283750a /]# ls  # 查看容器内的centos,基础版本,很多容器都是不完善的!
      bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
      # 从容器中退出
      [root@f7ac477f37cc /]# exit
      exit
      root@mediaServer:/# ls # 这里主机版本是ubuntu,镜像版本centeros,可以看出目录是不一样的
      bin  boot  cdrom  dev  etc  home  initrd.img  initrd.img.old  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  swapfile  sys  tmp  usr  var  vmlinuz  vmlinuz.old
      
    
  • 列出所有的运行的容器

        
    # docker ps 命令 --列出当前正在运行的容器
        -a # 列出当前正在运行的容器 + 历史运行过的容器
        -m=? # 显示最近创建的容器
        -q # 只显示容器的编号
    # 举例
    root@mediaServer:/# docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    root@mediaServer:/# docker ps -a
    CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS                       PORTS     NAMES
    f7ac477f37cc   centos         "/bin/bash"   8 minutes ago    Exited (0) 8 minutes ago               naughty_banzai
    031b6283750a   centos         "/bin/bash"   11 minutes ago   Exited (130) 9 minutes ago             quizzical_merkle
    
  • 退出容器

    exit        # 直接容器停止并退出
    Ctrl + p + Ctrl + q # 容器不停止退出  
    # 举例 退出不停止
      
    root@mediaServer:/# docker run -it centos /bin/bash
    [root@39160141a464 /]# root@mediaServer:/#
    
  • 删除容器

    docker rm 容器id                      # 删除指定容器,不能删除正在运行的容器,如果要强制删除添加 -f
    docker rm (docker ps -aq)             # 删除所有的容器
    docker ps -a -q|xargs docker rm       # 使用管道命令删除所有容器
    
  • 启动和停止容器的操作

    docker start 容器id         # 启动容器
    docker restart 容器id       # 重启容器
    docker stop 容器id          # 停止容器
    docker kill 容器id          # 杀掉容器
    

常用的其他命令

  • 后台启动容器

    # 命令 docker run -d 镜像名!
    root@mediaServer:~# docker run -d centos
    37d229c7fedaf7d65b83ea19027e9135b9f6eb5e6d545cc94d64dd86724d7c38
    root@mediaServer:~# docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    # 问题docker ps,发现centos停止了
    # 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
    # nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
    
  • 查看日志

    # 启动容器,为了显示日志, -c 后面添加一段可执行的shell脚本
    root@mediaServer:~# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"
    88fc27d4690887e96dce9ba923c5fb9e90326292be9fa70e80a3d7520794c8d8
    root@mediaServer:~# docker ps
    CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
    88fc27d46908   centos    "/bin/sh -c 'while t…"   5 seconds ago   Up 4 seconds             admiring_mendel
    # 显示日志 
    docker logs -f -t --tail number 容器id
      -tf             # 显示日志
      -tail number    # 要显示的日志条数 number 条数
    root@mediaServer:~# docker logs -tf --tail 10 88fc27d46908
    2022-12-30T01:57:20.130177221Z kuangshen
    2022-12-30T01:57:21.134535761Z kuangshen
    2022-12-30T01:57:22.140011966Z kuangshen
    2022-12-30T01:57:23.145330842Z kuangshen
    2022-12-30T01:57:24.148903390Z kuangshen
    2022-12-30T01:57:25.154288654Z kuangshen
    ...
    
  • 查看容器中进程信息

    # 命令 docker top 容器id
    root@mediaServer:~# docker top e1f35e5177e3
    UID      PID         PPID         C        STIME        TTY          TIME          CMD
    root     66679       66651        0        10:05        pts/0        00:00:00      /bin/bash
    
  • 查看容器中的元数据

    # 命令  
    docker inspect 容器id
    # 例如
    root@mediaServer:~# docker inspect e1f35e5177e3
    [
        {
            "Id": "e1f35e5177e387ea5f8da2f906c686e26a80b4deef458d8a4a0a2271b32ad757",
            "Created": "2022-12-30T02:05:28.75979358Z",
            "Path": "/bin/bash",
            "Args": [],
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 66679,
                "ExitCode": 0,
                "Error": "",
                "StartedAt": "2022-12-30T02:05:29.214918372Z",
                "FinishedAt": "0001-01-01T00:00:00Z"
            },
            ...
        }
    ]
    
  • 进入当前正在运行的容器

    # 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
    
    # 命令1
    docker exec -it 容器id
    # 例如
    root@mediaServer:~# docker exec -it e1f35e5177e3 /bin/sh
    sh-4.4# ls
    bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    sh-4.4# ps -ef
    UID         PID   PPID  C STIME TTY          TIME CMD
    root          1      0  0 02:05 pts/0    00:00:00 /bin/bash
    root         15      0  0 02:18 pts/1    00:00:00 /bin/sh
    root         22     15  0 02:18 pts/1    00:00:00 ps -ef
    
    # 命令2
    docker attach 容器id
    # 例如
    root@mediaServer:~# docker attach e1f35e5177e3
    [root@e1f35e5177e3 /]# ls
    bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    
    # docker exec         # 进入容器后开启一个新的终端,可以在里面操作(常用)
    # docker attach       # 进入容器正在执行的终端,不会启动新的进程
    
  • 从容器内拷贝文件到主机上

    # 查看当前主机/home下的文件目录
    root@mediaServer:/home# ls
    administrator  kuangshen.java
    root@mediaServer:/home# docker ps
    CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
    e1f35e5177e3   centos    "/bin/bash"   42 minutes ago   Up 42 minutes             vigilant_leavitt
    
    # 进入docker内部
    root@mediaServer:/home# docker attach e1f35e5177e3
    [root@e1f35e5177e3 /]# cd /home/
    [root@e1f35e5177e3 home]# ls
    
    # 在home文件夹下新建一个文件
    [root@e1f35e5177e3 home]# touch test.java
    [root@e1f35e5177e3 home]# ls
    test.java
    [root@e1f35e5177e3 home]# exit
    exit
    
    # 将文件拷贝出来到主机上
    root@mediaServer:/home# docker cp e1f35e5177e3:/home/test.java /home
    root@mediaServer:/home# ls
    administrator  kuangshen.java  test.java
    root@mediaServer:/home#
    
    # 拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现同步
    

镜像

  • 镜像是什么

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

    • 从远程仓库下载
    • 朋友拷贝给你
    • 自己制作一个镜像DockerFile
  • commit镜像

    1. # 提交容器成为一个新的副本
    2. docker commit
    3. # 命令和git原理类似
    4. docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
    

​ 如果你想要保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就虚拟机的快照!文章来源地址https://www.toymoban.com/news/detail-448311.html

常用命令小结

  • attach 容器id # 进入容器正在执行的终端,不会启动新的进程
  • cp # 从容器内拷贝文件到主机上
  • Ctrl + p + Ctrl + q # 容器不停止退出
  • exec -it 容器id # 进入容器后开启一个新的终端,可以在里面操作(常用)
  • exit # 直接容器停止并退出
  • images # 查看镜像
  • info # 显示docker的系统信息,包括镜像和容器的数量
  • inspect 容器id # 查看容器中的元数据
  • kill 容器id # 杀掉容器
  • logs # 查看容器日志
  • ps # 列出所有的运行的容器
  • pull [:tag] # 下载镜像
  • restart 容器id # 重启容器
  • rm 容器id # 删除指定容器
  • rmi [镜像id] # 删除镜像
  • run [可选参数] 镜像 # 从一个镜像启动容器
  • search 镜像名 # 搜索镜像
  • start 容器id # 启动一个容器
  • stop 容器id # 停止容器
  • top 容器id # 查看容器中的进程信息
  • version # 显示docker版本信息

参考

  • 【狂神说java】Docker教程
    https://www.kuangstudy.com/bbs/1552836707509223426

到了这里,关于ubuntu安装、使用docker超级详细的入门教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx(NGINX)详细下载安装及使用教程(非常适合入门)

    文章目录 目录 前言 一、如何下载 1.打开nginx官网 2.点击下载 ​编辑 3.选择稳定版本(windows)​编辑  4.然后就是解析安装到指定目录下 二、启动nginx服务器 1.启动服务器 2、再是查看任务进程是否存在,dos或打开任务管理器都行  3、最后一步是打开我们的浏览器访问刚才的

    2024年02月16日
    浏览(35)
  • Rocky Linux 9.0 版本小白入门下载安装使用调优超详细教程

    本期给大家带来的是rocky Linux 9.0 版本的下载安装教程,首先rocky Linux 9.0版本是2022.7.14发布的,我刚发布第二天下载使用的,总体感觉比之前更好一些,例如壁纸、桌面环境等,然后就是软件设施基础准备好:VMware、XShell(可忽略,别的远程软件也可以),然后接下来我们就看

    2024年02月05日
    浏览(40)
  • PhpStudy下载安装使用教程,图文教程(非常详细)从零基础入门到精通,看完这一篇就够了。

    一、官网下载 二、安装 三、简单使用 PhpStudy:让天下没有难配的服务器环境。 学习网络安全经常需要搭建各种各样的Web环境,而PphStudy(简称“小皮”)可以一键搭建环境,节省下载、配置环境的时间。 1)访问PhpStudy官网: https://www.xp.cn/ 2)【首页】选择Windows版。 3)跳转

    2024年02月02日
    浏览(50)
  • 超详细Git下载安装配置使用教程,从入门到上传本地项目到GitHub,一文就够了

    身为一个合格的程序Yuan,Git工具我们必然是要掌握的,那么对于小白来讲一定有这几个疑问,Git是什么?怎么使用?怎么配置?Git命令是什么?本文将从这几方面帮助大家了解和使用Git。 Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版

    2024年02月03日
    浏览(27)
  • Docker超详细基础教程,快速入门docker首选

    一、docker概述 1.什么是docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之

    2024年02月13日
    浏览(31)
  • Docker超详细教程——入门篇+实战

    docker官网 镜像仓库 概念:类似于各种项目和软件的应用商店,大家把项目放到docker仓库中也就是这个应用商店,其他人就可以下载使用这个项目,各个项目直接独立互不影响。使用docker只需要把我们的项目打包成镜像放到docker中。 imag镜像 容器的模板,用来构建容器,相当

    2024年02月07日
    浏览(30)
  • Python 安装教程,新手入门(超详细)含Pycharm开发环境安装教程

    目录 一、Python介绍 二、Python安装教程 (一)Python的下载 (二)Python的安装 三、Pycharm开发工具的安装 (一)Pycharm介绍 (二)Pycharm的下载 (三)Pycharm的安装 ​        Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替

    2024年01月20日
    浏览(66)
  • 超详细Redis入门教程——Redis 的安装与配置

    本文小新为大家带来 超详细Redis入门教程——Redis 的安装与配置 相关知识,具体内容包括 Redis 的安装 , 连接前的配置 , Redis 客户端分类 (包括: 命令行客户端 , 图形界面客户端 , Java 代码客户端 ), Redis 配置文件详解 等进行详尽介绍~ 不积跬步,无以至千里;不积小

    2023年04月19日
    浏览(66)
  • 超级详细的 Docker Desktop 安装 GitLab

    GitLab 分为 社区版( Community Edition ,缩写为 CE)和 企业版( Enterprise Edition ,缩写为 EE)。社区版是免费的,而企业版包含一些收费服务,一般来说个人开发者用社区版就足够了。 GitLab是一款基于git仓库的代码管理工具,可以帮助我们团队进行版本控制和协作开发。gitlab还提

    2024年01月16日
    浏览(39)
  • Git快速入门篇—— Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程)

    前言:我们平时在整理代码的时候,尤其是与别人一起开发项目的时候,常常涉及到代码的更新,因此代码版本问题成了一个很头痛的事。而git正是为了解决这种问题而诞生。本文将详细介绍如何通过淘宝镜像进行git的安装以及git的简单入门技巧。 下一章: git与远程仓库的交

    2024年02月03日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包