Docker 基础篇 之 安装

2023-05-16

一、Docker安装

查看 CentOS 内核版本

Docker 要求 CentOS 系统的内核版本高于3.10, 执行如下命令查询 内核版本

uname -r # 查看内核版本
3.10.0-957.21.3.el7.x86_64 # 输出结果

删除旧版本

# 先卸载旧版本的 docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装 Docker-ec版

安装依赖包

# yum-utils 提供了 yum-config-manager ,
# 并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置仓库地址

  1. 使用官方仓库

     
    yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    
  2. 阿里云地址

    # 由于官方仓库是国外地址,一般较慢,所以可以设置国内的仓库地址
    yum-config-manager \
        --add-repo \
        http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

安装最新Docker

# 此种情况安装表示安装最新版本的 docker
yum install docker-ce docker-ce-cli containerd.io

指定版本安装

  1. 通过如下命令 列出可用版本

     # 列出可用版本
     yum list docker-ce --showduplicates | sort -r
    
  2. 指定版本安装

    # VERSION_STRING 为前一个 命令列出的信息的 第二列的从':' 到 '-' 之间的数据
    yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
    

启动Docker

Docker安装后默认是未启动的,可通过如下名启动Docker

systemctl start docker

卸载Docker

删除安装包

yum remove docker-ce docker-ce-cli containerd.io

删除镜像文件

rm -rf /var/lib/docker      # 删除镜像,配置等信息
rm -rf /var/lib/containerd  # 删除容器信息  

镜像加速

由于官方的镜像较慢,可以使用阿里云的镜像加速,执行如下命令即可,

# 阿里镜像加速 推荐安装 1.10.0 以上版本的 Docker
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://1bs4ljno.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

二、Docker容器的使用

Docker客户端

查看 Docker 支持的命令

# 在命令行中直接执行下面两个中的任意一个即可
docker 
docker help

查看某个命令的使用帮助

# 执行 命令 --help 的方式
docker run --help # 查看 run 命令的使用方法

使用容器

获取镜像

# 通过 pull 命令拉去一个 centos 的镜像。
# 若未指定版本,则拉去最新的版本的镜像
docker pull centos # 拉去最新版本镜像

运行容器

# 运行刚刚拉取的 centos 镜像。执行 run 命令,本地不存在运行的镜像,则会先去仓库拉取,然后再运行
docker run -it centos /bin/bash

#参数说明:
# -i          交互模式执行
# -t          终端
# -d          后台运行容器
# -P          容器内部端口随机映射到主机的端口
# -p          容器内部端口绑定到指定的主机端口
# -v          挂在卷,即指定一个宿主机的目录与挂在到容器中的某个目录上
# centos      centos镜像
# /bin/bash   放在镜像后面的就是镜像里面的命令

查看容器

# 执行如下命令可以查所有的容器
docker ps -a

退出容器

# 进入容器后执行 exit 即可退出容器,此命令在退出命令的同时也停止了容器
exit

start 启动

# 通过 start 命令启动一个停止的容器,后面可以跟 容器ID 或 容器名称
docker start <id 或 name>

说明: run 命令和 start命令的区别是:

docker run 命令是通过一个 镜像模板启动一个新的容器

docker start 命令是启动一个已经存在的停止的容器

停止容器

# 停止一个容器
docker stop <ID 或 name>

重启容器

# 重启一个容器  # ID 或 name 为容器的名字
docker restart  <ID 或 name>  # ID 或 name 为容器的名字

设置开机自启动

docker container update --restart=always  <ID 或 name> # 容器ID 或 容器名称

进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach
  • docker exec 推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。

attach

# 通过此命令进入容器,退出时,会停止容器
docker attach <ID 或 name>

exec

# 通过此命令进入容器 退出时不会停止容器
docker exec -it <ID 或 name> /bin/bash

删除容器

# 删除容器
docker rm -f <ID 或 name>

三、Docker镜像使用

当运行容器时,如果本地不存在镜像,Docker则自动从镜像库中拉取镜像。

列出本地镜像

docker images # 通过此命令可以查看本地已有的镜像
# 输出结果如下
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
redis         latest    7faaec683238   9 days ago    113MB
hello-world   latest    feb5d9fea6a5   3 weeks ago   13.3kB
centos        latest    5d0da3dc9764   5 weeks ago   231MB

# 参数说明
# --all, -a  显示所有镜像
# --digests  显示签名信息
# --filter, -f  设置过滤器
# -q, --quiet 只列出镜像ID

查找镜像

  1. 我们可以从 Docker Hub 网站来搜索镜像。

  2. 通过命令查找镜像

     docker search <image> # 可以通过此命令查找镜像
     #如 查找mysql 的镜像
     docker search mysql
    

拉取镜像

可以通过如下名在镜像仓库中拉取镜像

docker pull <image>:<tag> # 拉取镜像
# image 镜像名称
# tag   指定要拉取的镜像 tag,  如果设置 tag 默认拉取 latest 版本

# 例如
docker pull mysql     # 拉取最新版本的 mysql 镜像
docker pull mysql:5.7 # 拉取5.7 版本的mysql 镜像 

删除镜像

镜像删除使用 docker rmi 命令,

docker rmi hello-world #删除 hello-world 镜像
#删除所有镜像可以使用如下名
docker rmi $(docker images -aq)
  1. 当删除某个镜像出现如下错误时,可以添加 -f 参数 强制删除镜像

Error response from daemon: conflict: unable to remove repository reference “redis” (must force) - container c92e01e4d913 is using its referenced image 7faaec683238

  1. 当出现如下错误时,先把停止掉镜像对应的容器后,再添加 -f进行强制删除

Error response from daemon: conflict: unable to delete 7faaec683238 (cannot be forced) - image is being used by running container c92e01e4d913

创建镜像

在已有镜像上更新

  1. 下载镜像

    docker pull centos # 下载一个centos镜像
    
  2. 更新镜像

    docker run -it centos /bin/bash # 运行一个容器 
    
    yum update  # 更新 yum
    
    yum -y install net-tools # 在centos 中安装 net-tools 工具
    
  3. 提交镜像

    使用 docker commit 命令提交刚才安装后的容器,为一个镜像

    docker commit -a "whycode" -m "install net-tools" a78275da1084 whycode/centos:v1
    # -a 指定作者
    # -m 描述信息
    # a78275da1084 刚才更新的容器ID
    # whycode/centos:v1  指定镜像名称  v1 标识 tag 
    

通过Dockerfile构建新镜像

使用命令 docker build, 通过构建Dockerfile 文件,创建一个新的镜像文件

  1. 创建 Dockerfile 文件

    FROM centos                     # 使用 centos 作为基础镜像
    RUN  mkdir whycode              # 创建一个 文件夹
    RUN  yum -y install net-tools   # 安装 net-tools 工具
    EXPOSE 80                       # 暴露 80 端口
    CMD   /bin/bash                 # 容器启动执行命令
    
  2. 构建

    docker build -t whycode/centos:v2 . # 开始构建
    # -t  指明镜像名称, 如果在 构建时没有指定此项,则会生产“悬挂”镜像
    # .   Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 基础篇 之 安装 的相关文章

  • Docker端口映射

    为什么要端口映射 xff1f 在启动容器时 xff0c 如果不配置宿主机器与虚拟机的端口映射 xff0c 外部程序是无法访问虚拟机的 xff0c 因为没有端口 端口映射的指令是什么 xff1f docker指令 xff1a docker r
  • pyqt QStatusBar显示提示信息

    span class token keyword from span PyQt5 span class token keyword import span QtCore span class token keyword from span
  • 打jar包出现错误: The packaging for this project did not assign a file to the build artifact

    转载 xff1a 打jar包出现错误 xff1a The packaging for this project did not assign a file to the build artifact 曼彻斯特的天空是红色的的博客 CSDN博
  • 常见错误——使用CP命令复制目录出现 omitting directory 错误

    错误名称 omitting directory 使用命令 cp 描述 在Linux下使用cp命令拷贝对象时 xff0c 若出现了 omitting directory 错误 xff0c 确认CP命令复制的对象是否为非空目 录 在复制非空目录
  • 个人简历

    大家好 xff1a 本人系重庆大学2003级硕士研究生 xff0c 将于2006年7月毕业 相关技能 xff1a 1 计算机 xff1a 熟悉计算机软 硬件体系结构 xff0c 了解计算机接口技术 xff1b 熟悉C 43 43 汇编等语言
  • Adversarial Robustness - Theory and Practice

    文章目录 第一章 Introduction to adversarial robustness第二章 linear models第三章 Adversarial examples solving the inner maximization1
  • 筋斗云移动应用框架

    筋斗云框架是用于移动产品开发的一揽子解决方案 筋斗云的设计思想是做优雅的全平台应用 xff0c 可以制作各类移动端 xff08 如安卓 苹果平台 xff09 或桌面端 xff08 如Windows等桌面系统 xff09 的Web应用和原生应
  • 筋斗云接口编程 / 虚拟表和视图

    虚拟表和视图 表ApiLog中有一个字段叫app xff0c 表示前端应用名 xff1a 64 ApiLog id tm addr app userId userId 如果app 61 user xff0c 则关联到User表 xff1b
  • 用zt-zip Java库进行zip文件处理

    Java 标准库本身自带java util zip包 xff0c 利用该包可以解决zip文件的处理问题 但是该包提供的功能相对底层 xff0c 想要实现zip文件的处理 xff0c 需要写一 些代码 xff0c 该包并没有封装API到调用一
  • Linux临时目录/tmp与/var/tmp

    Linux有两个公知的临时目录 xff1a tmp与 var tmp xff0c 这两个目录被用户用于存储临时性的文件 xff0c 亦经常被程读写用户存储临时性数据 两个目录没有本质上的区别 xff0c 最根本的区别仅仅是系统对其中文件清理
  • Python 日志打印

    核心概念 Python标准库自带日志模块logging xff0c logging中涉及到4个核心组件 xff0c 这些组件构建了logging体系 Logger xff1a 应用程序直接使用的接口对象 xff0c 通过logger操作完成
  • Docker指定网桥和指定网桥IP

    docker network ls NETWORK ID NAME DRIVER 7fca4eb8c647 bridge bridge 9f904ee27bf5 none null cf03ee007fb4 host host Bridge
  • Python Hash操作-MD5-SHA-HMAC

    Python标准库提供了计算数据Hash的功能 xff0c 支持许多不同的算法 xff0c 常见的MD5 SHA1 SHA256 HMAC均在其中 MD5 SHA1 SHA256在hashlib模块中 xff0c HMAC在hmac模块中
  • 离线环境下火狐浏览器Firefox完全信息迁移

    火狐浏览器Firefox是一个历史比较久的网页浏览器 xff0c 当前的火狐采用顺序数字命名的版本号演进 xff0c 迭代速度较快 xff0c Windows上可以自动升级 xff0c 升级带来了安全更新和功能特性上的变化 火狐浏览器具书签
  • 用SLF4J输出log的正确姿势

    slf4j是Java的一种Log Api xff0c 类似Apache Commons Logging 最直接的log方式 logger debug 34 Entry number 34 43 i 43 34 is 34 43 String
  • Thymeleaf消息表达式

    消息表达式用于从消息源中提取消息内容实现国际化 表达式的语法 xff1a span class token tag span class token tag span class token punctuation lt span p sp
  • Thymeleaf URL表达式

    URL在Thymleaf中是第一类公民 xff0c 有其专有的表达式语法 64 共存在2大类URL xff1a 绝对URL http www your domain相对URL xff0c 分为四类相对于页面 user login html相
  • Maven resources的include和exclude

    Maven resources plugin支持明确声明 lt directory gt 指定的资源目录中哪些资源需要处理 xff0c 哪些资源可以不被处理 lt include gt 指明需要包括的资源 xff0c 位于src my re
  • Thymeleaf条件判断

    th if th if属性求Bool值 xff0c 只有true的时候其所在的标签及该标签中的内容才会被渲染到输出结果中 lt a href 61 34 comments html 34 th href 61 34 64 product c
  • 2019 蓝桥杯省赛 A 组模拟赛(一)C. 结果填空:马的管辖 (暴力搜索)

    题目 xff1a 在中国象棋中 xff0c 马是走日字的 一个马的管辖范围指的是当前位置以及一步之内能走到的位置 xff0c 下图的绿色旗子表示马能走到的位置 如果一匹马的某个方向被蹩马脚 xff0c 它就不能往这个方向跳了 xff0c 如

随机推荐

  • Ubuntu下安装使用Xfce4

    安装 xff1a 代码 sudo apt get install xfce4 xfce4 taskbar plugin xfce4 taskbar plugin是我需要 xff0c 你可不用 xff0c 完整安装xfce4 的桌面环境 su
  • isdigit()函数如何判断负数

    在使用字符序列isdigt函数时 xff0c 我们会发现它无法判断负数 xff0c 如 xff1a a 61 39 2 39 39 3 39 4 5 print a 0 isdigit print a 1 isdigit 输出 xff1a
  • 用python操作浏览器的三种方式

    第一种 xff1a selenium导入浏览器驱动 xff0c 用get方法打开浏览器 xff0c 例如 xff1a import time from selenium import webdriver def mac driver 61
  • Linux-虚拟网络设备-veth pair

    基本概念 Virtual Ethernet CableBidirectional FIFOOften used to cross namespaces Linux container 中用到一个叫做veth的东西 xff0c 这是一种新的设
  • openstack-neutron-OVS agent(持续更新)

    概述 ML2Plugin的主要工作是管理虚拟网络资源 xff0c 保证数据正确无误 xff0c 具体物理设备的设置则由Agent完成 L2Agent通常运行在Hypervisor xff0c 与neutron server通过RPC通信 x
  • VUE中使用EventSource接收服务器推送事件

    Vue项目中 xff0c EventSource触发的事件中this指向变了 使用const that 61 this xff0c 然后在EventSource触发的事件中使用that if typeof EventSource 61 61
  • VNC

    一 安装tigervnc server 二 配置登录帐号 三 生成xstartup与log日志 注意 xff1a 如果没有使用vncserver来 设置密码 xff0c 则service vncserver restart 是不会成功的 这
  • DirectUI框架GUIFW

    前言 guifw是一款基于GDI 43 的DirectUI皮肤引擎 xff0c 借鉴了DuiLib和Qt的思想 效果预览 xff1a http download csdn net detail sllins 7707771 代码已开源 xf
  • keil 提示internal command error和no sw device

    1 使用keil烧录软件的时候 xff0c jlink stlink无法识别到芯片 需要排查的问题 1 xff09 换条线 2 xff09 是不是有程序禁用了Seral Wire xff1a 使用cubeide cubeMX xff0c 容
  • 多线程编程模式之Single Threaded Execution 模式

    一 Single Threaded Execution 模式介绍 简单的来说 xff0c Single threaded execution 模式描述了在一种多线程环境下各个线程对于公用资源的使用方式 任一时刻 xff0c 只有一个线程可以
  • NVIDIA Jetson TX2 查看系统相关+运行demo

    1 查看Jetson TX2 L4T版本 xff1a head n 1 etc nv tegra release 2 查看系统版本 xff1a cat etc lsb release 3 查看系统内核 xff1a uname a 4 查看内
  • Docker镜像迁移至新的服务器(全部数据)

    1 找到你想移动的 Docker 容器的 ID 2 提交你的变更 xff0c 并且把容器保存成镜像 xff0c 命名为 newimage docker commit span class token number 3 span a09b25
  • 配置VNC环境在windows主机访问阿里云linux服务器

    配置VNC环境在windows主机访问阿里云linux服务器 虽然作为服务器使用更多的是使用字符终端连接服务器 xff0c 进行操作 xff0c 因为图形界面很消耗性能和资源 xff0c 但有的时候使用图形界面进行操作更为便捷 xff0c
  • pythondataframe输出小结

    在使用dataframe时遇到datafram在列太多的情况下总是自动换行显示的情况 xff0c 导致数据阅读困难 xff0c 效果如下 xff1a coding utf 8 import numpy as np import pandas
  • 聊聊 Redis 为什么构建自己的简单动态字符串 SDS

    我们知道 xff0c Redis 支持字符串 哈希 列表 集合和有序集合五种基本类型 那么我们如何把图片 音频 视频或者压缩文件等二进制数据保存到 Redis 中呢 xff1f 之前在使用 Memcached 缓存这类数据时是把它们转换成
  • 聊聊 Redis 高可用之持久化AOF和RDB分析

    Redis 持久化概述 Redis 是内存数据库 xff0c 数据都是存储在内存中 xff0c 为了避免进程退出导致数据的永久丢失 xff0c 需要定期将 Redis 中的数据以某种形式把内存中的数据保存到磁盘中 xff1b 当 Redis
  • mysqldump: Got error: 1044: Access denied for user XXXX when doing LOCK TABLES

    一 报错信息 在使用mysqldump 执行远程备份数据库的时候报如下错误 xff1a mysqldump Got error span class token number 1044 span Access denied span cla
  • jmap -heap [pid]运行报:Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException(不允许的操作)

    一 运行环境 操作系统 xff1a Ubuntu 5 4 0 6 Java版本 xff1a JDK8 二 执行命令 jmap heap span class token punctuation span pid号 span class to
  • chkconfig: command not found

    问题描述 在 ubuntu1 16 04 10 执行 chkconfig 命令报 chkconfig command not found 说明此服务上没有安装 chkconfig 执行如下命令进行安装 span class token fu
  • Docker 基础篇 之 安装

    一 Docker安装 查看 CentOS 内核版本 Docker 要求 CentOS 系统的内核版本高于3 10 执行如下命令查询 内核版本 span class token function uname span r span class