docker基础
一、docker:开源的容器引擎,轻量级的虚拟机,可以看做一个进程,启动后是容器,沙箱环境
二、虚拟机VMware:隔离整个运行环境,docker隔离不同的应用程序
三、docker占用系统资源小
四、docker架构与核心组件
- 1.客户端:linux终端,用来操作docker
- 2.docker服务器:管理docker容器和docker镜像
- 3.docker镜像:可以从镜像仓库docker hub下载
- 4.docker容器:通过docker命令,将磁盘上的docker镜像启动,启动后就是容器,容器中运行的是一个操作系统
五、nginx镜像:有一个操作系统,上边安装了nginx
六、文件拥有者 所属组 其他用户 读 写 执行 rwx
七、查看docker版本时,遇到的权限问题:var/run/docker.sock 默认权限660,其他用户没有读写权限,解决方案:
- 1.在指令前加sudo: sudo docker version
- 2.将当前用户添加到docker组中: sudo gpasswd -a itcast docker
- 3.将文件权限改成666,让其他用户有读写权限: sudo chmod 666 docker.sock
八、docker服务相关的操作命令:
- 1.启动 : sudo systemctl start dokcer
- 2.关闭 : sudo systemctl stop dokcer
- 3.重启 : sudo systemctl restart dokcer
- 4.查看状态 : sudo systemctl status dokcer
docker镜像管理
九、搜索镜:docker search ubuntu
十、获取镜像:docker pull ubuntu
- 1.文件下载到 var/lib/docker中,多个文件的形式,存放在这里,删除删这个文件夹下的文件,普通用户没有权限查看,需要切换到root用户进行查看, su - root,环境变量一起切换
- 2.sudo passwd root 重置root用户密码,有sudo权限的普通用户才可以修改root用户的密码,要想让用户有sudo权限,需要进行配置
十一、查看镜像:
- 1.docker images
- 2.docker image ls
十二、镜像别名:docker tag nginx:latest xxx:v1.0
十三、删除镜像:
- 1.docker rmi nginx:latest
- 2.docker rmi 94e814e2efa8
- 3.如果镜像有别名,镜像别名不同,ID相同,此时只能通过镜像名删除,当只剩下一个名字时,镜像才彻底删除
十四、镜像导出:docker save -o ./mynginx.img nginx:latest
十五、镜像导入:
- 1.docker load -i mynginx.img
- 2.docker load < mynginx.img
十六、查看镜像详细信息:docker inspect ubuntu:latest
docker容器管理
十七、查看容器
- 1.docker ps 查看在running状态的容器
- 2.docker ps -a 查看在所有状态的容器
- 3.docker ps -aq 查看在所有状态的容器,只显示容器ID
十八、容器创建
- 1.docker create -it --rm --name myubuntu ubuntu:latest bash
- 2.docker create -i -t --rm --name myubuntu1 ubuntu:latest bash
十九、启动已经创建的容器
- 1.docker start -ai myubuntu 启动容器,关联标准输出/错误,标准输入,会自动进入容器内部 ctrl+d退出容器
- 2.docker start myubuntu 启动容器,没有关联输入输出,不会进入容器内部
二十、创建新容器并启动
- 1.docker run -itd ubuntu:latest bash //以守护进程的形式运行
- 2.docker run -itd --name xxl1 ubuntu:latest bash //以守护进程的形式运行
- 3.docker run -it --name xxl2 ubuntu:latest bash //会直接进入容器内部
- 4.docker run -it --rm --name xxl3 ubuntu:latest bash //容器终止运行的时候, 自动被删除
容器的暂停:docker pause 容器名字或者容器ID
容器的取消暂停:docker unpause 容器名字或者容器ID
容器的重启:
- 1.docker restart -t 30 容器名字或者容器ID
- 2.docker restart 容器名字或者容器ID
容器的关闭:docker stop -t 30 容器名字或者容器ID
容器的终止:docker kill 容器名字或者容器ID
区别:一个有延时,一个没有延时
删除未运行非 running(up) 的容器 : docker rm 容器名/容器ID
删除运行的容器:docker rm -f 容器名/容器ID
批量删除容器
1.docker rm $(docker ps -aq) -f
2.docker rm `docker ps -aq` -f
进入容器
#1.创建并进入: (非守护进程的形式创建并运行,会直接进入容器内部) - 使用频率低
docker run -it --rm --name myxx ubuntu bash
#2.创建并启动容器,以守护进程的形式
docker run -itd --rm --name myxx ubuntu bash
#手动进入容器中
docker exec -it 27e729b90b49 bash
退出容器
# 第一种方式
在终端输入: exit
# 第二种方式: ctrl+D
1.查看容器的日志信息:docker logs 容器名/容器ID
2.查看容器的详细信息:docker inspect 容器名/容器ID
3.查看容器的端口信息:docker port 容器名/容器ID
4.容器重命名:docker rename 27e729b90b49 mynewub
基于容器的镜像导入导出
1.镜像的导出:
- docker export -o myub.img 7d94e1faf186
- docker export -o ./myub01.img 7d94e1faf186
- docker export 7d94e1faf186 > myub02.img
2.镜像的导入: cat myub.img | docker import - myub:v1.0
与直接对镜像导入导出对比:
1.save 和 export
- 使用save导出镜像, 不能对镜像进行修改
- export通过容器导出, 原始镜像可以通过启动容器进行修改
- 通过export导出镜像, 会丢失镜像的历史记录
- 如果没有通过容器对进行做任何修改, export导出的镜像小
2.load 和 import
- 都是将导出的镜像导入到本地镜像仓库
- 如果使用load进行导入: 镜像名无法修改
- import导入镜像: 镜像名是可以修改的