Docker是一个开源的应用容器引擎,可以将应用软件和其依赖打包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。
Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。
官方文档地址
Get Docker | Docker Docs
先配置国内镜像:
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装
yum install docker-ce docker-ce-cli containerd.io
yum list installed | grep docker
yum -y remove containerd.io.x86_64
yum -y remove docker-ce-cli.x86_64
rm -rf /var/lib/docker
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含了运行某个软件所需的所有内容,包括代码、运行时库、环境变量和配置文件等。
将所有的应用和环境直接打包成镜像,就可以直接运行。
镜像名 命名规则:[repository]: tag 比如 tomcat:8.5.40
如果docker build没有指定tag,会使用默认值latest,tag用来描述版本信息
默认先从docker内部找,找不到从远程Docker Hub上拉取镜像https://hub.docker.com/
镜像的运行实例。(类比面向对象中:类与对象)
通过镜像(image)创建,一个镜像可以运行多个容器,且容器之间是没有关系的;镜像是静止的,通过容器才能跑起来
运行
docker run [镜像名] #运行容器,本地不存在该镜像则会自动从Docker Hub上拉取下来
查看
docker container ls === docker ps #列出当前正在运行的容器,container ls可以换成ps
docker container ls -a === docker ps -a #列出当前正在运行及退出的容器
停止
docker container stop [容器Id] #停止容器,,,,container可以不加
重启
docker container restart [容器Id] #重启容器,,,,container可以不加
删除
docker container rm [容器Id] === docker rm #删除掉已退出的容器,,,,container可以不加
docker container rm -f [容器Id] === docker rm -f #删除一个正在运行的容器,,,,container可以不加
运行
docker run -it [镜像名] /bin/bash #以交互式运行容器
查看容器日志
docker logs 容器ID
进入到容器的内部(容器已经跑起来,再进入)
docker exec -it [容器ID] /bin/bash
docker run -p 8080:8080 -d tomcat:8.5.40 #将容器运行在后台
-p: 表示指定端口
-d:表示后台运行
docker run --name tomcat -p 8080:8080 -d tomcat:8.5.40 #给容器取名字
docker cp [本地文件路径] [容器ID]:[容器内部路径] #本机(宿主机)向docker容器传输文件
docker cp [容器ID]:[容器内部路径] [本地文件路径] #docker容器向本机(宿主机)传输文件
docker rm -f $(docker ps -a)------把查出来的所有id都作为参数传给删除的参数:删除所有的容器
docker rmi -f $(docker ps -a)------删除所有镜像
-it ——以交互模式打开终端,执行bash,其结果就是打开了一个bash终端进入到容器内部后可以像在普通Linux环境执行命令
执行exit退出容器,回到docker host
docker run -it [镜像名] /bin/bash #以交互式运行容器------原来没有在跑的容器,直接跑起来一个并进去;
退出后容器停止了,没有日志等活动的页面,docker检测到没有任何效果变化,会自动把容器停掉
docker exec -it [容器ID] /bin/bash----进入到容器的内部,容器已经跑起来,再进入
退出后容器没有停止,因为原来就在运行,进入了再出来不会影响原本运行的容器
Docker主机(Docker Host):宿主机,Docker服务器所在的主机
服务器(Docker daemon):在后台运行,负责创建、运行、监控容器,构建、存储镜像。软件,API,接受命令行的命令
仓库(repository):用于存储镜像的仓库,分为私有仓库和公有仓库(Docker hub)。
docker.sock 是docker client 和docker daemon 在localhost进行通信的socket文件。
深入学习docker,可以学习官方文档 https://docs.docker.com/get-docker/