【项目实战9】Docker1(安装与运行)

本文介绍了Docker的基础概念,包括容器的工作原理、与虚拟机的区别,展示了常用的基础命令如镜像拉取、创建、运行、镜像历史查看等。还涵盖了Docker的安装步骤,以及如何导入游戏包并进行端口映射。重点讲解了镜像层构建的两种方法,包括从镜像修改到提交新镜像的过程。
摘要由CSDN通过智能技术生成

一、前言

(1)、容器的介绍

1、Copy-on-Write 可写容器层
2、容器层以下所有镜像层都是只读的
3、docker从上往下依次查找文件
4、容器层保存镜像变化的部分,并不会对镜像本身进行任何修改
5、一个镜像最多127层

(2)、虚拟机和docker区别

在这里插入图片描述

二、基础命令

docker pull busybox  					         %从镜像仓库拉取(下载)镜像
docker load -i busybox.tar				         %本地已有镜像包的时候直接在本地加载镜像
docker images  							         %查看本地镜像列表
docker history  busybox:latest  		         %查看镜像修改历史
docker ps 								         %查看后台开启的容器状态
docker ps -a 							         %查看后台所有容器状态
docker rm -f ef3b3fa540ec  				         %删除容器
docker build -t demo:v6 . 				         %创建容器(以当前路径下的dockerfile自动创建的方式)
docker run --rm demo:v6  				         %rm表示运行容器后回收(删除)
docker run -d demo:v6 					         %-d表示运行容器的同时将其打入后台
docker run -it --name demo demo:v5 		         %-it表示运行容器的同时进入容器,交互式
docker inspect demo						         %查看容器详细信息
docker commit demo demo:v1				         %把demo保存为demo:v1
docker run -d --name demo nginx                  %以demo的名字后台运行
docker run -d --name demo -p 80:80 game2048      %在后台用取名为demo的容器运行game2048,从虚拟机到容器的端口映射为80
docker load -i busybox                           %将文件busybox导入到容器
docker run -it -d --name demo nginx              %开启容器,在取名demo的容器中运行nginx
docker rmi game2048:latest                       %删除进程

二、docker安装

前提是真机将docker-ce这个软件源在apache上分享了出来

1、安装启用docker


[root@server1 yum.repos.d] vim docker.repo                     设置软件仓库

///
[docker]
name=docker-ce
baseurl=http://172.25.42.250/docker-ce
gpgcheck=0
/
 
[root@server1 yum.repos.d] yum install docker-ce -y           下载软件
[root@server1 yum.repos.d] systemctl start docker             启动docker
[root@server1 yum.repos.d] systemctl enable docker            开机自启动
[root@server1 yum.repos.d] docker info                        查看docker运行情况

正常情况
在这里插入图片描述
当出现以下报错时
在这里插入图片描述
解决方法

[root@server1 sysctl.d] vim /etc/sysctl.conf            设置内核参数


net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1


[root@server1 sysctl.d] sysctl  --p		         使内核策略生效

当显示ip4/6未开启时,解决方法

vim /etc/sysctl.conf

///
net.ipv4.ip_forward = 1
///

sysctl -p

警告消失
在这里插入图片描述

三、导入游戏包程序运行

利用游戏的镜像tar,导入容器,运行容器并打入后台,80端口映射到8080端口

[root@server1 mnt] ls
game2048.tar  harbor  harbor-offline-installer-v1.10.1.tgz
[root@server1 mnt] docker load -i game2048.tar                            上传镜像文件到docker
[root@server1 mnt] docker run -d --name demo -p 80:8080 game2048          -d代表打入后台,容器的名字叫demo,-p 用真实主机的80映射到容器8080端口,用game2048镜像运行。
[root@server1 ~] docker ps -a|grep demo                                   查看端口当前映射

发现了端口映射
在这里插入图片描述

即可在网页上看到效果
在这里插入图片描述
再次运行另一个游戏时

[root@server1 mnt] docker rm -f demo                                 删除之前的容器
[root@server1 mnt] docker load -i mario.tar    
[root@server1 mnt] docker run -d --name demo -p 80:8080 mario       用宿主机的80端口对容器8080端口进行映射

发现可以宿主机的80端口可以进行游戏
在这里插入图片描述

四、镜像层的构建

(1)、构建方法1

1、上传镜像,开启带有交互式终端的容器,容器名字叫demo
可以使用ctrl+p+q的方式将容器打入后台运行

[root@server1 ~] docker load -i busybox.tar
[root@server1 ~] docker run -it --name demo busybox
[root@server1 ~] docker ps                            查看容器的进程

2、
2、可以通过以下方式连接挂到后台的demo

[root@server1 ~] docker container attach demo

在这里插入图片描述
3、提交新的镜像

[root@server1 ~] docker commit demo demo:v1            将demo提交新镜像,命名为demo:v1
[root@server1 ~] docker history busybox:latest         查看busybox:latest历史
[root@server1 ~] docker history demo:v1                查看demo:v1历史
[root@server1 ~] docker image ls

可以看到busybox:latest镜像有两层,而demo是在busybox:latest的基础上再加了一层,提交之后可以看到demo:v1的版本出现在了镜像文件里面
在这里插入图片描述
4、删除镜像demo:v1

[root@server1 ~] docker rmi demo:v1 
[root@server1 ~] docker image ls
[root@server1 ~] docker history busybox:latest 

删除镜像文件后发现busybox:latest的镜像层数不变
在这里插入图片描述

注意
dockerfile有审计功能,每新加一层镜像都会有动作审计说明
dockerfile不能放在根下,否则会把根下所有数据发送给docker引擎

(2)、构建方法2

1、建立文件,书写镜像规则

[root@server1 ~] mkdir docker
[root@server1 ~] cd docker/
[root@server1 docker] vim Dockerfile

///
FROM busybox                                             镜像来源
RUN echo hello > testfile                                容器进行的操作
/


[root@server1 docker] docker build -t demo:v2 .          在当前目录下建立镜像
[root@server1 docker] docker image ls                  

可以在docker的镜像文件中见到刚建立了demo:v2
在这里插入图片描述
2、查看demo:v2的历史
k可以发现也是在busybox的基础上进行构建的
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值