一、Docker 容器的安装
1.安装docker,docker 容器软件包具有依赖性
注意:此处采用yum仓库解决,安装18.06版本
[root@server1 yum.repos.d]# yum install -y docker-ce-18.06.1.ce-3.el7.x86_64
[root@server1 ~]# systemctl start docker
[root@server1 ~]# docker --version #查看版本号
Docker version 18.06.1-ce, build e68fc7a
docker开启后,linux 系统会为 docker 分配 ip
二、docker 常用的指令
# docker load -i ubuntu.tar 导入镜像
# docker run -it --name vm1 ubuntu 创建容器(以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 删除容器
docker 命令的用法:
如果没有命令补齐功能:(装了之后需要先退出终端,再连上)
[root@server1 ~]# yum install -y bash-*
三、镜像的导入和容器的使用
1.获取一些镜像的资源
2.搭建小游戏服务器
[root@server1 images]# docker load -i game2048.tar
查看导入的镜像
[root@server1 ~]# docker images game2048
运行镜像(-d 打入后台;–name 自定义名字;-p 映射端口)
[root@server1 ~]# docker run -d --name 2048gameweb -p 80:80 game2048
b03d32ffb6c050b72f9261e3fc19c09e7a88c5d2258f6394cd70cfa278053d78
测试:浏览器访问172.25.254.1
3.nginx 服务器的搭建
此时80端口是被占用的
导入nginx的镜像,并运行
[root@server1 images]# docker load -i nginx.tar
[root@server1 ~]# docker run -d --name web1 nginx
273fc066982f6fd3f72c0c60744b35a7469af0dfafcb38f2b4cd252f45808e37
#此时没有影射端口,所以走默认,此时因为再虚拟机,会冲突(和真机)
[root@server1 ~]# docker inspect web1 查看信息
注意:此时不能通过浏览器访问,因为本实验docker在虚拟设备上部署,所以直接浏览器访问172.17.0.3会发生冲突
测试:curl命令会看到nginx的默认发布页面
- 方法1:修改默认发布页面
-it 交互式
Ctrl + pq #不关闭退出
Ctrl + d 退出(会关闭)
Cmd表示再执行时,默认执行的指令
[root@server1 ~]# docker container exec -it web1 bash #进入到容器里,有些应用没bash
root@273fc066982f:/# cd /usr/share/nginx/html/
root@273fc066982f:/usr/share/nginx/html# ls
50x.html index.html
root@273fc066982f:/usr/share/nginx/html# echo www.westos.org > index.html
root@273fc066982f:/usr/share/nginx/html# exit
- 方法2:cp方式修改默认发布页
[root@server1 ~]# cd /tmp/
[root@server1 tmp]# ls
[root@server1 tmp]# mkdir docker
[root@server1 tmp]# cd docker/
[root@server1 docker]# vim index.html
[root@server1 docker]# cat index.html
www.2.org
[root@server1 docker]# docker container cp --help
Usage: docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
Copy files/folders between a container and the local filesystem
Options:
-a, --archive Archive mode (copy all uid/gid information)
-L, --follow-link Always follow symbol link in SRC_PATH
[root@server1 docker]# docker container cp index.html web1:/usr/share/nginx/html
基础的 docker 指令
- attach
[root@server1 ~]# docker run -it --name vm1 ubuntu
root@d6a7705a118a:/# exit #ctrl d 退出会关闭
[root@server1 ~]# docker start vm1 开启vm1
vm1
[root@server1 ~]# docker container attach vm1 #连接容器(会卡顿,敲回车就正常)
root@d6a7705a118a:/#
root@d6a7705a118a:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@d6a7705a118a:/# read escape sequence #ctrl pq 退出不关闭
##有些镜像是没有bash的:
[root@server1 images]# docker load -i rhel7.tar
[root@server1 ~]# docker run -it --name vm2 rhel7 bash #需要自己加指令
bash-4.2# exit
ubuntu和rhel7可以看见CMD的不同
- commit 提交;针对容器
[root@server1 ~]# docker commit vm1 ubuntu:v1 #将vm1镜像提交为ubuntu:v1
sha256:41494af254baa651c137315d8a52f308e02d67d21b6f946fd012a0d6f4c4726f
- diff
- export:导出—import:导入
- logs 详细显示操作,包括空格指令
- ls
- port
- stop
[root@server1 ~]# docker ps -qa 取id
[root@server1 docker]# docker rm -f docker ps -qa
#删除容器
- Prune: #删除停止的容器
[root@server1 ~]# docker container prune
- stats #相当于top命令,查看cpu情况
[root@server1 ~]# docker container stats
- Top: 进程查看
[root@server1 ~]# docker container top 2048gameweb
- images 镜像
- network 网络
- Volume:逻辑卷
镜像的分层结构和共享资源
容器是共享内核的
注意:此时的ubuntu和rhel7都是相同的内核分层结构:v1是在laster的基础上建的
注意:底层采用相同的188M
实验测试效果:
[root@server1 ~]# docker run -it --name vm1 rhel7 bash
bash-4.2# touch file{1..10}
bash-4.2# exit
d[root@server1 ~]# docker commit vm1 rhel7:v1
sha256:8776a62870aea062d5d382dba1af614b6bdf9e91606cec87fcc2c8380b04c363
[root@server1 ~]# docker rm -f vm1
vm1
[root@server1 ~]# docker run -it --name vm1 rhel7:v1 bash
bash-4.2# ls
bin dev file1 file2 file4 file6 file8 home lib64 mnt proc run srv tmp var
boot etc file10 file3 file5 file7 file9 lib media opt root sbin sys usr
bash-4.2# touch file{20..30}
bash-4.2# exit
[root@server1 ~]# docker commit vm1 rhel7:v2
sha256:a9b7438c8f8d89ed9814d3d219a5829dac15035ca2d36bf80f614c316105c628
[root@server1 ~]# docker rm vm1
vm1
[root@server1 ~]# docker images rhel7
REPOSITORY TAG IMAGE ID CREATED SIZE
rhel7 v2 a9b7438c8f8d 21 seconds ago 140MB
rhel7 v1 8776a62870ae About a minute ago 140MB
rhel7 latest 0a3eb3fde7fd 4 years ago 140MB