docker
docker架构
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。类似与maven
默认情况下,将来从docker hub(https://hub.docker.com/)
上下载docker镜像,太慢。一般都会配置镜像加速器:
配置镜像加速器
- 需要您自己找找吧,现在强的厉害,我就不贡献啦。
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxx"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker 容器
查看容器
查看正在运行的容器
docker ps
- CONTAINER ID 容器的 ID
- IMAGE 创建容器时所使用的镜像
- COMMAND 运行容器中的软件执行的命令
- CREATED 容器的创建时间
- STATUS 容器的状态: UP 表示运行状态 Exited 表示关闭状态
- PORTS 宿主机端口和容器中软件的端口的对应关系
- NAMES 容器的名称
查看所有的容器(包含了正在运行的容器以及之前启动过的容器)
docker ps --a
查看最后一次运行的容器
docker ps --l
查看停止的容器
docker ps -f status=exited
创建与启动容器
创建容器参数介绍
创建容器的时候我们需要使用如下命令进行容器的创建
docker run
-
-i 运行容器
-
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
-
-d 在 run 后面加上-d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)
-
--name 为创建的容器命名
-
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上
-
-p表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
-d 和-t. --d 表示让容器在后台运行起来, -t 表示创建好容器以后我们就指定进行到容器中,进入到容器中以后我们
就可以输入命令和容器进行交互. 既然如此,那么也就是说容器我们可以分为两类: 1. 交互式容器 2. 守护式容器
创建交互式容器
创建一个交互式容器并取名为 mydashab
docker run -it --name=mydashab tomcat /bin/bash
使用 exit 推出容器
容器也关闭了,这就是交互式容器的特点: 当我们推出容器以后,容器就关闭了
Unable to find image 'tomcat:latest' locally
如果你执行这条命令出现 Unable to find image 'tomcat:latest' locally,是没有对应的镜像image ,需要pull对应的镜像
创建守护式容器
创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):
docker run -di --name=mydashab2 tomcat
我们创建好容器以后,这个容器是以后台的方式运行的,那么我们需要操作容器就需要登录到容器中,可以使用如下命令进行登录
docker exec -it 容器名称 (容器id) /bin/bash
退出容器,然后在查看容器的状态,容器还是运行的
停止与启动容器
关闭容器
docker stop 容器名称或者容器id
启动已经关闭的容器
docker start 容器名称或者容器id