Docker 核心概念、安装、端口映射及常用操作命令
wptr33 2024-11-12 14:20 26 浏览
一、Docker简介
- Docker是开源应用容器引擎,轻量级容器技术。
- 基于Go语言,并遵循Apache2.0协议开源
- Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux系统上,也可以实现虚拟化
- 容器完全使用沙箱技术,相互之间不会有任何接口
- 类似于虚拟机技术(vmware、vitural),但docker直接运行在操作系统(Linux)上,而不是运行在虚拟机中,速度快,性能开销极低
白话文,简介就是:
Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。
运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操 作系统,安装好后什么都有了。
二、Docker核心概念
- docker镜像(Images):Docker镜像是用于创建Docker容器的模板
- docker容器(Container):镜像启动后的一个实例称为容器,容器是独立运行的一个或一组应用,
- docker客户端(Client):客户端通过命令行或其他工具使用Docker API(https://docs.docker.com/reference/api/docker_remote_api)与Docker的守护进程进行通信
- docker主机(Host):一个物理或虚拟的机器用来执行Docker守护进程和容器
- docker仓库(Registry):Docker仓库用来存储镜像,可以理解为代码控制中的代码仓库,Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用
三、Docker安装及启停
1. 查看centos版本
Docker 要求 CentOS 系统的内核版本高于 3.10
通过命令:
uname -r
查看当前centos版本,如版本不符,需升级系统版本
2 升级软件包及内核(可选)
yum update
3. 安装docker
yum install docker
4. 启动docker
systemctl start docker
5. 将docker服务设为开机启动
systemtctl enable docker
5. 停止docker
systemtctl stop docker
四、Docker常用命令及操作
4.1 docker镜像命令
通常情况下,Docker的镜像都放在Docker的官网 Docker Hub上,点此前往官网
4.1.1 镜像检索
除了可以在Docker Hub上搜索镜像外,还可以通过命令 docker search xxx 进行搜索,下面以 mysql 为例:
docker search mysql
结果如下:
4.1.2 镜像下载
下载命名为:docker pull 镜像名:tag,其中tag多为系统的版本,可选的,默认为least。
docker pull mysql
4.1.3 镜像列表
获取已下载镜像列表命令:docker images
其中,
RESPOSITORY为镜像名
TAG为镜像版本,least代表最新版
IMAGE_ID为该镜像唯一ID
CREATED为该镜像创建时间
SIZE为该镜像大小
4.1.1 镜像删除
删除指定镜像:
docker rmi image-id
删除所有镜像:
docker rmi $(docker images -q)
4.2 容器操作
可以理解为软件下载(下载QQ)–>安装(QQ)–>运行(QQ)的过程。
下面以Tomcat为例
4.2.1 搜索镜像
docker search tomcat
4.2.2 下载镜像
docker pull tomcat
4.2.3 根据镜像启动容器
最简单的运行镜像为容器的命令如下:
docker run --name container-name -d image-name
运行一个容器,使用docker run命令即可。
-- name:为容器起一个名称
-d:detached,执行完这句命令后,控制台将不会阻塞,可以继续输入命令操作
image-name:要运行的镜像名称
4.2.4 查看运行中容器
可通过如下命令,查看运行中的容器列表:
docker ps
CONTAINER ID:启动时生成的ID
IMAGE:该容器使用的镜像
COMMAND:容器启动时执行的命令
CREATED:容器创建时间
STATUS:当前容器状态
PORTS:当前容器所使用的默认端口号
NAMES:启动时给容器设置的名称
4.2.5 停止运行中容器
通过以下命令来停止运行中的容器:
docker stop container-name/container-id
4.2.5 查看所有的容器
通过以下命令可查看运行和停止的所有容器:
docker ps -a
4.2.6 启动容器
通过以下命令启动容器:
docker start container-name/container-id
4.2.7 删除容器
删除单个容器:
docker rm container-id
删除所有容器:
docker rm $(docker ps -a -q )
4.2.8 启动做端口映射的容器
Docker运行容器之后却发现没IP,没端口,也就是说,启动容器的时候如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。 所以需要通过Docker端口映射来实现网络访问。
Docker的端口映射通过-p参数实现,命令如下:
docker run --name tomcat1 -d tomcat
docker run --name tomcat2 -d -p 8888:8080 tomcat
如上,就把主机端口8888请求映射到Docker容器内部端口8080了。
执行完这两条命令后,通过docker ps查看:
通过PORTS可以看出,tomcat2是做了端口映射的,tomcat1是没进行映射过的。
分别通过浏览器访问:
http://*.*.*.*:8080/ // tomcat1默认端口
http://*.*.*.*:8888/ //
做过端口映射的Tomcat2,8888会转发请求到tomcat2的8080
结果如下:
第一个请求是无法请求到的,原因开篇处说过了。
第二个请求是可以正常进行请求的,会由tomcat2容器进行处理
端口映射格式:
ip:hostport:containerport
#指定ip、指定主机port、指定容器port
ip::containerport
#指定ip、未指定主机port、指定容器port
hostport:container
#未指定ip port、指定主机port、指定容器port
4.2.9 查看容器日志
查看当前容器日志,可通过如下命令:
docker logs container-id/container-name
4.2.10 查看端口映射
可以通过如下命令查看容器映射了哪些端口及协议:
docker port container-id
示例:
[root@docker ~]#docker port 46114af6b44e
8080/tcp -> 0.0.0.0:8888
[root@docker ~]#docker port cea668ee4db0
如果返回空,则代表没进行端口映射。
4.2.11 登录退出容器
运行中的容器其实是一个功能完备的Linux操作系统,所以我们可以像常规系统一样进行登陆及退出操作。
登录命令为:
docker exec -it container-id/container-name bash
退出命令为:
exit
4.2.12 更多操作命令
更多命令可以参考:
https://docs.docker.com/engine/reference/commandline/docker/
来自小洋人最HAPPY投稿
相关推荐
- MySQL进阶五之自动读写分离mysql-proxy
-
自动读写分离目前,大量现网用户的业务场景中存在读多写少、业务负载无法预测等情况,在有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至会对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压...
- 3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?
-
引言今天说一个细分的需求,在模型中,或者使用laravel提供的EloquentORM功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写?本文通过几个例子,为大家梳理一下。学习时...
- 一文由浅入深带你完全掌握MySQL的锁机制原理与应用
-
本文将跟大家聊聊InnoDB的锁。本文比较长,包括一条SQL是如何加锁的,一些加锁规则、如何分析和解决死锁问题等内容,建议耐心读完,肯定对大家有帮助的。为什么需要加锁呢?...
- 验证Mysql中联合索引的最左匹配原则
-
后端面试中一定是必问mysql的,在以往的面试中好几个面试官都反馈我Mysql基础不行,今天来着重复习一下自己的弱点知识。在Mysql调优中索引优化又是非常重要的方法,不管公司的大小只要后端项目中用到...
- MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)
-
目录1.索引基础...
- 你会看 MySQL 的执行计划(EXPLAIN)吗?
-
SQL执行太慢怎么办?我们通常会使用EXPLAIN命令来查看SQL的执行计划,然后根据执行计划找出问题所在并进行优化。用法简介...
- MySQL 从入门到精通(四)之索引结构
-
索引概述索引(index),是帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护者满足特定查询算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构...
- mysql总结——面试中最常问到的知识点
-
mysql作为开源数据库中的榜一大哥,一直是面试官们考察的重中之重。今天,我们来总结一下mysql的知识点,供大家复习参照,看完这些知识点,再加上一些边角细节,基本上能够应付大多mysql相关面试了(...
- mysql总结——面试中最常问到的知识点(2)
-
首先我们回顾一下上篇内容,主要复习了索引,事务,锁,以及SQL优化的工具。本篇文章接着写后面的内容。性能优化索引优化,SQL中索引的相关优化主要有以下几个方面:最好是全匹配。如果是联合索引的话,遵循最...
- MySQL基础全知全解!超详细无废话!轻松上手~
-
本期内容提醒:全篇2300+字,篇幅较长,可搭配饭菜一同“食”用,全篇无废话(除了这句),干货满满,可收藏供后期反复观看。注:MySQL中语法不区分大小写,本篇中...
- 深入剖析 MySQL 中的锁机制原理_mysql 锁详解
-
在互联网软件开发领域,MySQL作为一款广泛应用的关系型数据库管理系统,其锁机制在保障数据一致性和实现并发控制方面扮演着举足轻重的角色。对于互联网软件开发人员而言,深入理解MySQL的锁机制原理...
- Java 与 MySQL 性能优化:MySQL分区表设计与性能优化全解析
-
引言在数据库管理领域,随着数据量的不断增长,如何高效地管理和操作数据成为了一个关键问题。MySQL分区表作为一种有效的数据管理技术,能够将大型表划分为多个更小、更易管理的分区,从而提升数据库的性能和可...
- MySQL基础篇:DQL数据查询操作_mysql 查
-
一、基础查询DQL基础查询语法SELECT字段列表FROM表名列表WHERE条件列表GROUPBY分组字段列表HAVING分组后条件列表ORDERBY排序字段列表LIMIT...
- MySql:索引的基本使用_mysql索引的使用和原理
-
一、索引基础概念1.什么是索引?索引是数据库表的特殊数据结构(通常是B+树),用于...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
程序员的开源月刊《HelloGitHub》第 71 期
-
详细介绍一下Redis的Watch机制,可以利用Watch机制来做什么?
-
假如有100W个用户抢一张票,除了负载均衡办法,怎么支持高并发?
-
Java面试必考问题:什么是乐观锁与悲观锁
-
如何将AI助手接入微信(打开ai手机助手)
-
SparkSQL——DataFrame的创建与使用
-
redission YYDS spring boot redission 使用
-
一文带你了解Redis与Memcached? redis与memcached的区别
-
如何利用Redis进行事务处理呢? 如何利用redis进行事务处理呢英文
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)