Docker概念
Docker是一种容器化技术,可以把软件运行的所有环境打包成镜像,一次封装,到处运行。因为减少了硬件的虚拟化所以Docker比虚拟机(VM)更快。
Docker官网:
Docker中文访问网址
镜像存在Docker Hub上面(一般用不到),网址:
Docker Hub
安装Docker的条件
Docker安装的前提条件:
可以用以下两种命令查看自己的CentOS内核版本是否支持:
#第一种
uname -r
#第二种
cat /etc/redhat-release
Docker的基本概念
镜像/容器:
镜像可以理解为一个对象,容器就是对象的实例,一个镜像可以有多个容器。
仓库(国内一般用网易云或者阿里云的仓库)
概念总结:
Docker安装:
使用yum命令安装(需要联网),这里我用的是XShell,CentOS的版本是8+。
第一步,安装依赖:
yum install -y yum-utils device-mapper-persistent-data lvm2
第二部,添加yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
注意:
centos8默认使用podman代替docker,直接安装docker会出现以下错误:
[root@localhost ~]# yum install docker-ce
上次元数据过期检查:0:00:13 前,执行于 2021年06月13日 星期日 16时22分32秒。
错误:
问题: package docker-ce-3:20.10.7-3.el8.x86_64 requires containerd.io >= 1.4.1, but none of the providers can be installed
- package containerd.io-1.4.3-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- package containerd.io-1.4.3-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- package containerd.io-1.4.3-3.2.el8.x86_64 conflicts with runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- package containerd.io-1.4.3-3.2.el8.x86_64 obsoletes runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- package containerd.io-1.4.4-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- package containerd.io-1.4.4-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- package containerd.io-1.4.6-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- package containerd.io-1.4.6-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64
- problem with installed package buildah-1.19.7-1.module_el8.4.0+781+acf4c33b.x86_64
- package buildah-1.19.7-1.module_el8.4.0+781+acf4c33b.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed
- cannot install the best candidate for the job
- package runc-1.0.0-56.rc5.dev.git2abd837.module_el8.3.0+569+1bada2e4.x86_64 is filtered out by modular filtering
- package runc-1.0.0-64.rc10.module_el8.4.0+522+66908d0c.x86_64 is filtered out by modular filtering
- package runc-1.0.0-65.rc10.module_el8.4.0+819+4afbd1d6.x86_64 is filtered out by modular filtering
- package runc-1.0.0-70.rc92.module_el8.4.0+786+4668b267.x86_64 is filtered out by modular filtering
(尝试在命令行中添加 '--allowerasing' 来替换冲突的软件包 或 '--skip-broken' 来跳过无法安装的软件包 或 '--nobest' 来不只使用软件包的最佳候选)
解决办法:
命令后追加 –allowerasing
yum install docker-ce docker-ce-cli containerd.io --allowerasing
1
或者先卸载podman,然后再安装docker-ce
#卸载podman
yum erase podman buildah
#安装docker-ce
yum install docker-ce
启动并设置开机自启动
systemctl start docker
systemctl enable docker
验证安装是否成功
docker version
阿里云镜像加速:
网址:阿里云镜像加速,这里可以查看自己的镜像加速地址
Centos7++以上的版本就按照操作文档上的步骤操作就行。
可以用下面的命令创建并编辑这个配置文件
#创建并编辑
vim /etc/docker/daemon.json
#然后把这段代码粘贴进去就行:
{
"registry-mirrors": ["https://自己的地址.mirror.aliyuncs.com"]
}
之后重启服务,用 docker info 查看一下 Registry Mirrors 改没改,就知道是否成功了。 网易云的地址跟阿里云差不多,只要替换下网址就行
测试运行hello-world
使用以下命令:
docker run hello-world
这时候会出现失败的提示:
helloworld本地寻找镜像提示失败之后就会去远程仓库中寻找镜像,然后再运行。
流程图:
Docker 常用命令
帮助命令:
docker验证命令
用来查看docker版本或者验证docker是否安装成功。
docker version
对docker容器安装之后的信息描述
docker info
docker的帮助命令
docker --help
镜像命令:
列出镜像
docker images
docker images 【参数】
查找镜像
docker search 【某个镜像的名字】
docker search 【参数】【某个镜像的名字】
PS:新版的要把 -s 变成 -f
下载镜像
docker pull 【镜像名】: [可选参数版本号]
注意:docker pull tomcat 等价于 docker pull tomcat:latest,没写版本号就代表下载最新版本。
删除镜像
docker rmi 【某个镜像的名字ID】
示例(删除hello-world):
docker rmi hello-world
注意: 如果命令后面没跟版本号的话默认删除最新版本(lasest)
如果出现这样的错误表示这个镜像正在使用
要强制删除:
docker rmi -f hello-world
容器命令:
{% label 有镜像才能创建容器,这是根本前提(下载一个CentOS镜像做示例)blue }
docker pull centos
新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run -it [IMAGE ID]
-it 的意思是启动交互式容器
启动之后会自动进入centos的命令行
列出正在运行的容器
docker ps [OPTIONS]
退出容器
有两种退出方式
1.容器停止退出
exit
2.容器不停止退出
Ctrl + P + Q
启动容器
docker start 【容器ID或容器名】
重启容器
docker restart 【容器ID或容器名称】
停止容器
“电脑的关机按钮”
等容器慢慢的关掉
docker stop 【容器ID或容器名称】
强制停止容器
“直接拔电源”
强制停止容器也叫温柔停止容器
docker kill 【容器ID或容器名称】
删除已停止的容器
docker rmi 和 docker rm 的 i 表示image(镜像),强制删除加上 -f。
docker rm 【容器ID】
重要命令
启动守护式容器
这里拿centos容器做演示
docker run -d centos
前台启动的时候参数用-it,后台启动用-d。
查看容器日志
docker logs -f -t --tail 【容器ID】
查看容器内的进程
docker top 【容器ID】
查看容器内部细节
docker inspect 【容器ID】
重新进入已启动的容器内
exec可以不进入容器就操作,attach要进入容器才能操作
容器内拷贝文件到主机上
docker cp 【容器ID】:【要拷贝的文件】 【拷贝后的路径】
示例:
docker cp 8bc9fd6cae03:/tmp/yum.log /root