写在前面
本篇教程所使用环境
CentOS 8.2
docker官网
https://www.docker.com
官方文档地址
https://docs.docker.com/
github地址
https://github.com/docker/docker-ce
docker hub 地址
https://hub.docker.com/
什么是docker
- docker是一个软件,可以运行在window、linux、mac等各种操作系统上。
- docker 是一个开源的应用容器引擎,基于Go 语言开发并遵从 Apache2.0 协议开源,项目代码托 管在github上进行维护。
- docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任 何流行的 Linux 机器上。
- 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
docker基本组成
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker仓库(Registry):用来保存各种打包好的软件镜像;仓库分为公有仓库和私有仓库。(很类似 maven)
docker镜像(Images):软件打包好的镜像;放在docker仓库中;
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
docker安装
1、安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、安装docker-ce (ce代表社区版)
yum install docker-ce
4、启动docker服务
systemctl start docker
5、设置开机自启动
systemctl enable docker
6、安装阿里云镜像加速器 可参考:https://www.cnblogs.com/allenjing/p/12575972.html
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://复制自己的加速器地址.mirror.aliyuncs.com"] }
EOF
systemctl daemon-reload
systemctl restart docker
7、查看docker信息
docker -v
docker info
docker镜像
1、镜像下载
首先从https://hub.docker.com/搜索自己需要下载的镜像,下面演示下载tomcat镜像
我这里下载了几个9.0.20的不同版本,直接运行docker pull命令就能下载
这里我下载了三个不同版本的镜像,用docker images命令查看一下
发现他们的大小差别很大,这是因为不同版本在制作镜像时,使用的操作系统不同的,还可以使用slim压缩技术。
2、docker save命令
将镜像打包成压缩文件 用来备份
打包一个镜像
docker save tomcat:9.0.20-jdk8 -o tomcat9.tar
常用参数:
-o:输出到文件
打包多个镜像
docker save tomcat:9.0.20-jre8-alpine tomcat:9.0.20-slim -o tomcat9all.tar
3、docker load命令
将打包的tar文件还原成镜像
先使用docker rmi 删除存在的镜像
docker rmi tomcat:9.0.20-jre8-alpine
可以看到镜像已经被删除
cd到存放tar文件的目录下执行docker load命令
docker load -i tomcat9.tar
4、docker inspect命令
通过docker inspect命令,可以获取镜像的详细信息,其中包括id、创建时间、环境信息、大小等。
docker inspect tomcat:9.0.20-slim
docker inspect返回的是JSON格式,可以通过-f来指定获取某一项信息。
docker inspect -f {{".Size"}} tomcat:9.0.20-slim
5、docker rmi命令
docker rmi tomcat:9.0.20-jre8-alpine
常用参数
- -f,-force:强制删除镜像,即便有容器引用该镜像
- -no-prune:不要删除未带标签的父镜像
也可通过 images id删除(不推荐使用)
docker容器
容器是镜像的运行实例。可以从单个镜像上启动一个或多个容器。
1、新建并启动容器
docker run -itd --name tomcat9 -p 8080:8080 tomcat:9.0.20-jre8-alpine
常用参数:
- -d, --detach=false: 后台运行容器,并返回容器ID
- -i, --interactive=false: 以交互模式运行容器,通常与 -t 同时使用
- -P, --publish-all=false: 随机端口映射,容器内部端口随机映射到主机的端口。不推荐使用
- -p, --publish=[]: 指定端口映射,格式为:主机(宿主)端口:容器端口,推荐使用
- -t, --tty=false: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
- –name 为容器指定一个名称
- -e , --env=[]: 设置环境变量,容器中可以使用该环境变量
- –rm=false: 指定容器停止后自动删除容器,不能与docker run -d启动的容器
2、查看容器日志
docker logs -f tomcat9
常用参数
- -f:跟踪日志输出
- –tail:仅列出最新的N条日志
3、容器的退出和删除
先停止容器
docker stop tomcat9
再删除
docker rm tomcat9
也可以通过容器id删除
常用参数
- -f:强制删除一个运行中的容器
- -l:移除容器间的网络连接,而非容器本身
- -v:删除与容器关联的卷
4、进入容器
有bash命令的linux系统:例如centos
docker exec -it tomcat9 /bin/bash
没有bash命令的linux系统:例如alpine系统
docker exec -it tomcat9 .sh
5、其他与容器相关的命令
docker ps命令
docker ps查看所有运行中的容器
docker start 启动容器
docker stop 停止运行中的容器
docker ps -a 查看所有容器