1.安装使用一下脚本直接完成安装
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
2.启动server服务
sudo systemctl start docker //启动服务
sudo docker version //查看版本
sudo docker info //查看信息
3.创建container以及基本操作(均可以省略container也可运行同样效果)
sudo docker container run nginx //创建 从hub上自动拉取模板
sudo docker container run --rm nginx //退出后 自动删除
sudo docker container ls //显示当前container信息
sudo docker container ls -a //显示所有container信息(包括停止)
sudo docker container ls -aq //显示所有container的ID
sudo docker container stop 1a//停止 ID可以省略 名称不行
sudo docker container stop 1a 2b 3c //停止 分 间开空格多个删除
sudo docker container stop $(sudo docker container ls -aq)//全部停止
sudo docker container rm 1a//删除container信息记录
sudo docker container rm 1a -f//强制停止和删除container 正常不可删除正在运行的
sudo docker system prune -f // 删除全部已退出容器
4.attached模式和detached模式
atteched实时可输出信息和关闭适合调试 (前台运行)
detached运行后不显示 查看日志和关闭均需要单独命令 (后台运行)
attached和detached模式 - 不忘初心❤ - 博客园
5.容器的交互式模式
sudo docker container run -it busybox sh //启动时进入交互模式
sudo docker container exec -it ID sh //运行时进入交互模式
PS:
安装docker后,每次运行docker都要sudo,并且时间间隔后需要输入密码,解决方法如下
$sudo groupadd docker #添加docker用户组
$sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
$newgrp docker #更新用户组
6.容器的本质
虚拟机是在硬件之上,模拟多个操作系统,用来做资源隔离。而Docker容器本质上只是Linux上的一个特殊的进程,这个进程被做了一些限制,从而达到了隔离的作用。
用自己的话来说,Docker仅仅将某些进程锁在了一个房间里,让这些进程不依靠外部单独完成一些工作。在移植的时候不需要如原来将一个个进程重新部署到新的机器,而是将带锁的房间整个搬去,从而保证项目的可移植性。
docker container top 169 //用于显示容器的正在运行的进程
pstree -halps 5242 //进程的树状关系
7.Docker container run 内部运行步骤
- 1.在本地查找是否有nginx这个image镜像,但是没有发现
- 2.去远程的image registry查找nginx镜像(默认的registry是Docker Hub)
- 3.下载最新版本的nginx镜像 (nginx:latest 默认)
- 4.基于nginx镜像来创建一个新的容器,并且准备运行
- 5.docker engine分配给这个容器一个虚拟IP地址
- 6.在宿主机上打开80端口并把容器的80端口转发到宿主机上
- 7.启动容器,运行指定的命令(这里是一个shell脚本去启动nginx)