标签:接口 操作 除了 rpo create 概念 tag tcp name
Docker是开源应用容器引擎,轻量级容器技术。
基于Go语言,并遵循Apache2.0协议开源
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux系统上,也可以实现虚拟化
容器完全使用沙箱技术,相互之间不会有任何接口
类似于虚拟机技术(vmware、vitural),但docker直接运行在操作系统(Linux)上,而不是运行在虚拟机中,速度快,性能开销极低
白话文,简介就是:
Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。
运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操 作系统,安装好后什么都有了。
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 要求 CentOS 系统的内核版本高于 3.10
通过命令:
uname -r
查看当前centos版本,如版本不符,需升级系统版本
yum update
yum install docker
systemctl start docker
systemtctl enable docker
systemtctl stop docker
通常情况下,Docker的镜像都放在Docker的官网 Docker Hub上,点此前往官网
除了可以在Docker Hub上搜索镜像外,还可以通过命令 docker search xxx
进行搜索,下面以 mysql 为例:
docker search mysql
结果如下:
下载命名为:docker pull 镜像名:tag
,其中tag
多为系统的版本,可选的,默认为least
。
docker pull mysql
获取已下载镜像列表命令:docker images
其中,
RESPOSITORY
为镜像名TAG
为镜像版本,least
代表最新版IMAGE_ID
为该镜像唯一IDCREATED
为该镜像创建时间SIZE
为该镜像大小
删除指定镜像:
docker rmi image-id
删除所有镜像:
docker rmi $(docker images -q)
可以理解为软件下载(下载QQ)-->安装(QQ)-->运行(QQ)的过程。
下面以Tomcat为例
docker search tomcat
docker pull tomcat
最简单的运行镜像为容器的命令如下:
docker run --name container-name -d image-name
运行一个容器,使用docker run
命令即可。
-- name
:为容器起一个名称-d
:detached,执行完这句命令后,控制台将不会阻塞,可以继续输入命令操作image-name
:要运行的镜像名称
可通过如下命令,查看运行中的容器列表:
docker ps
CONTAINER ID
:启动时生成的IDIMAGE
:该容器使用的镜像COMMAND
:容器启动时执行的命令CREATED
:容器创建时间STATUS
:当前容器状态PORTS
:当前容器所使用的默认端口号NAMES
:启动时给容器设置的名称
通过以下命令来停止运行中的容器:
docker stop container-name/container-id
通过以下命令可查看运行和停止的所有容器:
docker ps -a
通过以下命令启动容器:
docker start container-name/container-id
删除单个容器:
docker rm container-id
删除所有容器:
docker rm $(docker ps -a -q )
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
查看当前容器日志,可通过如下命令:
docker logs container-id/container-name
可以通过如下命令查看容器映射了哪些端口及协议:
docker port container-id
示例:
[root@docker ~]#docker port 46114af6b44e
8080/tcp -> 0.0.0.0:8888
[root@docker ~]#docker port cea668ee4db0
如果返回空,则代表没进行端口映射。
运行中的容器其实是一个功能完备的Linux操作系统,所以我们可以像常规系统一样进行登陆及退出操作。
登录命令为:
docker exec -it container-id/container-name bash
退出命令为:
exit
更多命令可以参考:
https://docs.docker.com/engine/reference/commandline/docker/
Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。
标签:接口 操作 除了 rpo create 概念 tag tcp name
原文地址:https://www.cnblogs.com/burningmyself/p/9452845.html