36次8.26(docker03)

回顾

1.环境安装

cat << EOF |tee /etc/modules-load/k8s.conf
> overlay
> br_netfilter
> EOF
overlay
br_netfilter
​
​
cat << EOF |tee /etc/sysctl/k8s.conf
>net.bridge.bridge-nf-call-iptables = 1
>net.bridge.bridge-nf-call-ip6tables = 1
>net.ipv4.ip_forward = 1
>EOF
​
#yum镜像
#yum服务器和客户端

2.镜像案例

#启动服务
systaemctl start docker
#查看镜像
docker images
#删除镜像
docker rmi 5a
docker rmi centos:latest
​
#在公共仓库查找镜像
docker search centos
#拉取镜像
docker pull centos

3.管理容器(在镜像添加了一个可写层)

#创建容器
docker run -it --name c0 centos:latest /bin/bash
#查看容器
docker ps  #查看正在运行的容器
docker ps --all  #查看所有容器
#切回宿主机 ctrl p q
​
#启动容器
docker start c0 c1
​
#停用容器
docker stop c0 c1
#删除容器
docker rm c0 c1
#如果容器正在运行,容器是删除的,如果容器没有删除,对应的镜像也无法删除

4.镜像迁移

#save
docker save -o centos.tar centos:latest
​
#load
docker save -i centos.tar

5.生成镜像

#export 通过容器生成tar包
docker export centoshttpd.tar c0
​
#import 通过tar包引入镜像
docker imort -m "aaaa" centoshttpd centos:httpd
​
docker images

6.获得镜像ip地址

#进入镜像的bash
yum install iprouter,net-tools
ip a
​
#使用exec指令
docker exec 容器名称或id yum -y install iproute
docker exec c0 ip a
​
#直接使用inspect命令
docker inspect c0

7.端口映射 -p

docker run -it --name c0 -p80:80/tcp centos:latest /bin/bash
docker run -it --name c1 -p80 centos:latest /bin/bash #宿主机指定一个大于等于3278的容器
docker ps --all #查看实际给予的端口
​
docker run -it --name c2 -p192.168.1.51::80 centos:latest /bin/bash

数据持久化

docker run -it --name c4 -v /opt/:/var/www/html/ centos:latest /bin/bash

线上考试系统的数据 虚拟化上色数据 虚拟化技术部署

1.部署前段服务器

#1.上传资源
​
#2.创建基础,在服务器上
systemctl start docker 
docker pull centos
docker run -it --name c0 centos:latest /bin/bash
​
#3.在容器中修改yum源
curl -o /etc/yum.repos.d/Centos-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
​
#4.在容器中安装epel
yum -y install epel-release
​
#5.在容器中安装nginx
yum -y install nginx
​
#6.ctrl p q
​
#7.导出tar包
docker export -o centos_nginx.tar c0
​
#8.引入tar包,称为镜像
docker import -m "维护世界和平" centos_nginx centos:nginx
​
#9.查看镜像
docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       nginx     b6fdf4c10bdc   3 seconds ago   366MB
mysql        latest    a82a8f162e18   4 weeks ago     586MB
centos       latest    5d0da3dc9764   2 years ago     231MB
​
#10.停用c0容器,删除C0容器
docker stop c0
docker rm c0
​
#11.创建新的centos nginx容器,在创建的同时指定端口,以及挂载目录
docker run -i --name c0 -p80:80/tcp -v /opt/:/usr/share/nginx/html centos:nginx /bin/bash
​
#12.在容器内部启动nginx服务
nginx
#ctrl p q
#13.在宿主上把dist⽬录中的⽂件复制opt⽬录中
cp -r dist/* /opt
#1.搜索mysql镜像
docker search mysql
​
#2.拉取mysql镜像
docker pull mysql
​
#3.创建镜像容器
docker run -d --name my01 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:latest
# -d 后台运⾏,并输出hashcode
# -e MYSQL_ROOT_PASSWORD=root 设置mysql密码
# -p 映射3306端⼝
​
#4.管理mysql
docker exec -it my01 mysql uroot -proot

2.让容器时间和宿主机时间一致

[root@docker ~]# docker run -it --name c0 centos:latest /bin/bash
[root@97a83160b7cd /]# date
Mon Aug 26 06:37:27 UTC 2024
​
[root@docker ~]# docker run -it --name c2 -v /etc/localtime:/etc/localtime centos:latest /bin/bash
[root@e866eda2a2e7 /]# date
Mon Aug 26 14:42:18 CST 2024
​

3.exec命令

# 容易内部已经安装的指令⽅可执⾏,否则⽆法执⾏
docker exec c0 ifconfig
docker exec c2 ls /
 bin
 dev
 etc
 home
 lib
 lib64
 lost+found
 media
 mnt
 opt
 proc
 root
 run
 sbin
 srv
​

4.容器之间的依赖

容器的ip地址不稳定link

--link 容器苗:别名
docker run -it --name c0 centos:nginx /bin/bash
退出
docker run -it --link c0:mysqldb --name c1 centos:nginx /bin/bash
​
 [root@ba46c0e4055d /]# ping mysqldb 
PING mysqldb (172.17.0.2) 56(84) bytes of data.
 64 bytes from mysqldb (172.17.0.2): icmp_seq=1 
ttl=64 time=0.057 ms
 64 bytes from mysqldb (172.17.0.2): icmp_seq=2 
ttl=64 time=0.044 ms
 64 bytes from mysqldb (172.17.0.2): icmp_seq=3 
ttl=64 time=0.039 ms

测试

# 暂停服务
[root@docker001 ~]# docker stop c0 c1
 c0
 c1
 # 先启动主动依赖容器
[root@docker001 ~]# docker start c1
 # ⽆法启动,提示被link的容器没有启动
Error response from daemon: Cannot link to a non 
running container: /c0 AS /c1/mysqldb
 Error: failed to start containers: c1
 [root@docker001 ~]# docker start c1
 Error response from daemon: Cannot link to a non 
running container: /c0 AS /c1/mysqldb
 Error: failed to start containers: c1
 # 先启动被依赖的容器
[root@docker001 ~]# docker start c0
 c0
# 在启动主动依赖的容器
[root@docker001 ~]# docker start c1
 c1

测试 使⽤⼀个容器占⽤172.17.0.2,测试

# 停⽤容器
[root@docker001 ~]# docker stop c0 c1
 c0
 c1
 # 创建新容器 占⽤172.17.02
 [root@docker001 ~]# docker run -it --name c2 
centos:nginx /bin/bash
 [root@2114e0e97441 /]# [root@docker001 ~]# 
# 启动 c0 c1
 [root@docker001 ~]# docker start c0 c1
 c0
 c1
 # 在c1容器ping别名 
[root@docker001 ~]# docker exec c1 ping mysqldb
 PING mysqldb (172.17.0.3) 56(84) bytes of data.
64 bytes from mysqldb (172.17.0.3): icmp_seq=1 
ttl=64 time=0.157 ms
 64 bytes from mysqldb (172.17.0.3): icmp_seq=2 
ttl=64 time=0.037 ms

每次启动都修改了/ets/hosts⽂

[root@docker001 ~]# docker exec c1 cat /etc/hosts
 127.0.0.1 localhost
 ::1 localhost ip6-localhost ip6-loopback
 fe00::0 ip6-localnet
 ff00::0 ip6-mcastprefix
 ff02::1 ip6-allnodes
 ff02::2 ip6-allrouters
 172.17.0.3  mysqldb 20f05670b7df c0
 172.17.0.4  ba46c0e4055d

1.docker容器的ip地址是不固定,如果要作为服务器使⽤,就必须能 够直接访问服

务,不能直接使⽤ip,为容器设置域名,做端⼝映射也 能保证,确定是⼀旦停⽤之

后端⼝被占⽤,就⽆法再次启动了

2.docker run --link. 容器的名称或者是id:⾃定义域名

3.被link容器必须处于启动状态,否则当前容器⽆法启 动

5.docker镜像容器

  1. docker client向dcoker daemon 发送创建容器的请求 docker run

  2. docker daemon查找有⽆客户端需要的镜像

  3. 如果没有,就到容器的镜像仓库下载需要的镜像 pull

  4. 拿到容器镜像后,启动容器

1.在docker daemo初始状态(没有镜像的时候) /var/lib/docker不 存在

2.当docker daemon服务器启动,会⾃动创建dock⽬录

3.在没有镜像的情况下。查看overlay2这个⽬录是只有两个⽂件, 管道⽂件 ,l⽬

录(管理镜像和容器的软连接的⽬录)

4.当我们pull⼀个镜像之后 /va r/lib/docker/overlay2下就有⼀个新 的⽬录,这个

⽬录就是cenonos的基础⽬录,这个新的⽬录就是镜 像,就是不可读的层

5.当我们使⽤这个镜像创建⼀个容器,在overlay2会添加2个⽬录, ⼀个是init⽬

录,另外⼀个⽬录就是容器的可写层,⽤户对系统的修 改都在可写层中进行

6.基础镜像制作

1.进程⽬录

2.sys⽬录是内核⽂件保存位置,不允许修改

3.排除以上2个⽬录,并且将⽤户设置为数字

tar --numeric-owner -exclude=/proc --exclude=/sys -cvf centos7.tar /

4.将项⽬移动到dockerserver主机上

5.查看tar包

[root@docker001 ~]#ls
anaconda-ks.cfg  centos7.tar  centos_java17  frp  
initserver.sh  jdk-17_linux-x64_bin.tar.gz

6.加载镜像

docker import -m "袁佳佳" yjj.tar zm.v0

7.查看镜像

[root@docker001 ~]#docker images
 REPOSITORY     TAG       IMAGE ID       CREATED   
      SIZE
 me             me00      64abc01ff8c4   3 minutes 
ago   2.55GB
 centos         nginx     12fea1b890de   24 hours 
ago    366MB
 centos         java17    b6bf774de7bb   24 hours 
ago    550MB
 centos_httpd   v0        fffc96d791d5   2 days ago 
     309MB
 centos_yum     v0        191d9c84f461   2 days ago 
     260MB
 mysql          latest    a82a8f162e18   4 weeks 
ago     586MB
 centos         latest    5d0da3dc9764   2 years 
ago     231MB
​

8.创建容器

[root@docker001 ~]# docker run -it --name c00 
me:me00 /bin/bash
 [root@4199382c490f /]# ls
 bin   dev  home  lib64  mnt  proc  run   srv  tmp  
var
 boot  etc  lib   media  opt  root  sbin  sys  usr

7.应用镜像

1.根据基础镜像创建容器

docker run -it --name c0 centos_yum:v0 /bin/bash

2.安装应⽤

 yum -y install httpd

退出

3..docker commit

 [root@docker001 ~]# docker commit --help 
Usage:  docker commit [OPTIONS] CONTAINER 
[REPOSITORY[:TAG]]
 Create a new image from a container's changes
 Aliases:
  docker container commit, docker commit
 Options:
  -a, --author string    Author (e.g., "John 
Hannibal Smith <hannibal@a-team.com>")
  -c, --change list      Apply Dockerfile 
instruction to the created image
  -m, --message string   Commit message
  -p, --pause            Pause container during 
commit (default true)
 [root@docker001 ~]# docker commit c0 centos:httpd
 sha256:bbf5ed97db84f87ec8cbc8e82297fe22f79ad437d60
 3f743840c0b7b62be4196
 [root@docker001 ~]# docker images
 REPOSITORY     TAG       IMAGE ID       CREATED   
       SIZE
 centos         httpd     bbf5ed97db84   3 minutes 
ago    340MB
 me             me00      64abc01ff8c4   29 minutes 
ago   2.55GB
 centos         nginx     12fea1b890de   24 hours 
ago     366MB
 centos         java17    b6bf774de7bb   25 hours 
ago     550MB
 centos_httpd   v0        fffc96d791d5   2 days ago 
      309MB
 centos_yum     v0        191d9c84f461   2 days ago 
      260MB
 mysql          latest    a82a8f162e18   4 weeks 
ago      586MB
centos         latest    5d0da3dc9764   2 years 
ago      231MB

  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值