三、构建基础镜像
基于空白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、使用浏览器从外部访问运维平台的容器列表
