Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker的部署与安装
1.安装docker和相关依赖性
[root@server1 docker]# ls
container-selinux-2.21-1.el7.noarch.rpm
pigz-2.3.4-1.el7.x86_64.rpm
docker-ce-18.06.1.ce-3.el7.x86_64.rpm
policycoreutils-2.5-17.1.el7.x86_64.rpm
libsemanage-2.5-8.el7.x86_64.rpm
policycoreutils-python-2.5-17.1.el7.x86_64.rpm
libsemanage-python-2.5-8.el7.x86_64.rpm
[root@server1 docker]# yum install -y *
2.打开docker服务
[root@server1 docker]# systemctl start docker
3.在安装好docker后,linux系统会为docker容器分配一个ip,利用ip addr中查看docker0的ip
[root@server1 docker]# ip addr
4.查看docker的版本信息
[root@server1 docker]# docker version
5.docker宿主机的信息
[root@server1 docker]# docker info
Docker常用的基础命令
# docker load -i ubuntu.tar 导入镜像
# docker run -it --name vm1 ubuntu 创建容器(以ubuntu镜像为模板)
# docker run -d -p 80:80 --name vm1 game2048 创建容器并指定端口映射(前一个是外部端口,后一个是内部监听端口)
# docker run -it --name vm2 ubuntu 创建交互式容器
# docker ps 查看容器状态
# docker ps -a 查看容器状态(包括不活跃的容器)
# docker attach vm1 连接容器
# docker top vm1 查看容器进程
# docker logs vm1 查看容器指令输出 -f 参数可以实时查看
# docker inspect vm1 查看容器详情
# docker stats vm1 查看容器资源使用率
# docker diff vm1 查看容器修改
# docker stop vm1 停止容器
# docker start vm1 启动容器
# docker kill vm1 强制干掉容器
# docker restart vm1 重启容器
# docker pause/unpause vm1 暂停/恢复容器
# docker rm vm1 删除容器
rm 删除容器
rmi 删除镜像
镜像的导入和容器的使用
2048游戏
1.导入镜像game2048.tar
[root@server1 ~]# docker load -i game2048.tar
2.查看镜像
[root@server1 ~]# docker images
3.运行镜像,制作成容器,取名为vm1
[root@server1 ~]# docker run -d -p 80:80 --name vm1 game2048
#-d打入后台
#-p端口映射
# --name表示为这个容器起的名字是vm1
4.查看vm1容器的信息
[root@server1 ~]# docker inspect vm1
4.查看容器状态
[root@server1 ~]# docker ps
5.浏览器访问测试
在自己本地可以输入内部ip,即docker自动分配的ip(172.17.0.2)
在外部访问输入容器所在主机的ip
交互式容器
1.创建并导入
[root@server1 ~]# docker load -i ubuntu.tar #加载ubuntu镜像
[root@server1 ~]# docker run -it --name vm2 ubuntu
root@d7dbc467da39:/# ip addr 创建一个vm1的镜像,-it表示打开交互式docker界面(ubuntu自带,rhel镜像需要在后面再加bash)
交互式界面退出
ctrl+pq 不停止容器,后台运行
ctrl+d 直接结束容器,释放内存
2.连接容器vm2,并创建文件
[root@server1 ~]# docker attach vm2
root@d7dbc467da39:/# touch file{1..10}
如果你修改了原本容器的某些配置,想要保存这个容器的配置并形成一个新的镜像,就可以使用commit命令,基于该容器创建出一个新的镜像。即:commit 主要用于通过差异性,创建一个新的image。
[root@server1 ~]# docker commit -m "add files" vm2 ubuntu:v1 ##使用commit命令基于一个现有的镜像来修改
sha256:aa00ef2f4ef47e732351fde35d6affa60536257de053abcc553e219f2540f934
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu v1 aa00ef2f4ef4 3 seconds ago 188MB
game2048 latest 19299002fdbe 2 years ago 55.5MB
ubuntu latest 07c86167cdc4 3 years ago 188MB
[root@server1 ~]# docker history ubuntu:v1
IMAGE CREATED CREATED BY SIZE COMMENT
aa00ef2f4ef4 20 seconds ago /bin/bash 0B add files
07c86167cdc4 3 years ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 3 years ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$… 1.9kB
<missing> 3 years ago /bin/sh -c echo '#!/bin/sh' > /usr/sbin/poli… 195kB
<missing> 3 years ago /bin/sh -c #(nop) ADD file:b9504126dc5590898… 188MB