Docker学习(3)——安装部署过程及简单应用

一、 Docker的部署与安装

1.安装docker和相关依赖性

[root@server1 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@server1 docker]# yum install -y *

在这里插入图片描述

2.打开docker服务

[root@server1 ~]# systemctl start docker.service

在这里插入图片描述
3.在安装好docker后,系统会为docker容器分配一个ip,利用ip addr中查看docker0的ip

这个IP是为了容器通信用的,具体后面再说
在这里插入图片描述
4. 查看docker的版本信息

[root@server1 ~]# docker version 

在这里插入图片描述
5. docker宿主机的信息

[root@server1 ~]# docker info

在这里插入图片描述

二、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  删除容器

三、镜像的导入和容器的使用

实例一:简单搭建一个2048小游戏

1.导入镜像game2048.tar

[root@server1 ~]# docker load -i game2048.tar 

在这里插入图片描述

2.查看镜像信息

扫描二维码关注公众号,回复: 6784857 查看本文章
[root@server1 ~]# docker images

在这里插入图片描述

3.创建容器vm1,并运行

[root@server1 ~]# docker run -d -p 80:80 --name vm1 game2048

在这里插入图片描述

上面命令的功能为创建名为【vm1】的容器;并将本机80端口映射到容器的80端口,通过本机80端口访问容器内部;运行容器并打入后台

参数 功能
-d 打入后台
-p 端口映射
- -name 指定容器的名字

这里特别要提到docker的端口映射。

我们使用以下命令可以看到在创建容器时有很多的参数,其中关于端口的参数有【-p】与【-P】

[root@server1 ~]# docker run --help

在这里插入图片描述

当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-p或-P参数来指定端口映射。

当使用-P(大写P)标记时,Docker会随机映射一个端口到内部容器开放的网络端口(端口范围在Linux系统使用的端口之外,一般都过万)

当使用-p(小写p)可以指定要映射的端口,并且在一个指定的端口上只可以绑定一个容器。
支持的格式有:IP:HostPort:ContainerPort | IP::ContainerPort | HostPort:ContainerPort 。

4.查看容器运行状态

[root@server1 ~]# docker ps

在这里插入图片描述

5.查看容器信息

[root@server1 ~]# docker inspect vm1

在这里插入图片描述

6.浏览器访问

172.25.6.1(本机IP,因为我们做了端口映射,所以只需访问本机的80端口即可到达容器vm1内部)

在这里插入图片描述

2048游戏就这样轻松上线,其实当我们执行完【docker run】命令以后就已经完成了上线,后续的操作也只是为了查看相关信息而已;这样看来,我们上线一个应用就只用了两步,非常方便,这也是为什么如今docker这么火爆的原因

实例二:快速搭建nginx

1.导入镜像,并创建容器vm1

[root@server1 ~]# docker load  -i nginx.tar

在这里插入图片描述

[root@server1 ~]# docker run -d --name vm2 -p 8080:80 nginx	
##因为本机80端口已经被2048游戏占用,所以我们指定8080端口

在这里插入图片描述

[root@server1 ~]# docker ps -a

在这里插入图片描述

3.测试

http://172.25.6.1:8080/

在这里插入图片描述

4. 编写一个默认发布页面,并cp到容器内部

[root@server1 ~]# ls
game2048.tar  nginx.tar
[root@server1 ~]# vim index.html
[root@server1 ~]# cat index.html 
<h1/>hello world<h1/>
[root@server1 ~]# 
[root@server1 ~]# docker cp index.html vm2:/usr/share/nginx/html

在这里插入图片描述

5.也可以直接挂载本机目录到容器里

删除之前的容器vm2

[root@server1 ~]# docker rm -f vm2
[root@server1 ~]# mkdir /tmp/docker		##创建挂载目录

通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径;当然也可以指定挂载目录的权限

docker run -d -p 8080:80 --name vm2 -v /tmp/docker/:/usr/share/nginx/html/ nginx
docker run -d -p 8080:80 --name vm2 -v /tmp/docker/:/usr/share/nginx/html/:ro nginx

在挂载目录里编辑发布内容

[root@server1 ~]# cd /tmp/docker/
[root@server1 docker]# ls
[root@server1 docker]# 
[root@server1 docker]# vim index.html
[root@server1 docker]# cat index.html 
<h1/>snow snow snow<h1/>

在这里插入图片描述

在这里插入图片描述

实例三:利用docker创建一个交互式容器

1.导入ubuntu镜像

[root@server1 ~]# docker load -i ubuntu.tar 

2.生成并运行容器

[root@server1 ~]# docker run -it --name vm3 ubuntu
##创建一个vm3的镜像,-it表示打开交互式docker界面(ubuntu自带,rhel镜像需要在后面再加bash)

在这里插入图片描述
容器vm3的内核版本与宿主机的内核版本一致

root@b179b778d2cf:/# uname -r 
3.10.0-514.el7.x86_64
[root@server1 ~]# uname -r
3.10.0-514.el7.x86_64

在这里插入图片描述
命令补充:

ctrl + pq 	##退出容器但不关闭容器
[root@server1 ~]# docker attach vm3		##进入容器

ctrl + D	##退出并关闭容器,下次登陆时需要开启
[root@server1 ~]# docker start vm3		##打开关闭的容器

docker rm vm3				删除容器
docker rm -f  vm2			强制删除容器
docker rmi ubuntu:vm3  		删除镜像

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/meltsnow/article/details/92842792