Linux之Docker(三)Docker的部署及简单应用

安装docker:
[root@docker1 ~]# yum install -y docker-ce docker-ce-cli  (yum会解决依赖问题)
[root@docker1 ~]# systemctl start docker
[root@docker1 ~]# systemctl enable docker
实验一:2048小游戏
[root@docker1 ~]# docker load -i game2048.tar 
[root@docker1 ~]# docker run -d --name rongqi1 -p 800:80 game2048

在这里插入图片描述

实验二: 容器的基本操作
  • 创建交互式容器

    docker load -i ubuntu
    docker images
    docker run -it --name rongqi ubuntu
    ##exit推出后 等同于ctrl+d 如果用ctrl+pq 此时只是退出命令行,后台仍然在运行
    docker ps -a 会发现此时是退出状态
    docker start rongqi
    docker ps -a 会发现此时是运行状态
    docker container attach rongqi 会连接容器
    在这里插入图片描述

  • 在已有镜像中升级更高版本镜像

    mkdir /dock
     cd /dock
     vim dockerfile  #大小写均可,但必须是这个名字。除非在配置文件修改默认文件名
        FROM ubuntu
        RUN touch file{1..6}
        RUN echo "hello world"
    docker build -t ubuntu:jx1
    

##优化的镜像从cache里取和基础镜像相同的数据

docker build -t rhel7:jx1 .
vim dockerfile    #随便添加一条指令(注意:添加在尾端)
docker build -t rhel7:jx2 .
docker history rhel7:jx2    #会发现除了添加的那条指令,前面的指令都是取自cache

在这里插入图片描述

  • entrypoint与cmd的区别:

cmd会被覆盖,entrypoint不会被覆盖,一定会执行

mkdir /dock
cd /dock
vim dockerfile  #大小写均可,但必须是这个名字。除非在配置文件修改默认文件名
   FROM rhel7
   WORKDIR /mnt  #更换工作区间
   ENV name world  #定义变量 
   CMD echo "hello $name"  #等于 CMD ["/bin/sh", "-c", "echo hello $name"]

在这里插入图片描述

vim dockerfile
FROM rhel7
WORKDIR /mnt
ENV name world
ENTRYPOINT ["/bin/echo", "hello"]
CMD ["world"]

docker built -t rhel7:jx1 .
docker run --rm rhel7:jx1 jingjing #运行容器完即删,不用命名  #jingjing会覆盖world

在这里插入图片描述

  • 更换标签

tag

docker images     #由于系统的默认是拉取lastest的镜像,所以可以更换tag标签
docker tag ubuntu:jx2 ubunru:lastest
docker pull ubuntu     #默认是lastest,除非自己搭建仓库,否则这条命令没用
docker run -it --name rongqi3 ubuntu:jx1
docker rm -f rongqi3    #删除容器
docker rmi ubuntu:jx1     #删除镜像
 #这两步可以调换顺序,如果先删除镜像,那么容器会自动挂在基本镜像上

注意:有时images会有缓存
docker images 出现none tag
docker rmi TMAGE ID #即可删除
其中TMAGE ID 是docker images 中的数据

实验三:利用容器快速搭建apach镜像

dockerfile文件:

vim dockerfile
FROM rhel7
COPY dvd.repo /etc/yum.repos.d/
RUN rpmdb --rebuilddb && yum install -y httpd
expose 80
volume ["/var/www/html"]
cmd ["/usr/sbin/httpd", "-D", "FOREGROUND"]

yum源:dvd文件

vim dvd.repo
[rhel]
name=rhel
baseurl=http://172.25.7.250/base7.3
gpgcheck=0

生成新的镜像和容器:

docker built -t rhel7:jx1 .
docker run -d --name ct1 rhel7:jx1  #由于此时将程序打入后台了,所以在删除容器的时候如果不退出,就需要强制删除:docker rm -f ct1  

查看信息:

docker inspect ct1 #查看信息:挂载目录、分配的ip

在这里插入图片描述在这里插入图片描述

curl 172.17.0.2 #可以看到首页

在这里插入图片描述

docker volume ls

在这里插入图片描述
编辑首页内容:
在这里插入图片描述
也可以自定本地挂载点

docker run -d --name ct2 -v /apachdata:/var/www/html -p 80:80 rhel7:jx1
docker inspect ct2

在这里插入图片描述

实验四:利用容器快速搭建nginx镜像

首先在/dock下要有nginx-1.15.8.tar.gz这个包

vim dockerfile
 FROM rhel7
 COPY dvd.repo /etc/yum.repos.d/
 ADD nginx-1.15.8.tar.gz /mnt
 EXPOSE 80
 WORKDIR /mnt/nginx-1.15.8
 RUN rpmdb --rebuilddb && yum install -y gcc make zlib-devel pcre-devel
 RUN sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="/g' auto/cc/gcc
 RUN ./configure --prefix=/usr/local/nginx
 RUN make
 RUN make install
 VOLUME ["/usr/local/nginx/html"]
 CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]

docker build -t rhel7:nginx .
docker run -d --name ct1 -p 80:80 rhel7:nginx

在这里插入图片描述

编辑首页内容:
在这里插入图片描述
在这里插入图片描述
也可以自定挂载点,如apache。不再赘述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值