一、什么是容器?
容器技术已经成为应用程序封装和交付的核心技术
容器技术的核心有以下几个内核技术组成:
Cgroups(Control Groups) #资源管理NameSpace #进程隔离SElinux安全
由于是在物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速
虚拟化必须要有操作系统
容器没操作系统
六大命名空间:主机名空间、文件系统、用户、网络、进程、信号向量
什么是docker?
实现容器的一种软件,docker是完整的一套轻量级容器管理系统,docker提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术
docker优点
相比于传统的虚拟化技术,容器更加简洁高效传统虚拟机需要给每个VM安装操作系统容器使用的共享公共库和程序
docker缺点
容器的隔离性没有虚拟化强公用Linux内核,安全性有先天缺陷SElinux难以驾驭监控容器和容器排错是挑战
环境准备
1、禁用 selinux [SELINUX=disabled]
[root@registry ~
]
SELINUX
=disabled
[root@registry ~
]
Disabled
2、卸载防火墙 [yum -y remove firewalld-*]
[root@registry ~
]
3、docker软件安装包提取码:nprh
[root@registry ~
]
[root@registry ~
]
[root@registry localrepo
]
4、准备云主机
主机ip地址最低配置
registry172.31.78.1702CPU,2G内存node001172.31.78.1712CPU,2G内存node002172.31.78.1722CPU,2G内存node003172.31.78.1692CPU,2G内存
5、准备yum源(以下步骤所有node节点进行操作,此处以node001为例)
使node节点的yum源由registry提供
[root@node001 ~
]
[local_repo
]
name
=localrepo
baseurl
=ftp://172.31.78.167/localrepo
enabled
=1
gpgcheck
=0
在node节点验证软件包
[root@node001 ~
]
[root@node001 ~
]
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
docker-ce.x86_64 18.06.3.ce-3.el7 @local_repo
[root@node001 ~
]
开启路由转发
[root@node001 ~
]
[root@node001 ~
]
net.ipv6.conf.all.disable_ipv6
= 1
net.ipv6.conf.default.disable_ipv6
= 1
net.ipv6.conf.lo.disable_ipv6
= 1
vm.swappiness
= 0
net.ipv4.neigh.default.gc_stale_time
= 120
net.ipv4.conf.all.rp_filter
= 0
net.ipv4.conf.default.rp_filter
= 0
net.ipv4.conf.default.arp_announce
= 2
net.ipv4.conf.lo.arp_announce
= 2
net.ipv4.conf.all.arp_announce
= 2
net.ipv4.tcp_max_tw_buckets
= 5000
net.ipv4.tcp_syncookies
= 1
net.ipv4.tcp_max_syn_backlog
= 1024
net.ipv4.tcp_synack_retries
= 2
kernel.sysrq
= 1
net.ipv4.ip_forward
= 1
起服务
[root@node002 ~
]
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@node002 ~
]
docker0: flags
=4099
<UP,BROADCAST,MULTICAST
> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:41:d1:0c:99 txqueuelen 0
(Ethernet
)
RX packets 0 bytes 0
(0.0 B
)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0
(0.0 B
)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags
=4163
<UP,BROADCAST,RUNNING,MULTICAST
> mtu 1500
inet 172.31.78.172 netmask 255.255.240.0 broadcast 172.31.79.255
ether 00:16:3e:12:b3:30 txqueuelen 1000
(Ethernet
)
RX packets 75855 bytes 109029284
(103.9 MiB
)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8987 bytes 1357333
(1.2 MiB
)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags
=73
<UP,LOOPBACK,RUNNING
> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1
(Local Loopback
)
RX packets 0 bytes 0
(0.0 B
)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0
(0.0 B
)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@node002 ~
]
Client:
Version: 18.06.3-ce
API version: 1.38
Go version: go1.10.3
Git commit: d7080c1
Built: Wed Feb 20 02:26:51 2019
OS/Arch: linux/amd64
Experimental:
false
Server:
Engine:
Version: 18.06.3-ce
API version: 1.38
(minimum version 1.12
)
Go version: go1.10.3
Git commit: d7080c1
Built: Wed Feb 20 02:28:17 2019
OS/Arch: linux/amd64
Experimental:
false
开启FORWARD默认规则
[root@node001 ~
]
ExecStartPost
=/sbin/iptables -P FORWARD ACCEPT
[root@node001 ~
]
[root@node001 ~
]
[root@node001 ~
]
Chain FORWARD
(policy ACCEPT
)
target prot opt
source destination
docker-USER all -- 0.0.0.0/0 0.0.0.0/0
docker-ISOLATION-STAGE-1 all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
docker all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
镜像管理&容器管理
docker镜像管理命令
镜像管理命令说明
docker images查看本机镜像docker search 镜像名称从官方仓库查找镜像docker pull 镜像名称:标签下载镜像docker push 镜像名称:标签上传镜像docker save 镜像名称:标签 -o 备份镜像名称.tar备份镜像为tar包docker load -i 备份镜像名称导入备份的镜像文件docker rmi 镜像名称:标签删除镜像(必须先删除该镜像启动的所有容器)docker history 镜像名称:标签查看镜像的制作历史docker inspect 镜像名称:标签查看镜像的详细信息docker tag 镜像名称:标签 新的镜像名称:新的标签创建新的镜像名称和标签docker tar相当于ln链接,不占用系统空间
导入 centos nginx redis ubuntu 四个镜像到 node 节点(使用 lftp 或 scp 均可)
[root@registry localrepo
]
docker docker-images k8s repodata
[root@node001 ~
]
[root@node001 ~
]
lftp 172.31.78.167:~
> ls
drwxr-xr-x 6 0 0 4096 Oct 19 05:52 localrepo
drwxr-xr-x 2 0 0 4096 Apr 01 2020 pub
lftp 172.31.78.167:/
> cd localrepo/
lftp 172.31.78.167:/localrepo
> ls
drwxr-xr-x 2 0 0 4096 Oct 14 07:37 docker
drwxr-xr-x 2 0 0 4096 Oct 19 05:53 docker-images
drwxr-xr-x 4 0 0 4096 Oct 19 02:55 k8s
drwxr-xr-x 2 0 0 4096 Oct 19 02:56 repodata
lftp 172.31.78.167:/localrepo
> mirror docker-images/
.
Total: 1 directory, 6 files, 0 symlinks
New: 6 files, 0 symlinks
180970096 bytes transferred
To be removed: 6 directories, 8 files, 0 symlinks
[root@node001 ~
]
centos.tar.gz info.html info.php nginx.tar.gz redis.tar.gz ubuntu.tar.gz
[root@node001 ~
]
[root@node001 ~
]
[root@node001 ~
]
[root@node001 ~
]
[root@node001 ~
]
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 82629e941a38 21 months ago 95MB
nginx latest 42b4762643dc 21 months ago 109MB
ubuntu latest 20bb25d32758 21 months ago 87.5MB
centos latest 76d6bc25b8a5 2 years ago 200MB
[root@node001 ~
]
[root@node001 ~
]
[root@node001 ~
]
[
{
"Id": "sha256:76d6bc25b8a5685072a1a99d9ac7c2e52dc3070081c872034a1889ca2d4bcf8c",
"RepoTags": [
"centos:latest"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2018-10-09T18:20:34.032588496Z",
"Container": "88a04a5d6cdb307c049d5a4053fbb504c0f956a2430a5f58bced4aea06c59c2e",
"ContainerConfig": {
"Hostname": "88a04a5d6cdb",
"Domainname": "",
......
[root@node001 ~
]
IMAGE CREATED CREATED BY SIZE COMMENT
42b4762643dc 21 months ago /bin/sh -c
<missing
> 21 months ago /bin/sh -c
<missing
> 21 months ago /bin/sh -c
<missing
> 21 months ago /bin/sh -c
ln -sf /dev/stdout /var/log/nginx… 22B
<missing
> 21 months ago /bin/sh -c
set -x
&& apt-get update
&& apt… 53.9MB
<missing
> 21 months ago /bin/sh -c
<missing
> 21 months ago /bin/sh -c
<missing
> 21 months ago /bin/sh -c
<missing
> 21 months ago /bin/sh -c
<missing
> 21 months ago /bin/sh -c
[root@node001 ~
]
[root@node001 ~
]
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
busybox Busybox base image. 2014
[OK
]
progrium/busybox 70
[OK
]
radial/busyboxplus Full-chain, Internet enabled, busybox made f… 33
[OK
]
yauritux/busybox-curl Busybox with CURL 10
arm32v7/busybox Busybox base image. 8
armhf/busybox Busybox base image. 6
arm64v8/busybox Busybox base image. 4
odise/busybox-curl 4
[OK
]
s390x/busybox Busybox base image. 2
prom/busybox Prometheus Busybox docker base images 2
[OK
]
arm32v6/busybox Busybox base image. 2
joeshaw/busybox-nonroot Busybox container with non-root user nobody 2
aarch64/busybox Busybox base image. 2
i386/busybox Busybox base image. 2
p7ppc64/busybox Busybox base image
for ppc64. 2
vukomir/busybox busybox and
curl 1
spotify/busybox Spotify fork of https://hub.docker.com/_/bus… 1
ppc64le/busybox Busybox base image. 1
sou856099/busybox 0
amd64/busybox Busybox base image. 0
concourse/busyboxplus 0
arm32v5/busybox Busybox base image. 0
emccorp/busybox Busybox 0
e2eteam/busybox 0
ggtools/busybox-ubuntu Busybox ubuntu version with extra goodies 0
[OK
]
[root@node001 ~
]
docker.io/library/busybox:latest
[root@node001 ~
]
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest f0b02e9d092d 5 days ago 1.23MB
docker容器管理命令
容器管理命令说明
docker run -it(d) 镜像名称:标签 启动命令创建启动并进入一个容器,后台容器使用参数 ddocker ps查看容器 -a 所有容器,包含未启动的,-q 只显示iddocker rm 容器ID-f 强制删除,支持命令重入docker start|stop|restart 容器id启动、停止、重启容器docker cp 本机文件路径 容器id:容器内路径把本机文件拷贝到容器内(上传)docker cp 容器id:容器内路径 本机文件路径把容器内文件拷贝到本机(下载)docker inspect 容器ID查看容器的详细信息docker attach 容器id进入容器的默认进程,退出后容器会关闭docker attach 容器id [ctrl+p, ctrl+q]进入容器以后,退出容器而不关闭容器的方法docker exec -it 容器id 启动命令进入容器新的进程,退出后容器不会关闭
docker run 启动一个新的容器
-i 交互式,-t 终端, -d 在后台启动
/bin/bash是容器内的命令,每一个容器都有一个默认的启动命令,可以用docker inspect的cmd字段查看容器本身默认的启动命令busybox,ubuntu,centos是交互式容器,Nginx,redis是服务器式容器,默认的启动命令是容器
默认启动服务
docker.io/redis 服务型容器docker.io/nginx 服务型容器想进入交互式后加"/bin/bash"
使用attach进入容器后,不能使用exit或者Ctrl+c退出终端,不然这个正在运行的终端就挂了,因为它的进程数pid只有1个 必须使用Ctrl+pq 退出终端!!! 系统中有一个上帝 pid==1 (上帝仅仅用来排错,维护用exec命令) 系统诞生出现上帝,如果上帝死亡,那么系统就挂掉了
[root@node001 ~
]
bde8103e05c233a75b4e1df4d7fe4e8dd63a56e3f79eee243b1616400b6fcc49
[root@node001 ~
]
[root@d48af17879e6 /
]
[root@node001 ~
]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d48af17879e6 centos:latest
"/bin/bash" About a minute ago Up About a minute myos
bde8103e05c2 nginx:latest
"nginx -g 'daemon of…" 3 minutes ago Up 3 minutes 80/tcp elastic_turing
[root@node001 ~
]
d48af17879e6
bde8103e05c2
[root@node001 ~
]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d48af17879e6 centos:latest
"/bin/bash" 3 minutes ago Up 3 minutes myos
bde8103e05c2 nginx:latest
"nginx -g 'daemon of…" 4 minutes ago Up 4 minutes 80/tcp elastic_turing
[root@node001 ~
]
[root@d48af17879e6 /
]
exit
每一次执行docker run都会启动一个新的容器
例:在容器内删掉/ ,再次在终端进入容器依旧可以执行命令
[root@d48af17879e6 ~
]
[root@d48af17879e6 ~
]
bash: /usr/bin/ls: No such
file or directory
[root@node001 ~
]
[root@28750a992e3c /
]
bin etc lib media opt root sbin sys usr
dev home lib64 mnt proc run srv tmp var
[root@node001 ~
]
[
{
"Id": "bde8103e05c233a75b4e1df4d7fe4e8dd63a56e3f79eee243b1616400b6fcc49",
"Created": "2020-10-19T06:24:04.026872706Z",
"Path": "nginx",
"Args": [
"-g",
"daemon off;"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
......
"IPAddress": "172.17.0.2",
......
[root@node001 ~
]
<!DOCTYPE html
>
<html
>
<head
>
<title
>Welcome to nginx
!</title
>
<style
>
body
{
width: 35em
;
margin: 0 auto
;
font-family: Tahoma, Verdana, Arial, sans-serif
;
}
</style
>
</head
>
<body
>
<h1
>Welcome to nginx
!</h1
>
<p
>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
</p
>
<p
>For online documentation and support please refer to
<a href
="http://nginx.org/">nginx.org
</a
>.
<br/
>
Commercial support is available at
<a href
="http://nginx.com/">nginx.com
</a
>.
</p
>
<p
><em
>Thank you
for using nginx.
</em
></p
>
</body
>
</html
>
[root@node001 ~
]
root@bde8103e05c2:/
19 root /usr/share/nginx/html
;
[root@node001 ~
]
[root@node001 ~
]
<h1
>
hi,this is xiaotiantian
's test
goooooood luck!
[root@node001 ~]# docker cp ./index.html b:/usr/share/nginx/html/index.html
[root@node001 ~]# curl http://172.17.0.2
<h1>
hi,this is xiaotiantian's
test
goooooood luck
!
[root@node001 ~
]
b
[root@node001 ~
]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d48af17879e6 centos:latest
"/bin/bash" 22 minutes ago Exited
(0
) 15 minutes ago myos
[root@node001 ~
]
d48af17879e6
容器内服务安装
[root@node001 ~
]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@node001 ~
]
[root@7193163acab5 /
]
[root@node001 ~
]
[root@7193163acab5 /
]
Complete
!
[root@7193163acab5 /
]
[root@7193163acab5 /
]
[root@7193163acab5 /
]
eth0: flags
=4163
<UP,BROADCAST,RUNNING,MULTICAST
> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0
(Ethernet
)
RX packets 1731 bytes 37378676
(35.6 MiB
)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1328 bytes 75001
(73.2 KiB
)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags
=73
<UP,LOOPBACK,RUNNING
> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1
(Local Loopback
)
RX packets 0 bytes 0
(0.0 B
)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0
(0.0 B
)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@7193163acab5 /
]
Failed to get D-Bus connection: Operation not permitted
[root@node001 ~
]
systemd
(1
)─┬─NetworkManager
(755
)─┬─
{NetworkManager
}(775
)
│ └─
{NetworkManager
}(782
)
├─VGAuthService
(665
)
[root@7193163acab5 /
]
bash
(1
)---pstree
(47
)
[root@7193163acab5 /
]
/usr/lib/systemd/system/htcacheclean.service
[root@7193163acab5 /
]
[Service
]
Type
=notify
EnvironmentFile
=/etc/sysconfig/httpd
ExecStart
=/usr/sbin/httpd
$OPTIONS -DFOREGROUND
ExecReload
=/usr/sbin/httpd
$OPTIONS -k graceful
ExecStop
=/bin/kill -WINCH
${MAINPID}
[root@7193163acab5 /
]
AH00558: httpd: Could not reliably determine the server
's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[root@7193163acab5 /
]
ServerName localhost:80
[root@7193163acab5 /
]
[root@node001 ~
]
hello xiaotian
打包镜像
自定义镜像:
docker commit:
使用镜像启动容器,在该容器基础上做修改另存为一个新镜像
创建自定义镜像
[root@node001 ~
]
[root@6b5708c6e410 /
]
[root@6b5708c6e410 /
]
[root@6b5708c6e410 /
]
[root@node001 ~
]
[root@6b5708c6e410 /
]
[root@6b5708c6e410 /
]
exit
[root@node001 ~
]
sha256:631f6b81c82e79a11623b369daae8dae99f0a9f67b90fd2e0e7c85792a8b8c54
dockerfile打包镜像
dockerfile语法
语法指令语法说明
FROM基础镜像RUN制作镜像时执行的命令,可以有多个ADD复制文件到镜像,自动解压COPY复制文件到镜像,不解压EXPOSE声明开放的端口ENV设置容器启动后的环境变量WORKDIR定义容器默认工作目录(等于cd)CMD容器启动时执行的命令,仅可以有一条CMD
使用dockerfile创建镜像
docker build -t 镜像名称:标签 dockerfile所在目录
制作apache镜像
CMD 指令可以查看 service 文件的启动命令 ExecStart(/lib/systemd/system/httpd.service),CMD命令只可以有一条,例在终端上输入ls -l -a ,在dockerfile中CMD["/bin/ls","-l","-a"]
ENV 环境变量查询服务文件中的环境变量配置文件 EnvironmentFile 指定的文件内容
RUN相当于远程执行命令,远程时无法执行cd命令,在dockerfile中WORKDIR相当于cd命令
[root@node001 ~
]
[root@node001 web
]
FROM myod:latest
RUN yum -y
install httpd php
ENV LANG
=C
ADD test.tar.gz /var/www/html
WORKDIR /var/www/html
EXPOSE 80
CMD
["/usr/sbin/httpd",
"-DFOREGROUND"]
[root@node001 web
]
[root@node001 web
]
10.test 1.test 2.test 3.test 4.test 5.test 6.test 7.test 8.test 9.test dockerfile
[root@node001 web
]
10.test/
1.test/
2.test/
3.test/
4.test/
5.test/
6.test/
7.test/
8.test/
9.test/
[root@node001 web
]
10.test 1.test 2.test 3.test 4.test 5.test 6.test 7.test 8.test 9.test dockerfile test.tar.gz
[root@node001 web
]
Successfully tagged myos:httpd
查看与验证镜像
[root@node001 web
]
REPOSITORY TAG IMAGE ID CREATED SIZE
myos httpd b7b8c5d39b38 49 seconds ago 596MB
myod latest 631f6b81c82e 35 minutes ago 457MB
redis latest 82629e941a38 21 months ago 95MB
nginx latest 42b4762643dc 21 months ago 109MB
newubun newlatest 20bb25d32758 21 months ago 87.5MB
ubuntu latest 20bb25d32758 21 months ago 87.5MB
centos latest 76d6bc25b8a5 2 years ago 200MB
[root@node001 web
]
6b5708c6e410
7193163acab5
[root@node001 web
]
c837007e48c46531919bc90c0b648c3d2eb6b97784b1975cc2e243708dbd5bbd
[root@node001 web
]
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
[root@node001 web
]
HTTP/1.1 403 Forbidden
Date: Mon, 19 Oct 2020 08:40:27 GMT
Server: Apache/2.4.6
(CentOS
) PHP/5.4.16
Last-Modified: Thu, 16 Oct 2014 13:20:58 GMT
ETag:
"1321-5058a1e728280"
Accept-Ranges: bytes
Content-Length: 4897
Content-Type: text/html
; charset
=UTF-8
制作php镜像
[root@node001 ~
]
[root@node001 ~
]
[root@node001 php
]
[root@node001 php
]
12: listen
= 0.0.0.0:9000
24:
;listen.allowed_clients
= 127.0.0.1
[root@node001 php
]
[root@node001 php
]
FROM myod:latest
RUN yum -y
install php-fpm
COPY www.conf /etc/php-fpm.d/www.conf
EXPOSE 9000
WORKDIR /usr/local/nginx/html
COPY info.php info.php
CMD
["/usr/sbin/php-fpm",
"--nodemonize"]
[root@node001 php
]
Successfully tagged myos:php-fpm
[root@node001 php
]
REPOSITORY TAG IMAGE ID CREATED SIZE
myos php-fpm 87d6d2559112 About a minute ago 587MB
myos httpd b7b8c5d39b38 24 minutes ago 596MB
myod latest 631f6b81c82e About an hour ago 457MB
redis latest 82629e941a38 21 months ago 95MB
nginx latest 42b4762643dc 21 months ago 109MB
newubun newlatest 20bb25d32758 21 months ago 87.5MB
ubuntu latest 20bb25d32758 21 months ago 87.5MB
centos latest 76d6bc25b8a5 2 years ago 200MB
制作nginx镜像
[root@node001 ~
]
[root@node001 nginx
]
[root@node001 nginx
]
[root@node001 nginx
]
nginx-1.18.0.tar.gz
[root@node001 nginx
]
[root@node001 nginx
]
[root@node001 nginx-1.18.0
]
[root@node001 nginx-1.18.0
]
[root@node001 nginx-1.18.0
]
[root@node001 local
]
[root@node001 local
]
[root@node001 nginx
]
[root@node001 nginx
]
FROM myod:latest
RUN yum -y
install pcre openssl
&& useradd nginx
ADD nginx.tar.gz /usr/local
EXPOSE 80
WORKDIR /usr/local/nginx/html
CMD
["/usr/local/nginx/sbin/nginx",
"-g",
"daemon off"]
[root@node001 nginx
]
Successfully tagged myos:nginx
[root@node001 nginx
]
REPOSITORY TAG IMAGE ID CREATED SIZE
myos nginx af9a004da132 About a minute ago 556MB
myos php-fpm 87d6d2559112 About an hour ago 587MB
myos httpd b7b8c5d39b38 2 hours ago 596MB
myod latest 631f6b81c82e 2 hours ago 457MB
redis latest 82629e941a38 21 months ago 95MB
nginx latest 42b4762643dc 21 months ago 109MB
newubun newlatest 20bb25d32758 21 months ago 87.5MB
ubuntu latest 20bb25d32758 21 months ago 87.5MB
centos latest 76d6bc25b8a5 2 years ago 200MB
对外发布
如果是云主机可以将公网ip绑定在该主机上
docker run -itd -p 宿主机端口:容器端口 镜像名称:标签
[root@node001 web
]
80462e6ccdc285c5621f73d861f2b3e11297f47482c9fb0ec507e651a58cd64b
[root@node001 web
]
<h1
>
hi,xiaotian
happy
!!!
[root@node001 web
]
[root@node001 web
]
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
[root@node001 web
]
HTTP/1.1 200 OK
Date: Tue, 20 Oct 2020 02:23:44 GMT
Server: Apache/2.4.6
(CentOS
) PHP/5.4.16
Last-Modified: Tue, 20 Oct 2020 02:08:33 GMT
ETag:
"1a-5b210b5362a40"
Accept-Ranges: bytes
Content-Length: 26
Content-Type: text/html
; charset
=UTF-8
[root@node001 web
]
<h1
>
hi,xiaotian
happy
!!!
[root@node001 ~
]
80462e6ccdc2
如果报错如下:
[root@node001 ~
]
nginx:
[emerg
] unexpected end of parameter, expecting
";" in command line
上面提示缺少”
;”,很有可能是使用方式导致nginx.conf出现问题。所以直接修改nginx.conf将daemon off的方式写入,算是一种暂定对应方法。
- 修改步骤:
[root@node001 nginx
]
FROM myod:latest
RUN yum -y
install pcre openssl
&& useradd nginx
ADD nginx.tar.gz /usr/local
RUN
echo "daemon off" >> /usr/local/nginx/conf/nginx.conf
EXPOSE 80
WORKDIR /usr/local/nginx/html
CMD
["/usr/local/nginx/sbin/nginx",
"-g",
"daemon off"]
[root@node001 nginx
]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
27ac0a011c0a myos:nginx
"/usr/local/nginx/sb…" 9 minutes ago Exited
(1
) 9 minutes ago serene_tereshkova
c837007e48c4 myos:httpd
"/usr/sbin/httpd -DF…" 22 hours ago Up 4 hours 80/tcp competent_heisenberg
[root@node001 nginx
]
2
[root@node001 nginx
]
Untagged: myos:nginx
Deleted: sha256:af9a004da13205dc9baf4cf67648cd255ec5ee6c47fa602663e0c79c7b06f715
Deleted: sha256:3300c38105d26c9dfdc3d3b1aea3758fffa4f1dee08c5817abb6275d7f8f43f9
Deleted: sha256:ad28e4a88d3bd5f9bdb3b919c315b1586b79d8c35f93dbd21eae6a386c2def32
Deleted: sha256:896b695a71f823bc570e0c4b31650a15120277e18f152dce8b504cde04d02f18
Deleted: sha256:8db758fd1e858f5c62604b18c68cefd1b6762b4a2aa9a1ca97432224923967d0
Deleted: sha256:9b54c742dc484212cb9a3fc76a3894d0115c99f1e0163a05aaebcbc1ae833b69
Deleted: sha256:c6b19af4e4b9b3cd3611ac77ed66c5dbaa0c924f22eeb75dc1bb340fef7b747b
[root@node001 nginx
]
[root@registry ~
]
baefad2e23e32d2309f7ea58f411233a1014adfc41990e5d3d60e86b4a2e2845
[root@registry ~
]
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
[root@registry ~
]
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Tue, 20 Oct 2020 06:52:43 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 19 Oct 2020 09:24:22 GMT
Connection: keep-alive
ETag:
"5f8d5b46-264"
Accept-Ranges: bytes
网络架构间通信
#mermaid-svg-PhO6Z2ROoQsZD1dS .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .label text{fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .node rect,#mermaid-svg-PhO6Z2ROoQsZD1dS .node circle,#mermaid-svg-PhO6Z2ROoQsZD1dS .node ellipse,#mermaid-svg-PhO6Z2ROoQsZD1dS .node polygon,#mermaid-svg-PhO6Z2ROoQsZD1dS .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-PhO6Z2ROoQsZD1dS .node .label{text-align:center;fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .node.clickable{cursor:pointer}#mermaid-svg-PhO6Z2ROoQsZD1dS .arrowheadPath{fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-PhO6Z2ROoQsZD1dS .flowchart-link{stroke:#333;fill:none}#mermaid-svg-PhO6Z2ROoQsZD1dS .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-PhO6Z2ROoQsZD1dS .edgeLabel rect{opacity:0.9}#mermaid-svg-PhO6Z2ROoQsZD1dS .edgeLabel span{color:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-PhO6Z2ROoQsZD1dS .cluster text{fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-PhO6Z2ROoQsZD1dS .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-PhO6Z2ROoQsZD1dS text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-PhO6Z2ROoQsZD1dS .actor-line{stroke:grey}#mermaid-svg-PhO6Z2ROoQsZD1dS .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .sequenceNumber{fill:#fff}#mermaid-svg-PhO6Z2ROoQsZD1dS #sequencenumber{fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS #crosshead path{fill:#333;stroke:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .messageText{fill:#333;stroke:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-PhO6Z2ROoQsZD1dS .labelText,#mermaid-svg-PhO6Z2ROoQsZD1dS .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-PhO6Z2ROoQsZD1dS .loopText,#mermaid-svg-PhO6Z2ROoQsZD1dS .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-PhO6Z2ROoQsZD1dS .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-PhO6Z2ROoQsZD1dS .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-PhO6Z2ROoQsZD1dS .noteText,#mermaid-svg-PhO6Z2ROoQsZD1dS .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-PhO6Z2ROoQsZD1dS .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-PhO6Z2ROoQsZD1dS .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-PhO6Z2ROoQsZD1dS .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-PhO6Z2ROoQsZD1dS .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PhO6Z2ROoQsZD1dS .section{stroke:none;opacity:0.2}#mermaid-svg-PhO6Z2ROoQsZD1dS .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-PhO6Z2ROoQsZD1dS .section2{fill:#fff400}#mermaid-svg-PhO6Z2ROoQsZD1dS .section1,#mermaid-svg-PhO6Z2ROoQsZD1dS .section3{fill:#fff;opacity:0.2}#mermaid-svg-PhO6Z2ROoQsZD1dS .sectionTitle0{fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .sectionTitle1{fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .sectionTitle2{fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .sectionTitle3{fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PhO6Z2ROoQsZD1dS .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-PhO6Z2ROoQsZD1dS .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PhO6Z2ROoQsZD1dS .grid path{stroke-width:0}#mermaid-svg-PhO6Z2ROoQsZD1dS .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-PhO6Z2ROoQsZD1dS .task{stroke-width:2}#mermaid-svg-PhO6Z2ROoQsZD1dS .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PhO6Z2ROoQsZD1dS .taskText:not([font-size]){font-size:11px}#mermaid-svg-PhO6Z2ROoQsZD1dS .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PhO6Z2ROoQsZD1dS .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-PhO6Z2ROoQsZD1dS .task.clickable{cursor:pointer}#mermaid-svg-PhO6Z2ROoQsZD1dS .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-PhO6Z2ROoQsZD1dS .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-PhO6Z2ROoQsZD1dS .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-PhO6Z2ROoQsZD1dS .taskText0,#mermaid-svg-PhO6Z2ROoQsZD1dS .taskText1,#mermaid-svg-PhO6Z2ROoQsZD1dS .taskText2,#mermaid-svg-PhO6Z2ROoQsZD1dS .taskText3{fill:#fff}#mermaid-svg-PhO6Z2ROoQsZD1dS .task0,#mermaid-svg-PhO6Z2ROoQsZD1dS .task1,#mermaid-svg-PhO6Z2ROoQsZD1dS .task2,#mermaid-svg-PhO6Z2ROoQsZD1dS .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-PhO6Z2ROoQsZD1dS .taskTextOutside0,#mermaid-svg-PhO6Z2ROoQsZD1dS .taskTextOutside2{fill:#000}#mermaid-svg-PhO6Z2ROoQsZD1dS .taskTextOutside1,#mermaid-svg-PhO6Z2ROoQsZD1dS .taskTextOutside3{fill:#000}#mermaid-svg-PhO6Z2ROoQsZD1dS .active0,#mermaid-svg-PhO6Z2ROoQsZD1dS .active1,#mermaid-svg-PhO6Z2ROoQsZD1dS .active2,#mermaid-svg-PhO6Z2ROoQsZD1dS .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-PhO6Z2ROoQsZD1dS .activeText0,#mermaid-svg-PhO6Z2ROoQsZD1dS .activeText1,#mermaid-svg-PhO6Z2ROoQsZD1dS .activeText2,#mermaid-svg-PhO6Z2ROoQsZD1dS .activeText3{fill:#000 !important}#mermaid-svg-PhO6Z2ROoQsZD1dS .done0,#mermaid-svg-PhO6Z2ROoQsZD1dS .done1,#mermaid-svg-PhO6Z2ROoQsZD1dS .done2,#mermaid-svg-PhO6Z2ROoQsZD1dS .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-PhO6Z2ROoQsZD1dS .doneText0,#mermaid-svg-PhO6Z2ROoQsZD1dS .doneText1,#mermaid-svg-PhO6Z2ROoQsZD1dS .doneText2,#mermaid-svg-PhO6Z2ROoQsZD1dS .doneText3{fill:#000 !important}#mermaid-svg-PhO6Z2ROoQsZD1dS .crit0,#mermaid-svg-PhO6Z2ROoQsZD1dS .crit1,#mermaid-svg-PhO6Z2ROoQsZD1dS .crit2,#mermaid-svg-PhO6Z2ROoQsZD1dS .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-PhO6Z2ROoQsZD1dS .activeCrit0,#mermaid-svg-PhO6Z2ROoQsZD1dS .activeCrit1,#mermaid-svg-PhO6Z2ROoQsZD1dS .activeCrit2,#mermaid-svg-PhO6Z2ROoQsZD1dS .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-PhO6Z2ROoQsZD1dS .doneCrit0,#mermaid-svg-PhO6Z2ROoQsZD1dS .doneCrit1,#mermaid-svg-PhO6Z2ROoQsZD1dS .doneCrit2,#mermaid-svg-PhO6Z2ROoQsZD1dS .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-PhO6Z2ROoQsZD1dS .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-PhO6Z2ROoQsZD1dS .milestoneText{font-style:italic}#mermaid-svg-PhO6Z2ROoQsZD1dS .doneCritText0,#mermaid-svg-PhO6Z2ROoQsZD1dS .doneCritText1,#mermaid-svg-PhO6Z2ROoQsZD1dS .doneCritText2,#mermaid-svg-PhO6Z2ROoQsZD1dS .doneCritText3{fill:#000 !important}#mermaid-svg-PhO6Z2ROoQsZD1dS .activeCritText0,#mermaid-svg-PhO6Z2ROoQsZD1dS .activeCritText1,#mermaid-svg-PhO6Z2ROoQsZD1dS .activeCritText2,#mermaid-svg-PhO6Z2ROoQsZD1dS .activeCritText3{fill:#000 !important}#mermaid-svg-PhO6Z2ROoQsZD1dS .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PhO6Z2ROoQsZD1dS g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-PhO6Z2ROoQsZD1dS g.classGroup text .title{font-weight:bolder}#mermaid-svg-PhO6Z2ROoQsZD1dS g.clickable{cursor:pointer}#mermaid-svg-PhO6Z2ROoQsZD1dS g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-PhO6Z2ROoQsZD1dS g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-PhO6Z2ROoQsZD1dS .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-PhO6Z2ROoQsZD1dS .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-PhO6Z2ROoQsZD1dS .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-PhO6Z2ROoQsZD1dS .dashed-line{stroke-dasharray:3}#mermaid-svg-PhO6Z2ROoQsZD1dS #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PhO6Z2ROoQsZD1dS #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PhO6Z2ROoQsZD1dS #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-PhO6Z2ROoQsZD1dS #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-PhO6Z2ROoQsZD1dS #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PhO6Z2ROoQsZD1dS #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PhO6Z2ROoQsZD1dS #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PhO6Z2ROoQsZD1dS #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PhO6Z2ROoQsZD1dS .commit-id,#mermaid-svg-PhO6Z2ROoQsZD1dS .commit-msg,#mermaid-svg-PhO6Z2ROoQsZD1dS .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PhO6Z2ROoQsZD1dS .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PhO6Z2ROoQsZD1dS .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PhO6Z2ROoQsZD1dS g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PhO6Z2ROoQsZD1dS g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-PhO6Z2ROoQsZD1dS g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-PhO6Z2ROoQsZD1dS g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-PhO6Z2ROoQsZD1dS g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-PhO6Z2ROoQsZD1dS .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-PhO6Z2ROoQsZD1dS .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-PhO6Z2ROoQsZD1dS .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-PhO6Z2ROoQsZD1dS .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-PhO6Z2ROoQsZD1dS .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-PhO6Z2ROoQsZD1dS .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-PhO6Z2ROoQsZD1dS .edgeLabel text{fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PhO6Z2ROoQsZD1dS .node circle.state-start{fill:black;stroke:black}#mermaid-svg-PhO6Z2ROoQsZD1dS .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-PhO6Z2ROoQsZD1dS #statediagram-barbEnd{fill:#9370db}#mermaid-svg-PhO6Z2ROoQsZD1dS .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-PhO6Z2ROoQsZD1dS .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-PhO6Z2ROoQsZD1dS .statediagram-state .divider{stroke:#9370db}#mermaid-svg-PhO6Z2ROoQsZD1dS .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-PhO6Z2ROoQsZD1dS .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-PhO6Z2ROoQsZD1dS .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-PhO6Z2ROoQsZD1dS .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-PhO6Z2ROoQsZD1dS .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-PhO6Z2ROoQsZD1dS .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-PhO6Z2ROoQsZD1dS .note-edge{stroke-dasharray:5}#mermaid-svg-PhO6Z2ROoQsZD1dS .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-PhO6Z2ROoQsZD1dS .error-icon{fill:#522}#mermaid-svg-PhO6Z2ROoQsZD1dS .error-text{fill:#522;stroke:#522}#mermaid-svg-PhO6Z2ROoQsZD1dS .edge-thickness-normal{stroke-width:2px}#mermaid-svg-PhO6Z2ROoQsZD1dS .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-PhO6Z2ROoQsZD1dS .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-PhO6Z2ROoQsZD1dS .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-PhO6Z2ROoQsZD1dS .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-PhO6Z2ROoQsZD1dS .marker{fill:#333}#mermaid-svg-PhO6Z2ROoQsZD1dS .marker.cross{stroke:#333}
:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}
#mermaid-svg-PhO6Z2ROoQsZD1dS {
color: rgba(0, 0, 0, 0.75);
font: ;
}
node001
容器1
容器2
共享网络
Nginx
PHP
共享存储卷
用户
实验步骤
[root@node001 ~
]
[root@node001 ~
]
[root@node001 ~
]
[root@node001 ~
]
location ~ \.php$
{
root html
;
fastcgi_pass 127.0.0.1:9000
;
fastcgi_index index.php
;
include fastcgi.conf
;
}
[root@node001 ~
]
8a631b473458659bd54ed9b4b51ada5520272e991ac740fe369b5b32f02bcd58
[root@node001 ~
]
5a219b36965f2c3cfa7b208b424e8c04bf7ab15e5743bbad84a48ab4e3ea5e53
[root@node001 ~
]
"IPAddress": "172.17.0.2",
[root@node001 ~
]
<html
>
<marquee behavior
="alternate">
<font size
="12px" color
=
</marquee
>
</html
>
[root@node001 ~
]
<pre
>
Array
(
[REMOTE_ADDR
] => 172.17.0.2
[REQUEST_METHOD
] => GET
[HTTP_USER_AGENT
] => curl/7.29.0
[REQUEST_URI
] => /info.php
)
php_host: f705f89b45f9
1229
docker私有仓库
#mermaid-svg-0K6JMM41SsDCxZos .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-0K6JMM41SsDCxZos .label text{fill:#333}#mermaid-svg-0K6JMM41SsDCxZos .node rect,#mermaid-svg-0K6JMM41SsDCxZos .node circle,#mermaid-svg-0K6JMM41SsDCxZos .node ellipse,#mermaid-svg-0K6JMM41SsDCxZos .node polygon,#mermaid-svg-0K6JMM41SsDCxZos .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-0K6JMM41SsDCxZos .node .label{text-align:center;fill:#333}#mermaid-svg-0K6JMM41SsDCxZos .node.clickable{cursor:pointer}#mermaid-svg-0K6JMM41SsDCxZos .arrowheadPath{fill:#333}#mermaid-svg-0K6JMM41SsDCxZos .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-0K6JMM41SsDCxZos .flowchart-link{stroke:#333;fill:none}#mermaid-svg-0K6JMM41SsDCxZos .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-0K6JMM41SsDCxZos .edgeLabel rect{opacity:0.9}#mermaid-svg-0K6JMM41SsDCxZos .edgeLabel span{color:#333}#mermaid-svg-0K6JMM41SsDCxZos .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-0K6JMM41SsDCxZos .cluster text{fill:#333}#mermaid-svg-0K6JMM41SsDCxZos div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-0K6JMM41SsDCxZos .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-0K6JMM41SsDCxZos text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-0K6JMM41SsDCxZos .actor-line{stroke:grey}#mermaid-svg-0K6JMM41SsDCxZos .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-0K6JMM41SsDCxZos .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-0K6JMM41SsDCxZos #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-0K6JMM41SsDCxZos .sequenceNumber{fill:#fff}#mermaid-svg-0K6JMM41SsDCxZos #sequencenumber{fill:#333}#mermaid-svg-0K6JMM41SsDCxZos #crosshead path{fill:#333;stroke:#333}#mermaid-svg-0K6JMM41SsDCxZos .messageText{fill:#333;stroke:#333}#mermaid-svg-0K6JMM41SsDCxZos .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-0K6JMM41SsDCxZos .labelText,#mermaid-svg-0K6JMM41SsDCxZos .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-0K6JMM41SsDCxZos .loopText,#mermaid-svg-0K6JMM41SsDCxZos .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-0K6JMM41SsDCxZos .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-0K6JMM41SsDCxZos .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-0K6JMM41SsDCxZos .noteText,#mermaid-svg-0K6JMM41SsDCxZos .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-0K6JMM41SsDCxZos .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-0K6JMM41SsDCxZos .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-0K6JMM41SsDCxZos .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-0K6JMM41SsDCxZos .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-0K6JMM41SsDCxZos .section{stroke:none;opacity:0.2}#mermaid-svg-0K6JMM41SsDCxZos .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-0K6JMM41SsDCxZos .section2{fill:#fff400}#mermaid-svg-0K6JMM41SsDCxZos .section1,#mermaid-svg-0K6JMM41SsDCxZos .section3{fill:#fff;opacity:0.2}#mermaid-svg-0K6JMM41SsDCxZos .sectionTitle0{fill:#333}#mermaid-svg-0K6JMM41SsDCxZos .sectionTitle1{fill:#333}#mermaid-svg-0K6JMM41SsDCxZos .sectionTitle2{fill:#333}#mermaid-svg-0K6JMM41SsDCxZos .sectionTitle3{fill:#333}#mermaid-svg-0K6JMM41SsDCxZos .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-0K6JMM41SsDCxZos .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-0K6JMM41SsDCxZos .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-0K6JMM41SsDCxZos .grid path{stroke-width:0}#mermaid-svg-0K6JMM41SsDCxZos .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-0K6JMM41SsDCxZos .task{stroke-width:2}#mermaid-svg-0K6JMM41SsDCxZos .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-0K6JMM41SsDCxZos .taskText:not([font-size]){font-size:11px}#mermaid-svg-0K6JMM41SsDCxZos .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-0K6JMM41SsDCxZos .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-0K6JMM41SsDCxZos .task.clickable{cursor:pointer}#mermaid-svg-0K6JMM41SsDCxZos .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-0K6JMM41SsDCxZos .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-0K6JMM41SsDCxZos .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-0K6JMM41SsDCxZos .taskText0,#mermaid-svg-0K6JMM41SsDCxZos .taskText1,#mermaid-svg-0K6JMM41SsDCxZos .taskText2,#mermaid-svg-0K6JMM41SsDCxZos .taskText3{fill:#fff}#mermaid-svg-0K6JMM41SsDCxZos .task0,#mermaid-svg-0K6JMM41SsDCxZos .task1,#mermaid-svg-0K6JMM41SsDCxZos .task2,#mermaid-svg-0K6JMM41SsDCxZos .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-0K6JMM41SsDCxZos .taskTextOutside0,#mermaid-svg-0K6JMM41SsDCxZos .taskTextOutside2{fill:#000}#mermaid-svg-0K6JMM41SsDCxZos .taskTextOutside1,#mermaid-svg-0K6JMM41SsDCxZos .taskTextOutside3{fill:#000}#mermaid-svg-0K6JMM41SsDCxZos .active0,#mermaid-svg-0K6JMM41SsDCxZos .active1,#mermaid-svg-0K6JMM41SsDCxZos .active2,#mermaid-svg-0K6JMM41SsDCxZos .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-0K6JMM41SsDCxZos .activeText0,#mermaid-svg-0K6JMM41SsDCxZos .activeText1,#mermaid-svg-0K6JMM41SsDCxZos .activeText2,#mermaid-svg-0K6JMM41SsDCxZos .activeText3{fill:#000 !important}#mermaid-svg-0K6JMM41SsDCxZos .done0,#mermaid-svg-0K6JMM41SsDCxZos .done1,#mermaid-svg-0K6JMM41SsDCxZos .done2,#mermaid-svg-0K6JMM41SsDCxZos .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-0K6JMM41SsDCxZos .doneText0,#mermaid-svg-0K6JMM41SsDCxZos .doneText1,#mermaid-svg-0K6JMM41SsDCxZos .doneText2,#mermaid-svg-0K6JMM41SsDCxZos .doneText3{fill:#000 !important}#mermaid-svg-0K6JMM41SsDCxZos .crit0,#mermaid-svg-0K6JMM41SsDCxZos .crit1,#mermaid-svg-0K6JMM41SsDCxZos .crit2,#mermaid-svg-0K6JMM41SsDCxZos .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-0K6JMM41SsDCxZos .activeCrit0,#mermaid-svg-0K6JMM41SsDCxZos .activeCrit1,#mermaid-svg-0K6JMM41SsDCxZos .activeCrit2,#mermaid-svg-0K6JMM41SsDCxZos .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-0K6JMM41SsDCxZos .doneCrit0,#mermaid-svg-0K6JMM41SsDCxZos .doneCrit1,#mermaid-svg-0K6JMM41SsDCxZos .doneCrit2,#mermaid-svg-0K6JMM41SsDCxZos .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-0K6JMM41SsDCxZos .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-0K6JMM41SsDCxZos .milestoneText{font-style:italic}#mermaid-svg-0K6JMM41SsDCxZos .doneCritText0,#mermaid-svg-0K6JMM41SsDCxZos .doneCritText1,#mermaid-svg-0K6JMM41SsDCxZos .doneCritText2,#mermaid-svg-0K6JMM41SsDCxZos .doneCritText3{fill:#000 !important}#mermaid-svg-0K6JMM41SsDCxZos .activeCritText0,#mermaid-svg-0K6JMM41SsDCxZos .activeCritText1,#mermaid-svg-0K6JMM41SsDCxZos .activeCritText2,#mermaid-svg-0K6JMM41SsDCxZos .activeCritText3{fill:#000 !important}#mermaid-svg-0K6JMM41SsDCxZos .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-0K6JMM41SsDCxZos g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-0K6JMM41SsDCxZos g.classGroup text .title{font-weight:bolder}#mermaid-svg-0K6JMM41SsDCxZos g.clickable{cursor:pointer}#mermaid-svg-0K6JMM41SsDCxZos g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-0K6JMM41SsDCxZos g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-0K6JMM41SsDCxZos .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-0K6JMM41SsDCxZos .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-0K6JMM41SsDCxZos .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-0K6JMM41SsDCxZos .dashed-line{stroke-dasharray:3}#mermaid-svg-0K6JMM41SsDCxZos #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-0K6JMM41SsDCxZos #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-0K6JMM41SsDCxZos #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-0K6JMM41SsDCxZos #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-0K6JMM41SsDCxZos #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-0K6JMM41SsDCxZos #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-0K6JMM41SsDCxZos #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-0K6JMM41SsDCxZos #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-0K6JMM41SsDCxZos .commit-id,#mermaid-svg-0K6JMM41SsDCxZos .commit-msg,#mermaid-svg-0K6JMM41SsDCxZos .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-0K6JMM41SsDCxZos .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-0K6JMM41SsDCxZos .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-0K6JMM41SsDCxZos g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-0K6JMM41SsDCxZos g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-0K6JMM41SsDCxZos g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-0K6JMM41SsDCxZos g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-0K6JMM41SsDCxZos g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-0K6JMM41SsDCxZos g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-0K6JMM41SsDCxZos .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-0K6JMM41SsDCxZos .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-0K6JMM41SsDCxZos .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-0K6JMM41SsDCxZos .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-0K6JMM41SsDCxZos .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-0K6JMM41SsDCxZos .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-0K6JMM41SsDCxZos .edgeLabel text{fill:#333}#mermaid-svg-0K6JMM41SsDCxZos .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-0K6JMM41SsDCxZos .node circle.state-start{fill:black;stroke:black}#mermaid-svg-0K6JMM41SsDCxZos .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-0K6JMM41SsDCxZos #statediagram-barbEnd{fill:#9370db}#mermaid-svg-0K6JMM41SsDCxZos .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-0K6JMM41SsDCxZos .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-0K6JMM41SsDCxZos .statediagram-state .divider{stroke:#9370db}#mermaid-svg-0K6JMM41SsDCxZos .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-0K6JMM41SsDCxZos .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-0K6JMM41SsDCxZos .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-0K6JMM41SsDCxZos .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-0K6JMM41SsDCxZos .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-0K6JMM41SsDCxZos .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-0K6JMM41SsDCxZos .note-edge{stroke-dasharray:5}#mermaid-svg-0K6JMM41SsDCxZos .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-0K6JMM41SsDCxZos .error-icon{fill:#522}#mermaid-svg-0K6JMM41SsDCxZos .error-text{fill:#522;stroke:#522}#mermaid-svg-0K6JMM41SsDCxZos .edge-thickness-normal{stroke-width:2px}#mermaid-svg-0K6JMM41SsDCxZos .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-0K6JMM41SsDCxZos .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-0K6JMM41SsDCxZos .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-0K6JMM41SsDCxZos .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-0K6JMM41SsDCxZos .marker{fill:#333}#mermaid-svg-0K6JMM41SsDCxZos .marker.cross{stroke:#333}
:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}
#mermaid-svg-0K6JMM41SsDCxZos {
color: rgba(0, 0, 0, 0.75);
font: ;
}
容器服务器
node001
容器服务器
node002
镜像仓库
自定义私有仓库 步骤:
安装私有仓库(服务端) yum install docker-distribution
启动私有仓库,并设置开机自启动 systemctl start docker-distribution systemctl enable docker-distribution
仓库配置文件及数据存储路径 /etc/docker-distribution/registry/config.yml /var/lib/registry
客户端配置:
修改配置文件 /etc/sysconfig/docker允许非加密方式访问仓库 ADD_REGISTRY=’–add-registry 仓库IP:5000’docker仓库地址 INSECURE_REGISTRY=’–insecure-registry 仓库IP:5000’
重启docker服务 systemctl restart docker
为镜像创建标签:
这里的地址要写上仓库主机的IP地址或者主机名docker tag 镜像:标签 IP:5000/镜像:latest
上传镜像:
上传镜像的标签内包含地址和端口号docker push IP:5000/镜像:latest
远程启动器(docker2)
配置/etc/sysconfig/dockerADD_REGISTRY=’–add-registry 仓库IP:5000’INSECURE_REGISTRY=’–insecure-registry 仓库IP:5000’
重启docker
重启docker服务systemctl restart docker
远程启动镜像
docker run -it [仓库IP:5000]/myos:latest
查看私有镜像仓库中的镜像名称
curl http://仓库IP:5000/v2/_catalog
查看某一仓库的标签
curl http://仓库IP:5000/v2//tags/list
私有仓库数据存储目录
/var/lib/registry
环境准备
主机ip地址配置
registry172.31.78.1672CPU,2G(可以访问外网)node001172.31.78.1712CPU,2Gnode002172.31.78.1722CPU,2G
[root@registry ~
]
[root@registry ~
]
Created symlink from /etc/systemd/system/multi-user.target.wants/docker-distribution.service to /usr/lib/systemd/system/docker-distribution.service.
[root@registry ~
]
tcp LISTEN 0 128
[::
]:5000
[::
]:* users:
(("registry",pid
=32696,fd
=3
))
[root@registry ~
]
{"repositories":
[]}
docker客户端配置
所有node节点都需要配置,这里 node001,node002都要配置
native.cgroupdriver cgroup驱动,docker默认 cgroupfs
registry-mirrors 默认下载仓库,使用国内源能快一点
insecure-registries 私有仓库地址(重点)
1.停止所有容器
[root@node001 ~
]
2.配置/etc/sysconfig/docker
--------------------------------------------------------------------------------
ps:打开/etc/sysconfig/docker配置文件发现改文件是新文件时,是因为在/lib/systemd/system/docker.service里面没有加载配置文件,可以进行如下操作:
[root@node001 ~
]
[Unit
]
Description
=docker Application Container Engine
Documentation
=https://docs.docker.com
After
=network.target docker.socket
Requires
=docker.socket
[Service
]
Type
=notify
EnvironmentFile
=/etc/sysconfig/docker
ExecStart
=/usr/bin/dockerd
$OPTIONS
LimitNOFILE
=1048576
LimitNPROC
=1048576
LimitCORE
=infinity
MountFlags
=slave
[Install
]
WantedBy
=multi-user.target
[root@node001 ~
]
OPTIONS
='-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock'
docker_CERT_PATH
=/etc/docker
INSECURE_REGISTRY
='--insecure-registry dl.dockerpool.com:5000'
重新加载配置,重启docker
[root@node001 ~
]
[root@node001 ~
]
--------------------------------------------------------------------------------
[root@node001 ~
]
11 ADD_REGISTRY
='--add-registry 172.31.78.167:5000'
22 INSECURE_REGISTRY
='--insecure-registry 172.31.78.167:5000'
3.重启服务
[root@node001 ~
]
4.将文件同步给node002主机
[root@node001 ~
]
[root@node002 ~
]
[root@node001 ~
]
5.重启node002主机docker服务
[root@node002 ~
]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@node002 ~
]
ADD_REGISTRY
='--add-registry 172.31.78.167:5000'
INSECURE_REGISTRY
='--insecure-registry 172.31.78.167:5000'
[root@node002 ~
]
6.传镜像到仓库主机
打标签:docker tag myos:latest 172.31.78.167:5000/myos:latest
上传镜像:docker push 172.31.78.167:5000/myos:latest
验证:
curl http://172.31.78.167:5000/v2/_catalog
标签:
curl http://172.31.78.167:5000/v2/myos/tags/list
[root@node001 ~
]
[root@node001 ~
]
The push refers to repository
[172.31.78.167:5000/myos
]
81fd8e9665b8: Pushed
b475f6e98f42: Pushed
6ae11db405e3: Pushed
bcc97fbfc9e1: Pushed
httpd: digest: sha256:87789a4ee1181908fcfce117617746cb987566c56c7d03bacaec4e40a449a13b size: 1160
[root@node001 ~
]
REPOSITORY TAG IMAGE ID CREATED SIZE
myos nginx d052ae1c1170 2 days ago 570MB
myos php-fpm 87d6d2559112 2 days ago 587MB
172.31.78.167:5000/myos httpd b7b8c5d39b38 2 days ago 596MB
myos httpd b7b8c5d39b38 2 days ago 596MB
myod latest 631f6b81c82e 3 days ago 457MB
redis latest 82629e941a38 21 months ago 95MB
nginx latest 42b4762643dc 21 months ago 109MB
ubuntu latest 20bb25d32758 21 months ago 87.5MB
newubun newlatest 20bb25d32758 21 months ago 87.5MB
centos latest 76d6bc25b8a5 2 years ago 200MB
--------------------------------------------------------------------------------
ps:如果在上传镜像时出现如下情况:
Get https://172.31.78.167:5000/v2/: http: server gave HTTP response to HTTPS client
如果/etc/sysconfig/docker配置文件也修改,解决办法:
[root@node001 ~
]
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://hub-mirror.c.163.com"],
"insecure-registries":
["172.31.78.167:5000",
"registry:5000"]
}
重启服务
[root@node001 ~
]
7.访问验证
[root@node002 ~
]
{"repositories":
["myos"]}
[root@node002 ~
]
{"name":"myos",
"tags":
["httpd"]}
[root@node002 ~
]
Unable to
find image
'172.31.78.167:5000/myos:httpd' locally
newhttp: Pulling from myos
7dc0dca2b151: Pull complete
053292d6ec55: Pull complete
cff5257333dd: Pull complete
33a6cf4f7e09: Pull complete
9251ff9c7060: Pull complete
Digest: sha256:45d1296836bd9d4f95faf4251a49e491c3dcd96318d4d209042c5b7834672a4f
Status: Downloaded newer image
for 172.31.78.167:5000/myos:httpd
[root@abde069eb267 html
]