1、安装containerd及CNI组件
[root@docker-master soft]
containerd-1.7.2-linux-amd64.tar.gz harbor-offline-installer-v2.8.2.tgz nginx-1.24.0.tar.gz
cni-plugins-linux-amd64-v1.3.0.tgz crictl-v1.27.1-linux-amd64.tar.gz nerdctl-1.4.0-linux-amd64.tar.gz runc.amd64
[root@docker-master soft]
bin/
bin/containerd-shim-runc-v1
bin/containerd-shim-runc-v2
bin/containerd-stress
bin/containerd
bin/containerd-shim
bin/ctr
[root@docker-master soft]
[root@docker-master soft]
containerd github.com/containerd/containerd v1.7.2 0cae528dd6cb557f7201036e9f43420650207b58
[root@docker-master soft]
[root@docker-master soft]
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/usr/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity
OOMScoreAdjust=-999
[Install]
WantedBy=multi-user.target
[root@docker-master soft]
[root@docker-master soft]
[root@docker-master soft]
sandbox_image = "registry.cn-hangzhou.aliyuncs.com/zhangshijie/pause:3.9"
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint=["https://9916w1ow.mirror.aliyuncs.com"]
[root@docker-master soft]
[root@docker-master soft]
[root@docker-master soft]
[root@docker-master soft]
[root@docker-master soft]
[root@docker-master soft]

[root@docker-master soft]

[root@docker-master soft]
[root@docker-master soft]
./
./loopback
./bandwidth
./ptp
./vlan
./host-device
./tuning
./vrf
./sbr
./tap
./dhcp
./static
./firewall
./macvlan
./dummy
./bridge
./ipvlan
./portmap
./host-local
[root@docker-master soft]
nerdctl
containerd-rootless-setuptool.sh
containerd-rootless.sh
[root@docker-master soft]
WARN[0000] unable to determine buildctl version: exec: "buildctl": executable file not found in $PATH
Client:
Version: v1.4.0
OS/Arch: linux/amd64
Git commit: 7e8114a82da342cdbec9a518c5c6a1cce58105e9
buildctl:
Version:
Server:
containerd:
Version: v1.7.2
GitCommit: 0cae528dd6cb557f7201036e9f43420650207b58
runc:
Version: 1.1.8
GitCommit: v1.1.8-0-g82f18fe0
[root@docker-master soft]
[root@docker-master soft]
namespace="k8s.io"
debug=false
debug_full=false
insecure_registry=true
2、使用基于nerdctl创建并管理容器
[root@docker-master soft]
[root@docker-master soft]
[root@docker-master soft]
bd0c1d1d8c5bce7c77c0a5346aaeb1c5458f8ef6a0afb45dd123ddad531ba251

[root@docker-master soft]

3、部署https的harbor服务器
[root@docker-master certs]
Generating RSA private key, 4096 bit long modulus
......................................................................................++
.......................................................................................++
e is 65537 (0x10001)
[root@docker-master certs]
[root@docker-master certs]
Generating RSA private key, 4096 bit long modulus
...............................................++
....................................................++
e is 65537 (0x10001)
[root@docker-master certs]
> -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=magedu.net" \
> -key magedu.net.key \
> -out magedu.net.csr
[root@docker-master certs]
总用量 16
-rw-r--r--. 1 root root 2025 7月 27 05:25 ca.crt
-rw-r--r--. 1 root root 3243 7月 27 05:23 ca.key
-rw-r--r--. 1 root root 1704 7月 27 05:28 magedu.net.csr
-rw-r--r--. 1 root root 3243 7月 27 05:27 magedu.net.key
[root@docker-master certs]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment extendedKeyUsage=serverAuth
subjectAltName=@alt_names
[alt_names]
DNS.1=magedu.com
DNS.2=harbor.magedu.net
DNS.3=harbor.magedu.local
EOF
[root@docker-master certs]
Signature ok
subject=/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=magedu.net
Getting CA Private Key
[root@docker-master certs]
总用量 28
-rw-r--r--. 1 root root 2025 7月 27 05:25 ca.crt
-rw-r--r--. 1 root root 3243 7月 27 05:23 ca.key
-rw-r--r--. 1 root root 17 7月 27 05:36 ca.srl
-rw-r--r--. 1 root root 2110 7月 27 05:36 magedu.net.crt
-rw-r--r--. 1 root root 1704 7月 27 05:28 magedu.net.csr
-rw-r--r--. 1 root root 3243 7月 27 05:27 magedu.net.key
-rw-r--r--. 1 root root 276 7月 27 05:36 v3.ext
[root@docker-master opt]
[root@docker-master harbor-install]
[root@docker-master harbor-install]
[root@docker-master harbor]
[root@docker-master harbor]

[root@docker-master harbor]

[root@docker-master harbor]
[root@docker-master harbor]
[root@docker-master harbor]
127.18.10.13 harbor.magedu.net
[root@docker-master harbor]
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/
Login Succeeded
[root@docker-master harbor]
[root@docker-master harbor]

4、基于Alpine和Ubuntu作为基础镜像实现的业务镜像构建
[root@docker-master 2.alpine3.18-nginx1.24-dockerfile-case]
总用量 1144
-rw-r--r--. 1 root root 280 7月 27 22:52 build-command.sh
-rw-r--r--. 1 root root 794 7月 27 23:06 Dockerfile
-rw-r--r--. 1 root root 38751 8月 5 2022 frontend.tar.gz
-rw-r--r--. 1 root root 1112471 4月 12 00:04 nginx-1.24.0.tar.gz
-rw-r--r--. 1 root root 2866 9月 12 2019 nginx.conf
-rw-r--r--. 1 root root 319 7月 27 23:04 repositories
[root@docker-master 2.alpine3.18-nginx1.24-dockerfile-case]
FROM alpine:3.10.1
MAINTAINER zhangshijie 2973707860@qq.com
COPY repositories /etc/apk/repositories
RUN apk update && apk add vim iotop gcc libgcc libc-dev libcurl libc-utils gzip zlib zlib-dev libnfs make pcre pcre2 pcre-dev zip unzip net-tools pstree wget libevent libevent-dev iproute2
ARG VER=1.24.0
ADD nginx-${VER}.tar.gz /opt
RUN cd /opt/nginx-${VER} && ./configure --prefix=/apps/nginx && make && make install && ln -sv /apps/nginx/sbin/nginx /usr/bin
RUN addgroup -g 2088 -S nginx
RUN adduser nginx -u 2088 -D -S /bin/sh -G nginx
RUN echo -e "123456\n123456" | passwd nginx
RUN mkdir /data/nginx/html/ -pv
ADD nginx.conf /apps/nginx/conf/nginx.conf
ADD frontend.tar.gz /apps/nginx/html/
RUN chown nginx.nginx -R /data/nginx/ /apps/nginx/
EXPOSE 80 443
CMD ["nginx"]
[root@docker-master 2.alpine3.18-nginx1.24-dockerfile-case]
docker build -t harbor.magedu.net/myserver/nginx:alpine-v1 .
[root@docker-master 2.alpine3.18-nginx1.24-dockerfile-case]

[root@docker-master 1.ubuntu2204-nginx1.22-dockerfile-case]
总用量 1108
-rw-r--r--. 1 root root 266 7月 27 23:21 build-command.sh
-rw-r--r--. 1 root root 892 7月 27 23:33 Dockerfile
-rw-r--r--. 1 root root 38751 8月 5 2022 frontend.tar.gz
drwxr-xr-x. 3 root root 38 7月 23 15:23 html
-rw-r--r--. 1 root root 1073322 5月 24 2022 nginx-1.22.0.tar.gz
-rw-r--r--. 1 root root 2812 10月 3 2020 nginx.conf
-rw-r--r--. 1 root root 2057 7月 27 23:21 sources.list
[root@docker-master 1.ubuntu2204-nginx1.22-dockerfile-case]
docker build -t harbor.magedu.net/myserver/nginx:v1 .
[root@docker-master 1.ubuntu2204-nginx1.22-dockerfile-case]
FROM ubuntu:20.04
MAINTAINER "jack 2973707860@qq.com"
RUN apt update
RUN apt install -y iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute gcc openssh-server lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute iotop unzip zip make vim
ADD nginx-1.22.0.tar.gz /usr/local/src/
RUN cd /usr/local/src/nginx-1.22.0 && ./configure --prefix=/apps/nginx && make && make install && ln -sv /apps/nginx/sbin/nginx /usr/bin
RUN groupadd -g 2088 nginx && useradd -g nginx -s /usr/sbin/nologin -u 2088 nginx && chown -R nginx.nginx /apps/nginx
ADD nginx.conf /apps/nginx/conf/
ADD frontend.tar.gz /apps/nginx/html/
EXPOSE 80 443
CMD ["nginx","-g","daemon off;"]
[root@docker-master 1.ubuntu2204-nginx1.22-dockerfile-case]

5、基于docker-compose单机编排运行Nginx+Java APP+MySQL服务
[root@docker-master case3-custom-network]
总用量 4
-rw-r--r--. 1 root root 1840 7月 29 00:37 docker-compose.yml
[root@docker-master case3-custom-network]
version: '3.3'
services:
nginx-server:
image: harbor.magedu.net/myserver/nginx:v1
container_name: nginx-web1
volumes:
- db-data:/data/nginx
expose:
- 80
- 443
ports:
- "80:80"
- "443:443"
networks:
- front
- backend
links:
- tomcat-server
tomcat-server:
image: registry.cn-hangzhou.aliyuncs.com/zhangshijie/tomcat-myapp:v1
container_name: tomcat-app1
networks:
- backend
links:
- mysql-server
mysql-server:
image: mysql:latest
container_name: mysql-container
volumes:
- /data/mysql:/var/lib/mysql
environment:
- "MYSQL_ROOT_PASSWORD=12345678"
- "TZ=Asia/Shanghai"
expose:
- 3306
ports:
- "3306:3306"
networks:
- backend
volumes:
db-data:
networks:
front:
driver: bridge
backend:
driver: bridge
default:
external:
name: bridge
[root@docker-master case3-custom-network]
[root@docker-master case3-custom-network]
Name Command State Ports
---------------------------------------------------------------------------------------------------
mysql-container docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
nginx-web1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
tomcat-app1 /apps/tomcat/bin/docker-en ... Up 8080/tcp, 8443/tcp

[root@docker-master case3-custom-network]
root@2b458d520f55:/apps/nginx
root@2b458d520f55:/apps/nginx
location /myapp {
proxy_pass http://tomcat-server:8080;
}
root@2b458d520f55:/apps/nginx
[root@docker-master case3-custom-network]
[root@ca80528d3307 /]

[root@docker-master case3-custom-network]
root@7722b05e3f3e:/
