Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker是什么?
- docker是一个开源的软件部署解决方案;
- docker也是轻量级的应用容器框架;
- docker可以打包、发布、运行任何的应用。
一个完整的Docker有以下几个部分组成:
-
dockerClient客户端
-
Docker Daemon守护进程
-
Docker Image镜像
-
DockerContainer容器
docker软件包的下载地址:
https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/
环境部署:
<1>安装docker
[root@foundation81 docker]# ls
container-selinux-2.21-1.el7.noarch.rpm
docker-ce-18.06.1.ce-3.el7.x86_64.rpm
libsemanage-2.5-8.el7.x86_64.rpm
libsemanage-python-2.5-8.el7.x86_64.rpm
pigz-2.3.4-1.el7.x86_64.rpm
policycoreutils-2.5-17.1.el7.x86_64.rpm
policycoreutils-python-2.5-17.1.el7.x86_64.rpm
[root@foundation81 docker]# yum install -y *
查找已安装的docker软件:
开启服务:
[root@foundation81 docker]# systemctl start docker.service
ip addr查看docker
<2>加载镜像
[root@foundation81 images]# docker load -i game2048.tar
<3>查看镜像信息
查看所有加载过的docker镜像
[root@foundation81 images]# docker images
查看特定的镜像
[root@foundation81 images]# docker images game2048
<4>使用docker镜像game2048以后台模式启动一个容器,并将容器命名为 vm1
[root@foundation81 ~]# docker run -d --name vm1 game2048
ip addr查看docker
brctl show查看docker
[root@foundation81 ~]# docker ps ##列出运行中的容器
[root@foundation81 ~]# docker ps -a ##列出所有的容器
获取容器/镜像的元数据
[root@foundation81 ~]# docker inspect vm1
测试:访问172.17.0.2—>game2048小游戏界面
docker端口映射
绑定容器的 80 端口,并将其映射到本地主机的 8080 端口上。
[root@foundation81 ~]# docker stop vm1
[root@foundation81 ~]# docker rm vm1
[root@foundation81 ~]# docker run -d --name vm1 -p 8080:80 game2048
[root@foundation81 ~]# iptables -t nat -nL ##列出 nat 表所有链的所有规则
访问localhost:8080
docker加速器
<1>阿里云加速器地址的获取
<2>配置镜像加速器
[root@foundation81 docker]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://svw6kteo.mirror.aliyuncs.com"]
}
[root@foundation81 docker]# systemctl daemon-reload
[root@foundation81 docker]# systemctl restart docker
查找nginx相关的镜像,发现即可下载
下载镜像:
注意配置完后要确保当前主机可以上网,这样就可以直接从官网pull下想要的镜像 。
[root@foundation81 images]# docker pull nginx
镜像管理
镜像用来创建容器,是容器的只读模板,默认可以从 docker hub 上下载。docker 的镜像是增量修改,每次创建新的镜像都会在父镜像上构建一个增量的层,基于 AUFS 技术。
docker rmi 删除镜像
docker search 查询镜像
docker pull 拉取镜像
docker push 推送镜像
docker容器管理
docker run -it --name vm1 ubuntu bash #创建容器
docker ps -a #查看容器进程
docker attach vm1 #连接容器
docker top vm1 #查看容器状态
docker logs vm1 #查看容器指令输出 -f 参数可以实时查看
docker inspect vm1 #查看容器详情
docker stats vm1 #查看容器资源使用率
docker diff vm1 #查看容器修改
docker run -d --name vm1 ubuntu bash -c "while true; do echo hello; sleep 1; done" #后台运行
docker stop vm1 #停止容器
docker start vm1 #启动容器
docker kill vm1 #强制干掉容器
docker restart vm1 #重启容器
docker pause/unpause vm1 #暂停/恢复容器
docker rm vm1 #删除容器
docker export vm1 > vm1.tar #导出容器
docker import vm1.tar image #导入容器为镜像 image
docker 开启一个交互式的容器:
[root@foundation81 images]# docker run -it --name vm1 ubuntu
root@b4f4de50e0bf:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@b4f4de50e0bf:/# exit ##ctrl + D 退出该交互模式并且停止该容器
[root@foundation81 images]# docker run -it --name vm1 ubuntu
root@655baa85abf6:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
96: eth0@if97: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
root@655baa85abf6:/# ##crtl +P +Q 退出当前的交互模式,该容器仍属于运行状态
想要进入重新进入处于运行状态的容器的交互页面时,可以使用attach命令
[root@foundation81 images]# docker attach vm1