一.centos7环境下的docker安装
前言:docker是一个开源的应用容器,主要针对应用进行打包部署。
1.环境说明:centos7
关闭selinux
2.docker的安装
yum install docker -y
3.docker版本的查看
docker --version
4.docker服务的管理
systemctl start docker #开启
systemctl stop docker #关闭
systemctl restart docker #重启
5.docker服务的开机启动
systemctl enable docker #开启开机自启动
systemctl disable docker #关闭开机自启动
二.docker镜像的管理
1: 查看已有镜像
docker images #查看镜像
2: 搜索centos镜像
docker search centos7
3: 下载centos镜像
docker pull docker.io/openshift/base-centos7
4: 保存生成镜像文件,使用docker save命令
docker save docker.io/openshift/base-centos7 >/tmp/centos.tar
5: 移除镜像,使用dockerrmi进行移除
docker images
docker rmi docker.io/openshift/base-centos7 #移除镜像
6: 导入镜像自己的镜像
docker load < /tmp/centos.tar
docker tag 484 centos7:latest #导入后的docker镜像是没有名字的,需要重新命令
三.docker使用镜像启动容器
前言:
下载完镜像,我们最主要的是想用这个镜像来启动一个全新的系统。
1.启动容器的命令
docker run -it centos7 /bin/bash #启动容器 i交互式 t终端
yum install -y net-tools ; ifconfig #看下容器的ip
2.在宿主系统查看容器的情况
docker ps #查看正在运行的容器
docker ps -a #查看正在运行和退出的容器
容器里面使用ctrl+d退出 #退出后容器就不处于运行的状态了
3.删除容器,使用docker rm 容器id,删除容器。运行中的容器无法删除
docker stop (ID)
docker rm (ID)
四.docker以后台的方式启动容器
1.以后台进程启动容器
docker run -d centos7 #-d是使用后台的方式去启动容器
2.要让容器永久运行的话,要有两个条件
1: docker run -d 后台的方式的启动
2: 要有一个永久运行的程序
总结:
以后台进程启动容器,启动一个永久运行的程序
docker run -d centos7 /bin/bash -c 'while true;do echo hello; sleep3; done'
3.查看容器里的运行日志
docker logs 容器id
4.进后台运行的容器(需求,查看容器的ip)
docker exec -it 602 /bin/bash #退出的话,容器是还在运行的,因为是后台启动的。
5.停止后台运行容器
docker stop 容器id #平滑stop
docker kill 容器id #强制停止
6.重新启动容器
docker start 容器id
五.shell批量管理docker容器
准备工作:
先启动多个容器
docker run -d centos7 /bin/bash -c 'while true;do echo hello; sleep1; done'
1.批量关闭容器
for line in `docker ps|awk '{print $1}'|grep -v CONTAINER`;do
docker stop $line
done
2.批量开启容器
for line in `docker ps -a|awk '{print $1}'|grep -v CONTAINER`;do
docker start $line
done
3.shell删除所有容器
for line in `docker ps -a|awk '{print $1}'|grep -v CONTAINER`;do
docker kill $line
docker rm $line
done
六. docker容器的网络类型
前言:
docker容器的网络模式有四种:
Bridge #跟docker0桥接,默认
Host #跟宿主机共用网络
Container #跟其它容器共用网络 (一般没人用)
None #不进行任何网络配置
1.使用默认的bridge模式来启动容器
docker run --net=bridge -d xuhzan_nginx /bin/bash -c '/usr/local/nginx/sbin/nginx'
网络情况:跟docker0桥接,多一张桥接网卡
2.使用host模式来启动容器,跟宿主机的网络共享,如果是一个业务多进程都在一个容器里面的话
docker run --net=host -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'
网络情况:跟宿主机共用网络,没有多一张网卡,宿主机就能看到80端口的监听
其网络和宿主机一模一样,没有区别。
3.使用None模式来启动容器,不进行任何网络设置
docker run --net=none -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'
以这种方式启动直接没有网。
七. docker容器的端口映射
1.docker可以把宿主机的端口映射到容器里的端口,桥接docker0的时候可以使用映射把容器里的监听端口暴露出来。
2.默认使用桥接的方式进行启动,只能通过宿主机去访问
docker run -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'
3.使用端口映射的方式启动,映射出来一个端口让公网能够访问
docker run -p 8801:80 -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'
4.使用多个端口映射
docker run -p 8801:80 -p 8802:80 -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'
八. 宿主机和容器间的文件共享
前言:
假如说如果有网站要经常更新,有些人不想跑到容器里面,关于一些网站的程序想直接在宿主机上就能直接进行更新。
1. mkdir/myweb
cd /myweb/
2.启动容器时指定共享的文件,建议用特权的方式去启动容器
2.1 docker run --privileged=true -v/myweb:/usr/local/nginx/html/myweb -d xuhzan_nginx /bin/bash -c'/usr/local/nginx/sbin/nginx'
2.2 dockerps 然后进入 容器
2.3 cd/usr/local/nginx/html/myweb 发现容器里也可以看见文件夹和内容。