docker安装,镜像与容器操作
docker相关组件介绍
Docker使用C/S架构,Client通过接口与Server进程通信实现容器的构建,运行和发布,如图:
Host(Docker 宿主机)
安装了Docker程序,并运行了Docker daemon的主机。
Docker daemon(Docker 守护进程):
运行在宿主机上,Docker守护进程,用户通过Docker client(Docker命令)与Docker daemon交互。
Images(镜像):
将软件环境打包好的模板,用来创建容器的,一个镜像可以创建多个容器
Containers(容器):
Docker的运行组件,启动一个镜像就是一个容器,容器与容器之间相互隔离,并且互不影响。
Docker Client(Docker 客户端)
Docker命令行工具,用户是用Docker Client与Docker daemon进行通信并返回结果给用户。也可以使用其他工具通
过Docker Api 与Docker daemon通信。
Registry(仓库服务注册)
经常会和仓库(Repository)混为一谈,实际上Registry上可以有多个仓库,每个仓库可以看成是一个用户,一个用户
的仓库放了多个镜像。仓库分为了公开仓库(Public Repository)和私有仓库(Private Repository),最大的公开仓库是
官方的Docker Hub,国内也有如阿里云、时速云等,可以给国内用户提供稳定快速的服务。用户也可以在本地网络
内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次
在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
docker安装
以Centos7为例,且Docker 要求操作系统必须为64位,且centos内核版本为3.1及以上。
查看系统内核版本信息:uname -r
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.更新yum软件包索引
yum makecache fast
4.安装docker
yum install docker-ce -y
5.配置阿里镜像加速
- 注册登录开通阿里云容器镜像服务
- 查看控制台,找到镜像加速器并复制自己的加速器地址
- 找到/etc/docker目录下的daemon.json文件,没有则直接 vi daemon.json(docker文件夹也可能没有)
- 加入以下配置: { “registry-mirrors”: [“https://zfzbet67.mirror.aliyuncs.com”] }
- 通知systemd重载此配置: systemctl daemon-reload
- 重启docker服务: systemctl restart docker
镜像操作
help:
cker COMMAND --help
查找镜像:
docker search 关键词
例子:docker search tomcat
下载镜像 :
docker pull 镜像名:TAG
( Tag表示版本,有些镜像的版本显示latest,为最新版本,如果是最新版TAG可省)
例子:docker pull tomcat
查看镜像:
docker images
删除镜像:
docker rmi -f 镜像ID或者镜像名:TAG
获取元信息:
docker inspect 镜像ID或者镜像名:TAG
容器操作
运行:
docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像ID或镜像名:TAG
–name 指定容器名,可自定义,不指定自动命名
-i 以交互模式运行容器
-t 分配一个伪终端,即命令行,通常-it组合来使用
-p 指定映射端口,讲主机端口映射到容器内的端口
-d 后台运行容器
-v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读
例子: docker run --name lrytomcat -p 80:8080 -d tomcat(宿主机到容器的端口映射80:8080)
容器列表:
docker ps -a -q
docker ps查看正在运行的容器
-a 查看所有容器(运行中、未运行)
-q 只查看容器的ID
启动容器:
docker start 容器ID或容器名
停止容器:
docker stop 容器ID或容器名
删除容器:
docker rm -f 容器ID或容器名
查看日志:
docker logs 容器ID或容器名
进入正在运行容器:
docker exec -it 容器ID或者容器名 /bin/bash
拷贝文件:
docker cp 主机文件路径 容器ID或容器名:容器路径( 主机中文件拷贝到容器中 )
docker cp 容器ID或容器名:容器路径 主机文件路径 (容器中文件拷贝到主机中)
获取容器元信息:
docker inspect 容器ID或容器名
tomcat安装示例
docker pull tomcat
docker run --name lrytomcat -p 80:8080 -d tomcat
访问浏览器出现tomcat主页
问题1:
docker启动tomcat容器访问端口显示404的问题,页面显示 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在
关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
docker exec -it lrytomcat /bin/bash
cd webapps
rm -f webapps
cp -r webapps.dist webapps
问题2:
IPv4 forwarding is disabled. Networking will not work.
在宿主机上执行
echo “net.ipv4.ip_forward=1” >>/usr/lib/sysctl.d/00-system.conf
systemctl restart network && systemctl restart docker
docker run --name lrytomcat -p 80:8080 -d tomcat