目录
前言
最近接触到了Docker,发现是一个很好的东西,话不多说直接上b站大学学习一波(doge)。
学习通道:狂神说Java】Docker最新超详细版教程通俗易懂
一、Docker和VMware的区别
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问。
DockerServer接收到Docker-Client的指令就会去执行这个命令。
Docker为什么比VMware快?
1、Docker的抽象层比VMware更少:
2、docker利用的是宿主机的内核,VMware需要的是guest OS。
因此每当新建一个容器,docker不会像虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载guest OS,打开较慢,而docker是利用宿主机的操作系统,省略了这个复杂的过程,打开就快了。
二、Docker常用指令
帮助命令
docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #
帮助文档的地址:https://docs.docker.com/reference/
镜像命令
docker images 查看所有本地的主机上的镜像
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
-a, --all #列出所有镜像
-q ,--quiet #只显示镜像的id
docker search 搜索镜像
# 可选项,通过搜藏来过滤
--filter=STARS=3000 # 搜索出来的镜像就是STARS大于3000的
docker pull 下载镜像
# 下载镜像 docker pull 镜像名[:tag]
root@raspberrypi:/home/corvin# docker pull mysql/mysql-server
Using default tag: latest #如果不写 tag,默认就是latest
latest: Pulling from mysql/mysql-server
003b5815c7df: Pull complete # 分层下载,docker image的核心 联合文件系统
b3cc6a7258f9: Pull complete
6ec0b9780de7: Pull complete
3bd4cb0b78d1: Pull complete
a6004dbd9ba2: Pull complete
b33be9f4a1f3: Pull complete
38b3da6a86f7: Pull complete
Digest: sha256:5241f7de0483a70f5856da995fea98904cfce8f1c51734b7f3836c1663eead17 #签名
Status: Downloaded newer image for mysql/mysql-server:latest
docker.io/mysql/mysql-server:latest # 真实地址#等价于它
docker pull mysql/mysql-server
docker pull docker.io/mysql/mysql-server:latest
# 指定版本下载
docker pull mysql:5.7
docker rmi 删除镜像
root@raspberrypi:/home/corvin# docker rmi -f 容器id # 删除指定的镜像
root@raspberrypi:/home/corvin# docker rmi -f 容器id 容器id 容器id # 删除多个镜像
root@raspberrypi:/home/corvin# docker rmi -f $(docker images -aq) # 删除全部镜像
容器命令
说明:我们有了镜像才可以创建容器,Linux,下载一个centos镜像来测试学习
docker pull centos
docker run新建容器并启动
docker run [可选参数] image
# 参数说明
--name="Nmae" 容器名字 romcat01 tomcat2 ,来区分容器
-d 后台方式运行
-it 使用交互方式进行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p 主机端口:容器端口(常用)
-p ip:主机端口:容器端口
-p 容器端口
-p 随机指定端口
# 测试 :启动并测试容器
root@raspberrypi:/home/corvin# docker run -it centos /bin/bash
[root@ec7a0e910354 /]#ls #查看容器内的centos,基础版本,很多命令都是不完善的
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr[root@ec7a0e910354 /]# exit #退出容器
exit
root@raspberrypi:/home/corvin# ls
Arduino Desktop Downloads handsfree libusb Music python_demo
docker ps列出所有的运行的容器
# docker ps 命令
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器
-q # 只显示容器的编号
root@raspberrypi:/home/corvin# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@raspberrypi:/home/corvin#
root@raspberrypi:/home/corvin# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ec7a0e910354 centos "/bin/bash" 3 minutes ago Exited (130) 47 seconds ago priceless_cerf
149e5cf47b59 hello-world "/hello" About an hour ago Exited (0) About an hour ago suspicious_banach
退出容器
exit # 直接退出容器
Ctrl+P+Q #容器不停止退出
删除容器
docker rm 容器 id # 删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rm -f $(docker ps -aq) # 删除全部的容器
docker ps -a -q|xargs docker rm # 删除所有的容器
启动和停止容器
docker start 容器id # 启动容器
docker restart 容器id #重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前正在运行的容器