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 "" > /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