目录
一.Docker容器简介
1.Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
2.Docker之父Solomon Hykes说:Docker就好比传统的货运集装箱,Docker是管理容器的引擎,为应用打包、部署平台,而非单纯的虚拟化技术。容器不需要提前封装虚拟机,而是共享宿主机,可以理解为宿主机上的一个进程。
3.docker的整个生命周期有三部分组成:镜像(image)+容器(container)+仓库(repository)。容器是由镜像实例化而来,也可以说镜像是文件, 容器是进程。 容器是基于镜像创建的, 即容器中的进程依赖于镜像中的文件, 这里的文件包括进程运行所需要的可执行文件, 依赖软件, 库文件, 配置文件等
1.传统虚拟化技术与Docker容器技术对比
2.容器的工作原理
3.Docker安装
官方站点:
https://docs.docker.com/
阿里云开源镜像站:
https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/
首先在虚拟机中下载所需要的docker-ce(社区版)然后将安装包scp到真机的Apache发布目录下
配置server1的docker软件仓库,安装docker-ce
[docker]
name=docker
baseurl=http://172.25.132.250/20/
gpgcheck=0
yum -y install docker-ce
开启服务,并设置开机自启
docker info : 显示 Docker 系统信息,包括镜像和容器数 ,正常启动如下
docker info : 显示 Docker 系统信息,包括镜像和容器数
如果出现两个网络错误
解决方法
此时我们需要手动进行问题的解决
解决方式如下,编辑/etc/sysctl.d目录下的docker.conf 文件,写入两条语句;
系统会从/usr/lib/sysctl.d/.conf 和 /etc/sysctl.d/.conf 加载应用系统配置;
手动加载所有的配置文件,执行: sysctl --system
[root@server1 sysctl.d]# cd /etc/sysctl.d
[root@server1 sysctl.d]# vim docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
[root@server1 sysctl.d]# sysctl --system ##刷新系统内核
再次docker info查看,问题已经解决
4.测试
1.测试一
拉曲仓库中的游戏
[root@server1 ~]# docker images ##查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
yakexi007/mario latest 9a35a9e43e8c 6 years ago 198MB
[root@server1 ~]# docker run -d --name demo -p 80:80 yakexi007/game2048 ##使用镜像创建
[root@server1 ~]# docker ps
然后在真机的浏览器中输入172.25.132.1进行游戏
2.测试二
删除上一个游戏所生成的容器,因为demo容器已经存在,然后重新创建一个名叫demo的容器
docker rm -f demo #删除之前的容器
docker ps -a #查看所有容器
doker pull yakexi007/mario #拉取新的游戏镜像
docker run -d --name demo -p 8080:8080 yakexi007/mario #运行容器
docker ps #查看运行的容器
查看容器所占用端口
然后在浏览器中输入172.25.132.1:8080进入玛丽奥游戏
二.Docker中的命令
导入镜像:
docker load -i game2048
运行容器:
docker run -d --name game1 -p 80:80 game2048
docker tab键补齐可以查看命令
attach diff info node rm stats version
build events inspect pause rmi stop volume
builder exec kill plugin run swarm wait
commit export load port save system
config help login ps search tag
container history logout pull secret top
context image logs push service trust
cp images manifest rename stack unpause
create import network restart start update
删除镜像 ------当前镜像没有被任何容器使用才可以删除
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
强制删除镜像
docker image rm 镜像名称/镜像ID
保存镜像
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
举例:docker save tomcat -o /myimg.tar
查看docker中镜像
docker images docker镜像查看
docker ps 查看启动的镜像服务
docker ps -a 查看所有的镜像服务
docker rmi <image id> 删除images,通过image的id来指定删除谁