docker kaoshi

三、构建基础镜像

基于空白scratch制作Ubuntu20.04的基础镜像

1、访问最新版的rootfs文件的下载页面并截图

 wget  http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04.1-base-amd64.tar.gz
 [root@ckz-docker]# ls | grep ubuntu-base-20.04.1-base-amd64.tar.gz 
 ubuntu-base-20.04.1-base-amd64.tar.gz
 ​

2、使用tree命令查看项目目录/build-ubunet-2004

 ---命令------
 mkdir /build-ubunet-2004/
 cd /build-ubunet-2004/
 ​
 vim Dockerfile
 FROM scratch
 ADD ubuntu-base-20.04.1-base-amd64.tar.gz /
 CMD ["/bin/bash"]
 ​
 ---结果----
 ​
 [root@ckz-docker ~]# tree /build-ubunet-2004/
 /build-ubunet-2004/
 ├── Dockerfile
 └── ubuntu-base-20.04.1-base-amd64.tar.gz
 ​
 ​
 ​

3、使用cat命令查看Dockerfile文件内容

 [root@ckz-docker build-ubunet-2004]# cat Dockerfile 
 FROM scratch
 ADD ubuntu-base-20.04.1-base-amd64.tar.gz /
 CMD ["/bin/bash"]

4、查看Dockerfile构建的镜像名字用NAME-ubuntu-2004:1.0

 [root@ckz-docker build-ubunet-2004]# docker build -t ckz-ubuntu-2004:1.0 .
 Sending build context to Docker daemon  27.74MB
 Step 1/3 : FROM scratch
  ---> 
 Step 2/3 : ADD ubuntu-base-20.04.1-base-amd64.tar.gz /
  ---> e15a3a305144
 Step 3/3 : CMD ["/bin/bash"]
  ---> Running in b3044aba466d
 Removing intermediate container b3044aba466d
  ---> df36fa340366
 Successfully built df36fa340366
 Successfully tagged ckz-ubuntu-2004:1.0
 [root@ckz-docker build-ubunet-2004]# docker image ls | grep ckz-ubuntu-2004
 ckz-ubuntu-2004                                   1.0                 df36fa340366        2 minutes ago       72.9MB
 ​
 ​

5、使用docker ps查看镜像测试运行后的UP状态

 [root@ckz-docker build-ubunet-2004]# docker run -it --name ckz-ubuntu ckz-ubuntu-2004:1.0 /bin/bash
 先按ctrl + p   后安ctrl + q   
 root@b3471dd707b7:/# [root@ckz-docker build-ubunet-2004]# 
 [root@ckz-docker build-ubunet-2004]# docker ps -a
 CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS               NAMES
 b3471dd707b7        ckz-ubuntu-2004:1.0   "/bin/bash"         12 seconds ago      Up 12 seconds                           ckz-ubuntu
 ​

四、构建应用程序镜像

基础上题制作镜像完成以下题目

1、使用tree命令查看项目目录/build-ssh-nginx-php

 [root@ckz-docker build-ssh-nginx.php]# cat << EOF >> run.sh
 > #!/bin/bash
 > service ssh start
 > service nginx start
 > service php7.4-fpm start
 > tail -f /dev/null
 > EOF
 [root@ckz-docker build-ssh-nginx.php]# chmod +x run.sh
 ​
 ​
 ​
 ​

2、使用cat查看run.sh文件内容

 [root@ckz-docker build-ssh-nginx.php]# cat run.sh 
 #!/bin/bash
 service ssh start
 service nginx start
 service php7.4-fpm start
 tail -f /dev/null
 ​

3、使用cat查看Dockerfile文件内容

 [root@ckz-docker build-ssh-nginx.php]# cat Dockerfile 
 FROM ckz-ubuntu-2004:1.0
 ​
 RUN apt-get update && \
     apt-get install -y openssh-server nginx php7.4-fpm php7.4-cli && \
     apt-get clean && \
     rm -rf /var/lib/apt/lists/*
 ​
 RUN mkdir /var/run/sshd
 ​
 RUN echo 'root:password' | chpasswd
 RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
 ​
 COPY default /etc/nginx/sites-available/default
 RUN echo "<?php phpinfo(); ?>" > /var/www/html/index.php
 ​
 COPY run.sh /run.sh
 RUN chmod +x /run.sh
 ​
 EXPOSE 22 80
 CMD ["/bin/bash", "/run.sh"]
 ​

4、使用docker image ls | grep 查看新构建的镜像NAME-ubuntu-ssh-nginx-php:1.0

[root@ckz-docker build-ssh-nginx.php]# docker build -t ckz-ubuntu-ssh-nginx-php:1.0 .
[root@ckz-docker build-ubunet-2004]# docker image ls | grep ckz-ubuntu-2004
ckz-ubuntu-ssh-nginx-php                                   1.0                 d125fa240366        2 minutes ago       229MB

5、使用docker ps 查看镜像状态

 [root@ckz-docker build-ssh-nginx.php]# docker run -d -p 2222:22 -p 8080:80 --name ssh-nginx-php ckz-ubuntu-ssh-nginx-php:1.0


[root@ckz-docker build-ssh-nginx.php]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND               CREATED             STATUS              PORTS                                        NAMES
e81e5db7be64        ckz-ubuntu-ssh-nginx-php:1.0   "/bin/bash /run.sh"   3 seconds ago       Up 2 seconds  0.0.0.0:2222->22/tcp, 0.0.0.0:8080->80/tcp   ssh-nginx-php

6、使用ssh远程登录

[root@ckz-docker build-ssh-nginx.php]# ssh -p 2222 root@localhost
root@localhost's password: 
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 4.19.90-2112.8.0.0131.oe1.x86_64 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

root@0cb01279330f:~# 

7、使用浏览器从外部访问php测试并截图

五、应用系统容器化部署项目

1、使用docker-compose -v 查看当前compose版本

[root@ckz-docker ]# docker-compose -v
docker-compose version 1.29.2, build 5becea4c

2、项目docker-compose文件

mkdir -p /yysc
cd /yysc
----先创建外部卷和网络------
docker network create gpmall-net
docker volume create redis-data
docker volume create mariadb-data
docker volume create zookeeper-data
docker volume create kafka-data


[root@ckz-docker yysc]# cat docker-compose.yml 
version: '3.8'

services:
  redis.mall:
    image: gpmall-redis:v1.0
    container_name: redis.mall
    hostname: redis.mall
    networks:
      - gpmall-net
    volumes:
      - redis-data:/var/lib/redis
    ports:
      - "6379:6379"

  mysql.mall:
    image: gpmall-mariadb:v1.0
    container_name: mysql.mall
    hostname: mysql.mall
    networks:
      - gpmall-net
    volumes:
      - mariadb-data:/var/lib/mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword  

  zookeeper.mall:
    image: gpmall-zookeeper:v1.0
    container_name: zookeeper.mall
    hostname: zookeeper.mall
    networks:
      - gpmall-net
    volumes:
      - zookeeper-data:/tmp/zookeeper
    ports:
      - "2181:2181"

  kafka.mall:
    image: gpmall-kafka:v1.0
    container_name: kafka.mall
    hostname: kafka.mall
    networks:
      - gpmall-net
    volumes:
      - kafka-data:/tmp/kafka-logs
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper.mall
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper.mall:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka.mall:9092

  nginx.mall:
    image: gpmall-nginx:v1.0
    container_name: nginx.mall
    hostname: nginx.mall
    networks:
      - gpmall-net
    depends_on:
      - redis.mall
      - mysql.mall
      - zookeeper.mall
      - kafka.mall
    links:
      - redis.mall
      - mysql.mall
      - zookeeper.mall
      - kafka.mall
    ports:
      - "9090:80"

networks:
  gpmall-net:
    external: true

volumes:
  redis-data:
    external: true
  mariadb-data:
    external: true
  zookeeper-data:
    external: true
  kafka-data:
    external: true



[root@ckz-docker yysc]# docker-compose config  (这一条命令是验证命令 没有报错的话会输出一条上面的docker-compose文件要是报错的话会告诉你哪里报错)

---验证无误后执行以下命令-----
[root@ckz-docker yysc]# docker-compose up -d


---然后访问http://ip:9090---

六、可视化容器运维平台部署项目

1、列出docker run命令部署项目时使用的完整命令

docker run -d \
  --name portainer-ce \
  --restart always \
  --network portainer-net \
  -p 9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer-data:/data \
  portainer/portainer-ce(镜像根据你们的来)

2、使用docker container ps 查看项目运行的状态

[root@ckz-docker ~]# docker container ps -f name=portainer-ce
CONTAINER ID        IMAGE                          COMMAND             CREATED             STATUS              PORTS                                        NAMES
a346627c490f        portainer/portainer-ce:2.9.3   "/portainer"        5 minutes ago       Up 5 minutes        8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp   portainer-ce

3、使用docker network ls 查看项目容器连接的网络

[root@ckz-docker ~]# docker network ls | grep portainer-net
be7e4ff05e77        portainer-net       bridge              local

4、使用docker volume ls 查看项目容器使用的数据卷

[root@ckz-docker ~]# docker volume ls | grep portainer-data
local               portainer-data

5、使用浏览器从外部访问运维平台的仪表台

6、使用浏览器从外部访问运维平台的容器列表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值