Docker安装相关笔记。
1.Docker使用C/S架构,Client通过接口与Server进程通信实现容器的构造,运行和发布。
2.centos操作系统版本必须是3.10以上
查看操作系统版本命令:uname -r
Docker 安装
Docker 提供了两个版本:社区版 (CE) 和企业版 (EE)。
操作系统要求
以Centos7为例,且Docker 要求操作系统必须为64位,且centos内核版本为3.1及以上。
查看系统内核版本信息:
一、准备
卸载旧版本:
uname -r
yum remove docker docker-common docker-selinux docker-engine
yum remove docker-ce
卸载后将保留/var/lib/docker的内容(镜像、容器、存储卷和网络等)。
1.安装依赖软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
#安装前可查看device-mapper-persistent-data和lvm2是否已经安装
rpm -qa|grep device-mapper-persistent-data
rpm -qa|grep lvm2
2.设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
修改为国内比较快的docker源
可用命令cd /etc/yum.repos.d/
vim docker-ce.repo 修改docker下载地址为清华大学镜像站提供的地址(比默认的快)
地址:https://mirrors.tuna.tsinghua.edu.cn/ 搜索docker
镜像地址:https://mirrors.tuna.tsinghua.edu.cn/docker-ce/
修改默认配置:%s@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@
3.更新yum软件包索引
yum makecache fast
二、安装
安装最新版本docker-ce
yum makecache fast
yum install docker-ce -y(默认下载最新版本的docker)
#安装指定版本docker-ce可使用以下命令查看
yum list docker-ce.x86_64 --showduplicates | sort -r
# 安装完成之后可以使用命令查看
docker version
注意:首次使用docker version可能连接不上docker server,需要配置镜像加速
三、配置镜像加速
这里使用阿里云的免费镜像加速服务,也可以使用其他如时速云、网易云等
1.注册登录开通阿里云容器镜像服务
2.查看控制台,招到镜像加速器并复制自己的加速器地址
3.找到/etc/docker目录下的daemon.json文件(首次可能没有,直接mkdir docker),然后直接vim daemon.json
将下面加速地址配置进去。保存一下即可
4.加入以下配置
#填写自己的加速器地址
{
"registry-mirrors": ["https://zfzbet67.mirror.aliyuncs.com"]
}
5.通知systemd重载此配置文件;
systemctl daemon-reload
6.设置docker为开机启动
systemctl enable docker
7.重启docker服务
systemctl restart docker
8.启动docker
systemctl start docker(当配置了镜像加速后,启动后docker version会同时出现server信息)。
runc是docker的一种协议标准。
四、docker常用操作
1.查看详细信息,当前多少镜像容器等:
docker info
2.docker 命令:docker查看所有命令
使用Management commands就行了--新版本都将命令封装成对象管理,如早期创建一个容器可用docker create *** 现在用 docker container create ***
可用docker container(Management commands) --help查看相关命令。
3.搜索配置镜像(阿里云,前面配置过的公开仓库)中的镜像。
docker search java or tomcat(都从阿里云仓库拉取的)
拉取镜像:docker pull tomcat:7 指定7版本
docker pull tomcat 不指定版本则默认最新版本。
4.查询镜像列表:
docker images or docker image ls
5.查看某个镜像详细信息:
docker image inspect + image ID or name
其中如果镜像不是latest版本,需要指定tag版本号:docker image inspect mysql:5.7
6.删除镜像:
获取元信息:
docker rmi -f 镜像ID或者镜像名:TAG
# 删除指定本地镜像
# -f 表示强制删除
7.docker inspect 镜像ID或者镜像名:TAG
# 获取镜像的元信息,详细信息
五、容器常用操作。
运行:
docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像ID或镜像名:TAG
如:运行一个tomcat,其中8080为容器对外提供的端口,80为本地映射的端口
docker run --name tom -d -p 80:8080 imageId
哇哦,这里报错了。解决可见:https://www.cnblogs.com/nulige/articles/9204841.html
解决办法:
vi /etc/sysctl.conf
net.ipv4.ip_forward=1 #添加这段代码
#重启network服务
systemctl restart network && systemctl restart docker
#查看是否修改成功 (备注:返回1,就是成功)
[root@docker-node2 ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
再重新run一个容器。重复时可使用docker rm -f 名称删除容器
成功后直接访问ip(不用端口号):
容器为何可以不用端口号就能访问?
答:docker有自己的网络,如下 docker0
查看跑起来的容器:docker container ps
查看容器日志:
docker logs + 容器id(与镜像id区分开)
docker contaner ps -a查询所有容器
在此页面进去容器里面某个目录的操作命令:
docker container exec -it tom /bin/bash
如图,此时已进入容器里面。主机名也已经变成了容器ID,此时为极简单版本的lnux,ll命令就无法使用,不过基本操作可使用,如ls
做个小测试:查询到webapps的路径:find -name webapps
进去下面的Root
echo "<h1>hello docker!<h1>" > index.html
rm -f index.jsp(删除原本默认tomcat首页)
刷新访问页面:
回到主机:exit
docker container inspect tom 查看详细信息。
此图中,Gateway为docker0对应网关,IPAddress为当前容器分配的ip,可直接使用命令访问此容器:
curl 172.17.0.2:8080
停止当前容器:
docker container stop containerId
# --name 指定容器名,可自定义,不指定自动命名
# -i 以交互模式运行容器
# -t 分配一个伪终端,即命令行,通常-it组合来使用
# -p 指定映射端口,讲主机端口映射到容器内的端口
# -d 后台运行容器(防止tomcat运行时日志打出到当前页面)
# -v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读
容器列表:
docker ps -a -q
# docker ps查看正在运行的容器
# -a 查看所有容器(运行中、未运行)
# -q 只查看容器的ID
启动容器:
docker start 容器ID或容器名
停止容器:
docker stop 容器ID或容器名
删除容器:
docker rm -f 容器ID或容器名
# -f 表示强制删除
查看日志:
docker logs 容器ID或容器名
进入正在运行容器:
docker exec -it 容器ID或者容器名 /bin/bash
# 进入正在运行的容器并且开启交互模式终端
# /bin/bash是固有写法,作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动
bash。
# 也可以用docker exec在运行中的容器执行命令
拷贝文件:
docker cp 主机文件路径 容器ID或容器名:容器路径 #主机中文件拷贝到容器中
docker cp 容器ID或容器名:容器路径 主机文件路径 #容器中文件拷贝到主机中
获取容器元信息:
docker inspect 容器ID或容器名