docker安装及命令使用

news2024/12/28 18:00:34

目录

 

1. Docker版本介绍

2. 创建Docker存储库

3. 安装docker软件包

4. Docker命令补全

6.Docker命令介绍

7. Docker镜像管理

7.1 列出本地镜像

7.2 搜索镜像

7.3 下载镜像

7.4 查看镜像

7.5 删除镜像

7.6 导出镜像

7.7 导入镜像

7.8 镜像改名

8. 容器管理

8.1 容器的命令

​​​​​​8.2 ​启动一个容器

8.3 查看容器信息

​​​​​​​8.4 创建容器并放入后台运行

​​​​​​​8.5 查看容器元数据信息

​​​​​​​8.6 进入容器

​​​​​​​8.7 停止容器

​​​​​​​8.8 启动被停止的容器

​​​​​​​8.9 删除容器

​​​​​​​8.10 查询docker容器日志

​​​​​​​8.11 用于容器与主机之间的数据拷贝

​​​​​​​8.12 docker容器的网络访问(端口映射)

​​​​​​​8.13  案例演示


1. Docker版本介绍

Docker 从 17.03 版本之后分为:

CE(Community Edition: 社区版) 功能有限,没有官方技术支持服务。

EE(Enterprise Edition: 企业版)功能全面,提供官方技术支持服务。

docker架构

docker是传统的c/s架构, 客户端和服务端 ,由dockerclinet和dockerserver端组成

2. 创建Docker存储库

以下安装是服务器可以联网环境下进行安装的,如果是在公司内部,一般公司内部服务器是不允许联网操作的,那就需要离线进行安装了,

离线的安装可以参考官方文档或者参考我的上一篇文档 docker离线部署:跳转按钮

官方安装文档:Install Docker Engine on CentOS

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,方便您可以从仓库安装和更新

[root@localhost ~]# yum install -y yum-utils

Docker:使用以下命令来设置稳定的仓库(阿里仓库)

[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo

3. 安装docker软件包

1). yum源安装

配置yum源

yum install -y yum-utils device-mapper-persistent-data lvm2    #yum管理工具
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  #添加阿里源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo        #添加官方源

 列出docker-ce可安装的版本

yum list docker-ce --showduplicates | sort -r
yum install docker-ce-19.03.9-3.el7    #安装1903版本
systemctl start docker	#启动docker
systemctl enable docker  #加入开机自启动

docker info	#显示 Docker 系统信息,包括镜像和容器数

#查看docker版本信息

[root@localhost ~]# docker --version
Docker version 19.03.9, build 9d988398e7

#参看docker详细版本

[root@localhost ~]# docker version


yum remove docker-ce  #卸载Docker方式,删除安装包

rm -rf /var/lib/docker  #删除镜像、容器、配置文件等内容:

2) 本地rpm包安装

下载地址https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

注:如果安装的是17版本要下载docker-ce-selinux下载

4. Docker命令补全

 Docker 已经安装好了,但是使用 docker 命令时 不能自动补齐,即输入 docker 命令后,按 Tab 键无法列出子命令(或参数)的候选项

yum install -y bash-completion
自动补全:
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source /usr/share/bash-completion/completions/docker

[root@docker ~]# docker  #Tab 就出来很多命令了

5. 配置镜像加速器

默认情况下镜像从docker hub下载,由于docker hub服务器在国外,由于网络原因镜像下载速度较慢,一般会配置镜像加速器进行下载。

国内镜像加速器有阿里云、网易云、腾讯云、中科大等,本实验配置阿里云镜像加速器,速度较快

配置docker镜像加速器可以加速在国内下载docker官方镜像的速度,国内有不少机构提供了免费的加速器供大家使用:修改守护进程daemon的配置文件,默认通过此修改下载镜像

1、Docker官方的中国镜像加速器:https://registry.docker-cn.com  不用注册

2、中科大的镜像加速器:https://docker.mirrors.ustc.edu.cn/   不用注册

3、阿里云的镜像加速器:登录阿里云的容器hub服务,镜像加速器那一栏里会为你独立分配一个加速器地址 要注册

4、DaoCloud的镜像加速器:登录DaoCloud的加速器获取脚本,该脚本可以将加速器添加到守护进程的配置文件中 要注册

我用的是阿里云的镜像加速器,阿里云为我独立分配的加速器地址是:https://4wgtxa6q.mirror.aliyuncs.com

我们以阿里镜像加速器为例进行配置:

每个阿里云帐号都有一个独立的镜像加速地址,我们直接就可以进行使用,先登录阿里云,点击控制台找到镜像服务

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://yecrjvhh.mirror.aliyuncs.com"]
}
EOF


sudo systemctl daemon-reload  #加载配置文件
sudo systemctl restart docker #重启docker服务

6.Docker命令介绍

查看docker可用命令:
[root@localhost ~]# docker

Docker命令根据Docker官方案例分为以下几种:
Docker环境信息: docker [info|version]
容器生命周期管理:docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]
容器操作命令: docker [ps|inspect|top|attach|wait|export|port|rename|stat]
容器rootfs命令: docker [commit|cp|diff]
镜像仓库命令: docker [login|pull|push|search]
本地镜像管理: docker [build|images|rmi|tag|save|import|load]
容器资源管理: docker [volume|network]
系统日志信息: docker [events|history|logs]

7. Docker镜像管理

docker image 获取镜像管理命令

命令

作用

docker images

列出本地镜像

docker search 镜像名

搜索镜像

docker pull 镜像名:版本

拉取镜像

docker rmi 镜像名:版本

删除镜像

7.1 列出本地镜像

列出本地镜像:docker images

常用选项:

-a :列出本地所有的镜像

-q :只显示镜像ID

[root@localhost ~]# docker images

 输出详情介绍:

REPOSITORY 镜像仓库源

TAG 镜像的标签

IMAGE ID 镜像的ID

CREATED 镜像创建时间

SIZE 镜像大小

7.2 搜索镜像

搜索镜像:docker search

常用选项:

--no-trunc :显示完整的镜像描述

[root@localhost ~]# docker search centos

 

 输出详情介绍:

NAME 镜像仓库源的名称

DESCRIPTION 镜像的描述

STARS 点赞数量,表示喜欢的意思

OFFICIAL 是否 docker 官方发布

AUTOMATED 自动构建(表示个人发布)

注意:只有一个名称,没有/分割代表他是官方镜像,选择镜像建议:1.官方2.stars数量多

官网仓库hub.docker.com

7.3 下载镜像

docker pull 镜像名
[root@localhost ~]# docker pull centos:7

7.4 查看镜像

docker images 
[root@localhost ~]# docker images

7.5 删除镜像

docker rmi 
[root@localhost ~]# docker rmi centos:7
[root@localhost ~]# docker rmi 50fe74b50e0d

提示:删除镜像可以根据镜像名称或者ID删除,如果删除的时候不加版本号,会删除laste最新版本

[root@localhost ~]# docker rmi `docker images -q`

删除所有镜像:

如需删除所有镜像可以配合docker images -q获取所有镜像ID在进行删除

7.6 导出镜像

docker save
docker image save > /opt/nginx.tar.gz nginx    #根据容器 ID 将镜像导出成一个文件
docker image save -o /opt/nginx.tar.gz nginx   #可以吧多个镜像 打包成tar.gz 导出到opt目录下

7.7 导入镜像

docker load 
docker image load -I /opt/nginx.tar.gz 从tar包载入镜像
docker image load < /opt/nginx.tar.gz

​​​​​​​7.8 镜像改名

docker image tag 镜像名:镜像版本   新镜像名:新镜像版本
[root@localhost ~]# docker image tag centos:7 centos_bak:7-1

 修改镜像名称之后,发现原有的还是存在的,两个服务是一样的,如果删除原有的镜像不影响新的镜像使用

8. 容器管理

​​​​​​​8.1 容器的命令

命令

作用

docker ps

查看正在运行容器

docker ps -a

查看所有容器

docker run 参数

创建容器

docker exec 容器ID/容器名

进入容器

docker stop 容器名/容器ID

停止容器

docker rm 容器名/容器ID

删除容器

docker start 容器名/容器ID

启动被停止的容器

docker restart 容器名/容器ID

重启容器

docker kill 容器名/容器ID

强制停止正在运行的容器(一般不用,除非卡了)

docker inspect 容器名称

查看容器元数据信息

--restart=always

启动容器时设置容器随机自启

docker update --restart=always 容器名/容器ID

容器启动后设置容器随机自启

docker logs 容器名/容器ID

查看容器日志信息

创建容器:docker run

常用选项:

·-it :为容器分配一个输入终端

·--name="名称" :为容器指定一个名称

·/bin/bash :在容器内执行bash命令

·exit :退出容器

·-id :后台运行容器,并返回容器ID

·-P :随机端口映射,容器内部端口随机映射到主机的端口

·-p :指定端口映射,格式为:主机(宿主)端口:容器端口

·--dns 8.8.8.8 :指定容器使用的DNS服务器,默认和宿主一致

·-h "名称" :指定容器的hostname

·-e username="ritchie" :设置环境变量

·-m :设置容器使用内存最大值

·--net="bridge" :指定容器的网络连接类型,支持bridge/host/none/container: 四种类型

·--link=[] :添加链接到另一个容器

·--expose=[]: 开放一个端口或一组端口

·--volume , -v :绑定一个数据卷

​​​​​​8.2 ​启动一个容器

创建容器:docker run 参数
[root@localhost ~]# docker run -it --name=cos1 centos:7 /bin/bash  #启动一个名为cos1的容器,并进入容器终端执行 /bin/bash命令

-it :为容器分配一个输入终端

--name="名称" :为容器指定一个名称

/bin/bash :在容器内执行bash命令

​​​​​​​8.3 查看容器信息

[root@localhost ~]# docker ps 通过-it创建的容器退出后自动关闭
[root@localhost ~]# docker ps -a 查看所有容器,包括未运行的
[root@localhost ~]# docker container ls -a
[root@localhost ~]# docker ps -a --no-trunc

-a 显示所有

-q只显示id,通常情况下在批量删除时候使用

-l  只显示最新创建的容器

--no-trunc长格式显示所有信息

查看容器元数据信息
[root@localhost ~]# docker inspect cos1

查看容器中的IP
[root@localhost ~]# hostname -I

 容器和容器之间是可以ping通的,容器和宿主机之间也是可以ping通的

​​​​​​​8.4 创建容器并放入后台运行

[root@localhost ~]# docker run -id --name=cos3 centos:7

-id :后台运行容器,并返回容器ID,放入后台运行的容器退出后不会自动关闭

​​​​​​​8.5 查看容器元数据信息

[root@localhost ~]# docker inspect cos2

​​​​​​​8.6 进入容器

docker exec -it 容器ID/容器名

[root@localhost ~]# docker exec -it cos3 /bin/bash

exit  #退出容器

​​​​​​​8.7 停止容器

docker stop 容器名/容器ID

[root@localhost ~]# docker stop cos3

​​​​​​​8.8 启动被停止的容器

docker start 容器名/容器ID

[root@localhost ~]# docker start cos3

启动被停止的所有容器:ps -aq 获取所有容器ID

[root@localhost ~]# docker start `docker ps -aq`

​​​​​​​8.9 删除容器

docker rm 容器名/容器ID

常用选项: -f 强制删除(无需停止容器)

[root@localhost ~]# docker rm cos2

删除所有容器:

ps -aq 获取所有容器ID

[root@localhost ~]# docker rm -f `docker ps -a -q`		#删除所有的容器

​​​​​​​8.10 查询docker容器日志

docker logs 容器名   查看容器日志

​​​​​​​8.11 用于容器与主机之间的数据拷贝

格式1:docker cp 容器名:目录/文件 宿主机目录 #将容器中文件或目录拷贝到宿主机

格式2:docker cp 宿主机目录/文件 容器名:目录 #将宿主机文件/目录拷贝到容器中

​​​​​​​8.12 docker容器的网络访问(端口映射)

[root@localhost ~]# docker run --name nginx -d -p 8080:80 nginx:1.20.2

 -p hostPort:containerPort 宿主机端口映射到容器端口(常用)

[root@localhost ~]# docker run --name nginx -d -p 8080:80 nginx:1.20.2

-p ip:hostPort:containerPort 指定宿主机IP映射容器端口(常用)

[root@localhost ~]# docker run --name nginx -d -p 192.168.1.199:8080:80 nginx:1.20.2

-P指定监听所有IP的随机端口映射到容器的端口    随机端口是有端口池取的

[root@localhost ~]# docker run --name nginx -d -P nginx:1.20.2

-p ip::configtainerPort    随机生成一个宿主机端口,生成之后端口就不会变了

[root@localhost ~]# docker run --name nginx -d -p 192.168.1.199::80 nginx:1.20.2

​​​​​​​8.13  案例演示

通过Docker部署Nginx的web应用并实现浏览器访问

1)下载nginx镜像

[root@localhost ~]# docker pull nginx:1.20.2

2)创建容器并实现端口映射(默认容器无法被外网访问)

[root@localhost ~]# docker run -d --name=nginx-web --restart=always -p 80:80 nginx:1.20.2

-P :随机端口映射,容器内部端口随机映射到主机的端口

-p :指定端口映射,格式为:宿主机端口:容器端口

--restart=always #容器退出后,自动启动容器(一直)

3)拷贝项目到Nginx的网页目录

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

格式1:docker cp 容器名:目录/文件 宿主机目录 #将容器中文件或目录拷贝到宿主机

格式2:docker cp 宿主机目录/文件 容器名:目录 #将宿主机文件/目录拷贝到容器中

4)先创建一个页面

[root@localhost ~]# vim index.html
Hello Word

5)将转页面拷贝到容器中

[root@localhost ~]# docker cp /root/index.html nginx-web:/usr/share/nginx/html

6)进入容器验证

[root@localhost ~]# docker exec -it nginx-web /bin/bash
[root@b35e35bf1ca9:/# cd /usr/share/nginx/html/

7)浏览器访问

http://192.168.1.199:80

Hello Word

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

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

相关文章

再学C语言41:变长数组(VLA)

处理二维数组的函数&#xff1a;数组的行可以在函数调用时传递&#xff0c;但是数组的列只能被预置在函数内部 示例代码&#xff1a; #define COLS 4 int sum(int arr[][COLS], int rows) {int r;int c;int temp 0;for(r 0; r < rows; r){for(c 0; c < COLS; c){tem…

每个Android开发都应需知的性能指标~

无论你是发布一个新的 Android 应用&#xff0c;还是希望提高现有应用的性能&#xff0c;你都可以使用 Android 应用性能指标来帮助你。 在这篇文章中&#xff0c;我将解释什么是 Android 应用性能指标&#xff0c;并列出8个需要考虑跟踪的维度和建议的基线。 什么是 Android…

【LEAP模型】能源环境发展、碳排放建模

本次内容突出与实例结合&#xff0c;紧密结合国家能源统计制度及《省级温室气体排放编制指南》&#xff0c;深入浅出地介绍针对不同级别研究对象时如何根据数据结构、可获取性、研究目的&#xff0c;构建合适的能源生产、转换、消费、温室气体排放&#xff08;以碳排放为主&…

【NLP相关】深度学习领域不同编程IDE对比

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️&#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

死锁相关介绍【内含哲学家就餐问题】

死锁 死锁是这样一种情形&#xff1a;多个线程同时被阻塞&#xff0c;它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 场景1&#xff1a;一个线程&#xff0c;一把锁 一个线程&#xff0c;一把锁&#xff0c;线程…

【Linux】孤儿进程

在Linux中&#xff0c;如果子进程运行时&#xff0c;父进程因为某些原因先行终止&#xff0c;就称该子进程为孤儿进程。 我们编写如下代码&#xff1a; 子进程一直在运行&#xff0c;父进程运行一段时间后自动终止。运行该程序观察现象&#xff1a; 最开始时&#xff0c;子进程…

Unity 命令行发Android包

unity.exe 只允许存在一个 如果开了ide 或者之前的没关掉 就不能运行了 C: cd C:\Program Files\Unity\Editor\2021.3.6f1c1\Editor\ Unity.exe ^ -quit ^ -batchmode ^ -projectPath E:\puerts\UnityJenkins ^ -executeMethod Main.BuildC#代码放到任意Editor目录里 using S…

【linux】进程信号——信号的产生

进程信号一、信号概念1.1 信号理解二、产生信号2.1 通过键盘产生信号2.2 捕捉信号自定义signal2.3 系统调用接口产生信号2.3.1 向任意进程发送任意信号kill2.3.2 给自己发送任意信号raise2.3.3 给自己发送指定信号abort2.3.4 理解2.4 硬件异常产生信号2.4.1 除0异常2.4.2 野指针…

ACM-大一训练第三周(Floyd算法+并查集算法专题训练)

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石.CSDN &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;ACM周训练题目合集.CSDN &#x1f4ac;总结&#xff1a…

五、Bean的作用域

1 singleton 默认情况下&#xff0c;Spring的IoC容器创建的Bean对象是单例的。测试&#xff1a; package com.power.spring6.bean;public class SpringBean {public SpringBean() {System.out.println("无参数构造方法执行了");} }<?xml version"1.0"…

Ubuntu中使用Synaptic进行包管理

Synaptic概况 Synaptic 是一个轻量级的 apt 软件包管理器系统的 GUI 前端&#xff0c;所有你可以在终端中使用 apt-get 命令来做的事&#xff0c;都可以通过 Synaptic 来实现。优势 图形化安装界面&#xff0c;同时可以安装配置相关依赖&#xff0c;避免由于依赖问题导致的各类…

【c++】2023杭州月薪个税计算(chatGPT帮忙加注释)

参考信息 杭州市的个人所得税起征点是每月5000元。 个人所得税税率标准&#xff1a; 1、工资范围在1-5000元之间的&#xff0c;包括5000元&#xff0c;适用个人所得税税率为0%; 2、工资范围在5000-8000元之间的&#xff0c;包括8000元&#xff0c;适用个人所得税税率为3%; 3、工…

SpringBoot3.0 + SpringSecurity6.0+JWT

JWT_SpringSecurity SpringBoot3.0 SpringSecurity6.0JWT Spring Security 是 Spring 家族中的一个安全管理框架。 一般Web应用的需要进行认证和授权。 认证&#xff1a;验证当前访问系统的是不是本系统的用户&#xff0c;并且要确认具体是哪个用户 授权&#xff1a;经过认…

「C/C++」 标准文件操作大全

一、设备文件&#xff08;运行程序时会默认打开这三个设备文件&#xff09; stdin&#xff1a;标准输入&#xff0c;默认为当前终端&#xff08;键盘&#xff09;&#xff0c;我们使用的scanf、getchar函数默认从此终端获得数据。stdout&#xff1a; 标准输出&#xff0c;默认…

当你问ChatGPT一些奇奇怪怪的问题

ChatGPT热度好像已经没那么高了&#xff0c;貌似也蹭不到什么流量了&#xff0c;不过嘛&#xff0c;玩了一下好玩的还是得记录一下。每个问题用标题给出&#xff0c;就可以当目录了。同时附上截图&#xff0c;想直接看图的伙伴可以直接看图。回答以绿色背景的形式给出。 觉得有…

坚如磐石:TiDB 基于时间点的恢复(PiTR)特性优化之路丨6.5 新特性解析

本文介绍了 TiDB 数据库的基于时间点的恢复&#xff08;PiTR&#xff09;特性&#xff0c;该特性允许用户将数据库恢复到特定时间点&#xff0c;从而避免丢失重要数据。文章首先介绍了 PiTR 技术的基本概念和工作原理&#xff0c;接着探讨了 TiDB 对 PiTR 的优化&#xff0c;包…

Java多线程(二)——同步

这一节主要是继上次提到的线程同步三大方法&#xff1a;同步代码块、同步方法、Lock锁。同步代码块&#xff0c;把出现线程安全问题的核心代码给上锁。还是继上次的例子&#xff0c;对代码块加上synchronized ("getMoney") {}之后就不会出现线程安全问题了&#xff1…

文科女生月入14k背后:转行IT软件测试不是谁都学得来!

转行软件测试背后&#xff0c;或许每个人都有自己的无奈。就拿今天要和大家分享的这位小姐姐来说吧&#xff0c;如果不是万不得已&#xff0c;又怎么会狠下心来转行到IT互联网&#xff1f; 应届生逃避就业&#xff0c;考研失败 和大多数人一样&#xff0c;小姐姐的大学生活过得…

SpringBoot入门 - 添加内存数据库H2

上文我们展示了通过学习经典的MVC分包结构展示了一个用户的增删查改项目&#xff0c;但是我们没有接入数据库&#xff1b;本文将在上文的基础上&#xff0c;增加一个H2内存数据库&#xff0c;并且通过Spring 提供的数据访问包JPA进行数据查询。准备知识点在介绍通过Spring JPA接…

专访华西二院吴邦华:隐私计算+AI全栈技术,构筑智慧医院建设的坚实数据底座|爱分析访谈

从IT时代步入DT时代&#xff0c;医疗大数据成为智慧医院建设的重要驱动力。经过多年信息化系统建设&#xff0c;很多医院已经积累了大量的医疗数据资源&#xff0c;但由于各业务系统间数据孤岛化严重、系统架构落后、数据缺乏深度治理等问题存在&#xff0c;导致现有数据深度及…