一、文档地址:
https://docs.docker.com
二、Docker的基本组成
1.镜像(image)
Docker镜像好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像==>run==>tomcat01
容器(提供服务),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的。)
2.容器(container)
Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。
启动、停止、删除等基本命令。(一个简易的linux系统)
3.仓库(repository)
仓库就是存放镜像的地方,分为共有仓库和私有仓库。
Docker hub(默认是国外的,需要配置镜像加速)
三、安装Docker
1.环境查看
#系统内核是3.10以上的
[root@localhost lizz]# uname -r
4.18.0-193.el8.x86_64
#系统版本
[root@localhost lizz]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"
2.安装
#1.卸载原来旧的docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#2.需要的安装包
$ sudo yum install -y yum-utils
#3.设置镜像的仓库
$ sudo yum-config-manager \
--add-repo \
#https://download.docker.com/linux/centos/docker-ce.repo(国外下载地址)
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#4.更新yum软件包索引
$ sudo yum makecache fast(centos8需要去掉fast)
#5.安装docker
#安装依赖
$ yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
$ sudo yum install docker-ce docker-ce-cli containerd.io
#6.启动Docker
$ systemctl start docker
#7.查看版本
$ docker version
#8.测试HelloWorld
$ docker run hello-world
#9.查看下载的HelloWorld镜像
$ docker images
3.卸载
#1.卸载依赖
$ sudo yum remove docker-ce docker-ce-cli containerd.io
#2.删除资源 /var/lib/docker docker的默认工作路径
$ sudo rm -rf /var/lib/docker
4.配置阿里云镜像下载加速
四、Docker执行流程
五、Docker工作原理
Docker是一个cs结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。
DockerServer接收到Docker-Client的指令,就会执行这个命令。
Docker为什么比虚拟机快?
1.Docker有着比虚拟机更少的抽象层。
2.Docker利用的是宿主机的内核,vm需要的是Guest OS。
所以新建一个容器的时候,Docker不需要像虚拟机一样重新加载一个操作系统内核,避免引 导,虚拟机是加载Guest OS,分钟级别的,而Docker是利用宿主机的操作系统,省略了这个 复杂的过程。
六、Docker的常用命令
帮助命令: (文档地址:https://docs.docker.com/engine/reference/commandline/build)
docker version #docker的版本信息
docker info #docker的详细信息
docker --help #帮助命令
镜像命令:
####查看
docker images #查看镜像
-a, --all #列出所有镜像
-q, --quiet #只显示镜像的id
####搜索
docker search (docker hub) #搜索镜像
docker search --filter=status=3000 #条件搜索(搜索条目大于三千的)
####下载
docker pull 镜像名称 [:tag] #下载镜像
[root@localhost lizz]# docker pull mysql
Using default tag: latest #如果不写tag,默认时latest
latest: Pulling from library/mysql
852e50cd189d: Pull complete #分层下载,docker image的核心 联合文件系统
29969ddb0ffb: Pull complete
a43f41a44c48: Pull complete
5cdd802543a3: Pull complete
b79b040de953: Pull complete
938c64119969: Pull complete
7689ec51a0d9: Pull complete
a880ba7c411f: Pull complete
984f656ec6ca: Pull complete
9f497bce458a: Pull complete
b9940f97694b: Pull complete
2f069358dc96: Pull complete
Digest: sha256:4bb2e81a40e9d0d59bd8e3dc2ba5e1f2197696f6de39a91e90798dd27299b093 #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址
#删除镜像
docker rmi -f image_id #根据镜像id删除单个
docker rmi -f image_id1 image_id2 image_id3 #根据镜像id删除多个
docker rmi -f $(docker images -aq) #删除所有的镜像
容器命令(有了镜像才可以创建容器)
1.新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" #容器名称(Name),用于区分容器
-d #后台方式运行
-it #使用交互方式运行,进入容器查看内容
-p
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用) #指定容器的端口 -p 8080:8080
-p 容器端口
容器端口
-p #随机指定端口
2.退出容器
exit #直接容器停止并退出
Ctrl+P+Q #容器不停止退出(快捷键)
3.列出所有的容器
docker ps #查看当前运行的容器
docker ps -a #查看运行历史记录
docker ps -n=? #显示最近创建的容器
docker ps -q #只显示容器的编号
docker ps -aq #显示所有容器的编号
4.删除容器
docker rm 容器id #删除指定的容器(不能删除正在运行的容器)
docker rm -f 容器id #删除指定的容器(包括正在运行的容器)
docker rm -f $(docker ps -aq) #删除所有容器
docker ps -a -q|xargs docker rm #删除所有容器
5.启动和停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
6.常用其它命令
#后台启动容器
docker run -d 容器名
#问题docker ps 发现容器停止了(容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止。)
#查看日志命令
docker logs -tf --tail 数量 容器id #显示指定数量的日志
-tf #显示日志
--tail number #要显示的日志数
#查看容器中进程信息
docker top 容器id
#查看镜像的元数据
docker inspect 容器id
#进入当前正在运行的容器(容器通常使用后台方式运行,需要进入容器,修改一些配置)
docker exec -it 容器id bashshell #进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach -it #进入容器正在执行的终端,不会启动新的进程
#从容器内拷贝文件到手机上
docker cp 容器id:容器内路径 目的主机路径
docker run -d -p 8088:9000 \
--restarter=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
七、使用DockerUI工具portainer
#安装Portainer镜像
docker pull portainer/portainer
#安装Portainer容器
docker run --name="portainer01" -d -p 8088:9000 portainer/portainer
#打开浏览器访问地址:http://192.168.35.128:8088 注册并登录
八、发布镜像
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG版本]
九、容器数据卷
容器的持久化和同步操作!容器间也是可以数据共享的。
docker run -it -v 主机目录:容器目录
ainer01" -d -p 8088:9000 portainer/portainer
#打开浏览器访问地址:http://192.168.35.128:8088 注册并登录
### 八、发布镜像
```shell
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG版本]
九、容器数据卷
容器的持久化和同步操作!容器间也是可以数据共享的。
docker run -it -v 主机目录:容器目录