抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

语法script12docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH OPTIONS说明: -L :保持源目标中的链接 实例将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。 ...

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。 Compose 使用的三个步骤: 使用 Dockerfile 定义应用程序的环境。 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境...

1)在使用docker run启动容器时,使用–restart参数来设置:

–restart具体参数值详细信息:

no -  容器退出时,不重启容器;

on-failure - 只有在非0状态退出时才从新启动容器;

always - 无论退出状态是如何,都重启容器;

还可以在使用on - failure策略时,指定Docker将尝试重新启动容器的最大次数。默认情况下,Docker将尝试永远重新启动容器。

docker run –restart=on-failure:10 redis

2)如果创建时未指定 –restart=always ,可通过update 命令

docker update –restart=always xxx

作者:吴龙华Tester
链接:https://www.jianshu.com/p/b07045ba9f7d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

查看ip地址

通过查看详细的json配置,里面写着容器的ip地址,docker inspect 会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息

script
1
2
3
4
5
6
7
8
docker inspect NAMES 
# 查看容器所有状态信息;

docker inspect --format='{{.NetworkSettings.IPAddress}}' ID/NAMES
# 查看 容器ip 地址

docker inspect --format '{{.Name}} {{.State.Running}}' NAMES
# 容器运行状态

参考来源

https://www.cnblogs.com/sharesdk/p/10185931.html

创建容器的时候报错WARNING: IPv4 forwarding is disabled. Networking will not work.

script
1
2
docker run -p 3000:3000 liyasthomas/postwoman:latest
WARNING: IPv4 forwarding is disabled. Networking will not work.

解决方法

script
1
vim  /usr/lib/sysctl.d/00-system.conf

添加如下代码:

script
1
net.ipv4.ip_forward=1

重启network服务

script
1
systemctl restart network

完成以后,删除错误的容器,再次创建新容器,就不再报错了。

从原理上讲,使用的是docker网桥在容器间进行数据转发。

安装好frpc之后,代理一个端口,并在配置的local_ip里填写另一个容器的ip地址

1
2
3
4
type = tcp 
local_ip = 172.17.0.3
local_port = 80
remote_port = 32171

然后启动frpc,映射一个外网端口

script
1
docker run -d --name frpc -v /data/frp/frpc.ini:/frp/frpc.ini -p 32171:32171 frpc:0.30.0

从原理上,不需要实际对被代理的172.17.0.3:80做端口外网映射。因为frpc使用的是docker网桥,将访问frpc的外网流量反向代理过去。

概述

自从docker容器出现以来,容器的网络通信就一直是大家关注的焦点,也是生产环境的迫切需求。而容器的网络通信又可以分为两大方面:单主机容器上的相互通信和跨主机的容器相互通信。而本文将分别针对这两方面,对容器的通信原理进行简单的分析,帮助大家更好地使用docker。

docker单主机容器通信

基于对net namespace的控制,docker可以为在容器创建隔离的网络环境,在隔离的网络环境下,容器具有完全独立的网络栈,与宿主机隔离,也可以使容器共享主机或者其他容器的网络命名空间,基本可以满足开发者在各种场景下的需要。按docker官方的说法,docker容器的网络有五种模式:

  • bridge:docker默认的网络模式,为容器创建独立的网络命名空间,容器具有独立的网卡等所有单独的网络栈,是最常用的使用方式。
  • host:直接使用容器宿主机的网络命名空间。
  • none:为容器创建独立网络命名空间,但不为它做任何网络配置,容器中只有lo,用户可以在此基础上,对容器网络做任意定制。
  • 其他容器:与host模式类似,只是容器将与指定的容器共享网络命名空间。
  • 用户自定义:docker 1.9版本以后新增的特性,允许容器使用第三方的网络实现或者创建单独的bridge网络,提供网络隔离能力。

script
1
2
3
4
5
6
7
8
9
10
11
echo "执行容器启动";
docker stop java-web;
if [ $? -ne 0 ]; then
echo "未发现需要删除的容器";
else
docker rm java-web;
fi
docker run -it -d -m 700m --memory-reservation 350m --restart=always --name=java-web -v /home/ppp:/home/ppp --privileged=true --net=host -p xxxx:xxxx centosjdk:v1 java -jar -Duser.timezone=GMT+08 /home/ppp/project-0.0.1.jar;
if [ $? -ne 0 ]; then
echo "启动server服务器失败";
fi

使用方法参考:

菜鸟教程-Docker Dockerfile

oldiy/frpc

dockerfile 文件内容

script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM alpine:3.8

WORKDIR /
ARG FRP_VERSION=0.26.0

RUN set -x && \
wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz && \
tar xzf frp_${FRP_VERSION}_linux_amd64.tar.gz && \
cd frp_${FRP_VERSION}_linux_amd64 && \
mkdir /frp && \
mv frpc /frpc && \
mv frpc.ini /frp/frpc.ini && \
cd .. && \
rm -rf *.tar.gz && \
rm -rf frp_${FRP_VERSION}_linux_amd64

VOLUME /frp

CMD /frpc -c /frp/frpc.ini

新建文件 /dockerfile/Dockerfile ,把上面的内容放进去,然后在这个目录内执行

script
1
docker build --build-arg FRP_VERSION=0.30.0 -t frpc:0.30.0 .

执行镜像

推荐启动命令

script
1
docker run -d --restart always -v /volume1/docker/frpc/conf/frpc.ini:/frp/frpc.ini oldiy/fprc:版本号
script
1
docker run -d --name frpc -v /data/frp/frpc.ini:/frp/frpc.ini -p 80:80 -p 32317:32317 frpc:0.30.0

run的–restart选项

Docker容器的重启策略

Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略。

Docker容器的重启都是由Docker守护进程完成的,因此与守护进程息息相关。

Docker容器的重启策略如下:

1
2
3
4
5
no,默认策略,在容器退出时不重启容器
on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器