docker (CentOS,ubuntu)安装及常用命令

news2024/9/21 5:42:13
Docker和虚拟机一样,都拥有环境隔离的能力,但它比虚拟机更加轻量级,可以使资源更大化地得到应用
  • Client(Docker客户端):是Docker的用户界面,可以接受用户命令(docker build,docker pull...)和配置标识,并与Docker daemon通信
  • Images(Docker镜像):是一个只读模板,含创建Docker容器的说明,它与操作系统的安装光盘有点像
  • Containers(容器):镜像的运行实例,镜像与容器的关系类比面向对象中的类和对象
  • Registry:是一个集中存储与分发镜像的服务。最常用的Docker Registry是官方的Docker Hub 

docker-ce与docker-io的区别?

Docker有两个主要版本:docker.io和docker-ce。Docker.io是早期版本的Docker,而docker-ce是Docker社区版(Community Edition)的缩写,是Docker的当前主要版本。

Docker.io与docker-ce之间的最大区别在于支持的平台和版本更新频率。Docker.io支持的平台相对较少,包括Ubuntu、Fedora、Debian等。此外,Docker.io的版本更新频率相对较低,可能会导致在某些情况下出现更新延迟的问题。

相比之下,docker-ce支持更广泛的平台,包括Windows、MacOS、CentOS、RHEL等,并且更新频率更高,包括每个月的安全更新和每季度的功能更新。此外,docker-ce还包括对Swarm等Docker工具的支持,并具有更丰富的社区支持和文档资料。

总之,docker-ce是当前主要版本的Docker,支持更广泛的平台和更高的版本更新频率,具有更多的功能和更丰富的社区支持。

Docker安装

ubuntu

docker.io安装

apt-get install -y docker.io
# 查看docker状态
systemctl status docker
# 如果没有启动,就手动启动
systemctl start docker
# 设置开机自启
systemctl enable docker

如果提示: Package ‘docker.io‘ has no installation candidate

 配置阿里云的gpg 

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

配置阿里云的镜像 

sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" 

再次执行 :apt-get install -y docker.io

docker.ce安装

设置 Docker 的apt存储库。

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装 Docker 软件包。

 sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

CentOS7系统下安装Docker

yum -y install docker

启动docker后台服务:

service docker start

验证是否安装成功:

root@localhost hemi]# docker version

镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

新版的 Docker 使用 /etc/docker/daemon.json(Linux)

请在该配置文件中加入(没有该文件的话,请先建一个):

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

Docker常用命令

镜像常用命令

1)搜索镜像

可以在Docker Hub主页上搜索镜像,可以通过docker search命令搜索,如:

docker search [OPTIONS] TERM

OPTIONS说明:

  • --automated : 只列出 automated build类型的镜像;
  • --no-trunc : 显示完整的镜像描述;
  • -s : 列出收藏数不小于指定值的镜像。

[root@localhost hemi]# docker search -s 20 tomcat

其中,

STARTS:镜像仓库收藏数

AUTOMATED:表示是否是自动构建的镜像仓库

2)下载镜像

docker pull [OPTIONS] NAME[:TAG]

OPTIONS说明:

  • -a :拉取所有 tagged 镜像 
  • --disable-content-trust :忽略镜像的校验,默认开启

举个栗子

docker pull java   #从Docker Hub中下载最新版本的Java镜像
docker pull reg.itmuch.com/java:8    #从指定Registry中下载标签为8的Java镜像

3)列出镜像

docker images [OPTIONS] [REPOSITORY[:TAG]]

OPTIONS说明:  

  • -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
  • --digests :显示镜像的摘要信息
  • -f :显示满足条件的镜像;
  • --format :指定返回值的模板文件;
  • --no-trunc :显示完整的镜像信息;
  • -q :只显示镜像ID。

举个栗子:

列出本地镜像中REPOSITORY为ubuntu的镜像列表

[hemi@localhost ~]$ docker images ubuntu

4)删除本地镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:  

  • -f :强制删除;
  • --no-prune :不移除该镜像的过程镜像,默认移除;

容器常用命令

 1)新建并启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

 OPTIONS说明(常用):

  • -d: 后台运行容器,并返回容器ID;
  • --name="nginx-lb": 为容器指定一个名称;
  • -i:以交互模式运行容器,通常与 -t 同时使用;
  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • -P: 随机端口映射;
  • -p: 指定端口映射,有以下四种格式
    • ip:hostPort:containerPort
    • ip::containerPort
    • hostPort:containerPort
    • containerPort
  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container:<name|id> 四种类型;

 如:

docker run --name mynginx -d nginx:latest
#使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。

docker run -p 91:80 -v /data:/data -d nginx:latest
#使用镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的91端口,主机的目录/data映射到容器的/data。

[hemi@localhost ~]$ docker run -it nginx:latest /bin/bash 
root@b8573233d675:/# 
#使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

2)列出容器

docker ps [OPTIONS]

 OPTIONS说明(常用):

  • -a :显示所有的容器,包括未运行的。
  • -f :根据条件过滤显示的内容。
  • --format :指定返回值的模板文件。
  • -l :显示最近创建的容器。
  • -n :列出最近创建的n个容器。
  • --no-trunc :不截断输出。
  • -q :静默模式,只显示容器编号。
  • -s :显示总的文件大小。

3)停止容器

docker stop CONTAINER_ID/CONTAIN_NAME

4)强制停止容器

docker kill CONTAINER_ID/CONTAIN_NAME

5)启动已停止容器

docker start CONTAINER_ID/CONTAIN_NAME

6)重启容器

docker restart CONTAINER_ID/CONTAIN_NAME

7)进入容器

docker exec -it CONTAINER_ID bash

如:

[hemi@localhost ~]$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                    NAMES
219371844a81        7f94db72116e        "tomcat.sh"         7 seconds ago       Up 7 seconds        8009/tcp, 8080/tcp, 0.0.0.0:91->80/tcp   zen_kalam
[hemi@localhost ~]$ docker exec -it 219371844a81 bash
bash-4.2$ 

8)删除容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]

 OPTIONS说明(常用):

  • -f :通过SIGKILL信号强制删除一个运行中的容器
  • -l :移除容器间的网络连接,而非容器本身
  • -v :-v 删除与容器关联的卷

提交容器更改保存为新镜像

docker commit -m "change" 202df25a547a  mycentos:v5

 202df25a547a:容器id            mycentos:v5 镜像名:标签               

docker容器和宿主机之间复制文件

从主机复制到容器sudo docker cp host_path containerID:container_path

从容器复制到主机sudo docker cp containerID:container_path host_path

docker rm `docker ps -a -q` 删除所有容器

拷贝配置文件到宿主机:
docker cp 容器名称或者容器id :容器地址  宿主机地址
docker cp  tensquare_elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml  /usr/share/elasticsearch.yml
容器与系统时间同步:
1.共享主机的localtime  
创建容器的时候指定启动参数,挂载localtime文件到容器内,保证两者所采用的时区是一致的。 # docker run -ti -d --name my-nginx -v /etc/localtime:/etc/localtime:ro docker.io/nginx /bin/bash
2.复制主机的localtime
docker cp /etc/localtime 87986863838b:/etc/
3.创建dockerfile文件的时候,自定义该镜像的时间格式及时区。在dockerfile文件里添加下面内容:
......
FROM tomcat
ENV CATALINA_HOME /usr/local/tomcat
.......
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
......
查看日志:docker logs [OPTIONS] CONTAINER

OPTIONS说明:

  • -f : 跟踪日志输出

  • --since :显示某个开始时间的所有日志

  • -t : 显示时间戳

  • --tail :仅列出最新N条容器日志

docker logs --tail=10 f8cded9f66e5

docker logs -f f8cded9f66e5

镜像(image)保存到本地

docker save [镜像id]> /path/文件名.tar
例如:docker save 267ffb4c34c2> /home/kangkang/Desktop/dockertest/test.tar

镜像(image)加载到本地docker

把下载好的文件test.tar拷贝到需要加载镜像的电脑中
docker load < /path/文件名.tar
例:docker load < /home/kaka/test.tar

docker image ls 后发现镜像(image)名和版本都为空
用docker tag [镜像id] 镜像名:版本号
docker tag ab67ffb4c97c2 myimagesload:v1.0.1

运行 docker run ab67ffb4c97c2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1611776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaSE】异常

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 认识异常 异常分类 举例 栈溢出错误 空指针异常&#xff08;运行时异常&#xff09; 编译时异常 处理异常 抛出 异常 程序本身触发异常 手动抛出异常 举例 利用try ca…

C++修炼之路之多态--多态的条件与例外,重载+重写+重定义

目录 前言 一&#xff1a;构成多态的条件及一些特殊情况&#xff08;前提是构成父子类&#xff09; 1.多态是在不同的继承关系的类对象&#xff0c;去调用同一函数&#xff0c;产生了不同的结果 2.两个条件 3.三同的两个例外 1.协变---返回值类型可以不同&#xff0c;但必…

【简单讲解下Stylus入门使用方法】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

从OWASP API Security TOP 10谈API安全

1.前言 应用程序编程接口&#xff08;API&#xff09;是当今应用驱动世界创新的一个基本元素。从银行、零售、运输到物联网、 自动驾驶汽车、智慧城市&#xff0c;API 是现代移动、SaaS 和 web 应用程序的重要组成部分&#xff0c;可以在面向客 户、面向合作伙伴和内部的应用程…

数据结构 -- 二叉树二叉搜索树

二叉树 二叉树是这么一种树状结构&#xff1a;每个节点最多有两个孩子&#xff0c;左孩子和右孩子 重要的二叉树结构 完全二叉树&#xff08;complete binary tree&#xff09;是一种二叉树结构&#xff0c;除最后一层以外&#xff0c;每一层都必须填满&#xff0c;填充时要遵…

【Windows游戏】大头菜小子抢银行游戏介绍

游戏介绍 今天写的是一款游戏&#xff0c;叫《大头菜小子抢银行》。 《大头菜小子抢银行》是《大头菜小子避税历险记》的续作&#xff0c;玩家需要联手泡菜团队&#xff0c;进行史上最奇怪的劫案&#xff0c;绑架人质&#xff0c;偷取珍贵财报&#xff0c;探索植物银行的黑暗…

MapReduce工作流程(Hadoop3.x)

MapReduce 是一种用于并行处理大规模数据集的——编程模型和处理框架。它通常用于分布式计算环境中&#xff0c;如Apache Hadoop。 工作流程 1. 切分阶段&#xff08;Splitting&#xff09;&#xff1a; 数据集被分成多个数据块&#xff0c;每个数据块的大小通常在64MB到12…

nginx反向代理及负载均衡

node1192.168.136.55Nginx主负载均衡器node3192.168.136.57Web01服务器node4192.168.136.58Web02服务器node5192.168.135.131客户端&#xff08;测试&#xff09; nginx反向代理 1. 安装nginx 三台机器都安装nginx yum install nginx -y 2. 配置用于测试的Web服务(以下操作…

C++进阶:搜索树

目录 1. 二叉搜索树1.1 二叉搜索树的结构1.2 二叉搜索树的接口及其优点与不足1.3 二叉搜索树自实现1.3.1 二叉树结点结构1.3.2 查找1.3.3 插入1.3.4 删除1.3.5 中序遍历 2. 二叉树进阶相关练习2.1 根据二叉树创建字符串2.2 二叉树的层序遍历I2.3 二叉树层序遍历II2.4 二叉树最近…

ChatGPT研究论文提示词集合1-【主题选择与问题研究、文献综述】

点击下方▼▼▼▼链接直达AIPaperPass &#xff01; AIPaperPass - AI论文写作指导平台 目录 1.主题选择与问题定义 2.文献综述 3.书籍介绍 AIPaperPass智能论文写作平台 近期小编按照学术论文的流程&#xff0c;精心准备一套学术研究各个流程的提示词集合。总共14个步骤…

AI翻译英语PDF文档的3种方法

短的文章&#xff0c;直接丢进kimichat、ChatGPT里面很快就可以翻译完成&#xff0c;而且效果很佳。但是&#xff0c;很长的PDF文档整篇需要翻译&#xff0c;怎么办呢&#xff1f; ●腾讯交互翻译TranSmart https://transmart.qq.com/ 软件下载后&#xff0c;点击左边的文件翻…

天才简史——Sylvain Calinon

一、研究方向 learning from demonstration&#xff08;LfD&#xff09;领域的专家&#xff0c;机器人红宝书&#xff08;Springer handbook of robotics&#xff09;Robot programming by demonstration章节的合作者。主要研究兴趣包括&#xff1a; 机器人学习、最优控制、几…

从零自制docker-11-【pivotRoot切换实现文件系统隔离】

文章目录 busyboxdocker run -d busybox topcontainerId(docker ps --filter "ancestorbusybox:latest"|grep -v IMAGE|awk {print $1})docker export -o busybox.tar $containerId or sudo docker export 09bbf421d93f > ./busybox.tar tar -xvf busybox.tar -C …

Python | Leetcode Python题解之第41题缺失的第一个正数

题目&#xff1a; 题解&#xff1a; class Solution:def firstMissingPositive(self, nums: List[int]) -> int:n len(nums)for i in range(n):while 1 < nums[i] < n and nums[nums[i] - 1] ! nums[i]:nums[nums[i] - 1], nums[i] nums[i], nums[nums[i] - 1]for …

域名信息查询同款WHOIS源码

域名查询一般是指查询域名的whois注册信息&#xff0c;域名WHOIS是当前域名系统中不可或缺的一项信息服务。在使用域名进行Internet冲浪时&#xff0c;很多用户希望进一步了解域名、名字服务器详细信息&#xff0c;这就会用到WHOIS。 域名信息查询同款WHOIS源码

在Postgres中,如何有效地管理大型数据库的大小和增长

文章目录 一、定期清理和维护1. VACUUM和ANALYZE2. 删除旧数据和归档 二、分区表三、压缩数据四、配置优化1. 调整维护工作负载2. 监控和日志 五、使用外部存储和扩展1. 外部表和FDW2. 扩展和插件 六、定期备份和恢复测试结论 管理大型数据库的大小和增长是数据库管理员&#x…

EA包图上嵌套的包位置不对

Extreme 2024-4-11 11:36 我从工具栏把一个包拖在另一个包里面&#xff0c;可是项目树上两个包的位置并列&#xff0c;拖了几次结果都一样。我的目的是做一个多层级的包图&#xff0c;是不是&#xff08;EA&#xff09;不能在图上做&#xff1f; UMLChina潘加宇 确实是这样&a…

m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法和详细的解析。 题干 m个人的成绩…

强固型工业电脑在轮胎成型机设备行业应用

轮胎成型机设备行业应用 项目背景 我国是一个轮胎生产与出口大国&#xff0c;在轮胎的生产过程中&#xff0c;成型工序是生产的关键工序&#xff0c;将半成品的部件按照轮胎的技术规范在成型机上组装成胎胚&#xff0c;工艺较为复杂&#xff0c;对设备加工和定位精度要求较高。…

【Linux学习】gcc与g++的使用与程序翻译的过程

文章目录 修改sudo用户名单gcc与g指令gcc用法g用法 程序翻译的过程函数库动态库与静态库什么是动静态库&#xff1f;动静态库的优缺点ldd指令 这里补充一个前面遗漏的知识&#xff1a; 修改sudo用户名单 必须使用root超级用户进行修改&#xff0c;普通用户是不能访问修改。 …