Docker是轻量级的沙盒,在Docker当中有操作系统的⽂件⽬录,但是没有操作系统的内核。
虚拟机⾥⾯运⾏着操作系统的。
Docker的安全性不如虚拟机,主要原因在于:
Docker是操作系统上被限制的进程。
虚拟机⾥⾯是独⽴的操作系统。
但是,⼤量的⽣产环境证明,Docker的安全性还是很⾼的。
Docker的安全性主要是通过隔离技术,Namespace。
单独删除:docker rm container_id
批量删除的命令:docker rm $(docker ps -a -q)
命令:docker exec -it redis env
检查启动命令是否有可执⾏权限,进⼊容器当中,使⽤脚本进⾏排查。
权限的排查,我们直接使⽤ls -l命令。
运⾏命令,Ctrl+p,然后Ctrl+q。
使⽤--rm参数。
rm参数不能与-d参数⼀起使⽤,如果⼀起使⽤,rm参数⽆效。
rm参数使⽤场景,适合临时启动的容器。
查看本地镜像:docker images
1. REPOSITORY
2. TAG
3. IMAGE ID
4. CREATED
5. SIZE
查看运⾏的容器:docker ps
1. CONTAINER ID
2. IMAGE
3. COMMAND
4. CREATED
5. STATUS
6. PORTS
7. NAMES
删除单⼀镜像:
1. docker rmi 镜像的名字
2. docker rmi 镜像的id:注意点,当我们的镜像id关联多个镜像的时候,我们需要强制删除,添加-f参数进⾏强制删除。
批量删除镜像: docker rmi $(docker images -q)
Centos系统,镜像存放在/var/lib/docker/overlay2下⾯。
具体的镜像存在哪个⽬录:可以通过命令docker inspect container_id。
镜像是分层来存放的:
LowerDir:底层只读层。
MergedDir:我们看到的最终的⽂件系统。
UpperDir:上层写过的层。
WorkDir:⼯作⽬录。
两⼤原则:
1. 安全:尽量使⽤官⽅的库、依赖以及官⽅的基础镜像。
2. ⽂件的⼤⼩:
1. 使⽤较⼩的基础镜像。
2. 清理⼀些临时⽂件、⽬录。清理⼀些不必要的依赖。
3. 制作镜像的时候,需要指定明确版本号。
容器退出后,处于exited的状态,可以通过docker ps -a查到对应的容器。
其中数据是不会丢失的。
当我们删除容器的时候,才会去清除数据。
容器的状态的演变:
image --》create --》start --》stop --》rm。
使⽤的命令:docker kill $(docker ps -q)
注意点:stop 和 kill 的区别:
stop:停⽌容器,停⽌的容器可以继续运⾏。
kill:删除容器,测试删除容器以及对应的数据。
docker rm $(docker ps -a -q)
这⾥注意只会删除掉容器的状态是exited的容器。
使⽤docker logs container_id命令。
创建镜像的时候,在使⽤EXPOSE暴露端⼝的时候,⼀定要暴露正确的端⼝。
不建议在⼀个容器中运⾏多个进程,因为容器是单进程模型,期望功能单⼀的。
如果有需求,需要在容器⾥运⾏多个进程的话,需要创建⽗进程来管理他们。
在我们使⽤docker create或者docker run命令的时候,可以使⽤以下的参数来限制资源:
-c:限制cpu的使⽤
-m:限制内存的使⽤
仓库:相关镜像的集合。
注册服务器:实际上存储镜像的地⽅。注册服务器是通过注册索引来实现的镜像相关管理。
注册索引:⽤户的账号、权限、搜索和标签等的管理。
0/v1/...”?
当我们需要从⾮官⽅仓库下载镜像的时候,我们需要将⾮官⽅仓库的地址加⼊到docker的配置⽂件中。
"insecure-registries": [
"aa.docker.com"
]
/etc/docker/daemon.json
修改配置的时候,注意要重启docker,配置才能⽣效。
默认的存储位置是/var/lib/docker。
当我们需要改变默认存储位置的时候,可以通过软连接来实现,将其他的⽬录软连接指向到/var/lib/docker⽬录。
LXC利⽤Linux上的相关技术实现的容器。
Docker是在基础上做了很多的优化与改进:
镜像系统 便于容器的分发
仓库系统 便于容器的分发
版本管理 类似Git的概念,进⾏镜像的创建于管理
周边⼯具 ⾮常的遍历
移植性 通过镜像不只是封装了应⽤的运⾏的包,还封装了相关的运⾏环境的配置
Vagrant ⼀个虚拟机的管理环境 借助Vagrant可以快速的部署⼀个虚拟机
Docker 只能运⾏在Linux平台上 启动和运⾏的性能⾮常快 ⽐虚拟机快的 更加适合快速开发和部署的场景。
Docker 占⽤的资源⽐较少 ⽽且运⾏应⽤⽐较⽅⾯
Vagrant 本质是帮我们创建虚拟机
最终看我们运⾏的应⽤ 是想运⾏在虚拟机上 还是呢 以容器的⽅式运⾏。
Docker可以运⾏在⾮Linux平台上的,但是在⾮Linux平台上,底层是运⾏了⼀个微型的虚拟机的,Docker运⾏在
这个微型虚拟机上的。
停⽌Docker服务,将整个Docker的⽂件(包括配置⽂件)复制到另外⼀台机器上,在其他的机器上启动Docker。
运⾏的容器可以达成镜像,通过镜像进⾏容器的迁移⼯作。