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使用curl无效 docker curl命令_容器

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)