docker网络创建

容器本身是互不能联网的,但是通过将他们放置在同一个网段内,可以实现两者之间的互通。
可以通过

docker network create 创建网段名

来进行创建网络段,我们也可以使用docker network ls 来进行网络段查看,docker默认的话再不创建网络段的时候会有三个,这三个自带的网络段是不能互通 的,因此,如果我们要搭建一个新的架构,比如LAMP,LNMP等,那么就需要创建一个网络,并且在启动容器时将这些容器都放置在已经创建好的网络从而实现容器互通。

我们可以手动创建一个,比如docker network create lamp,那么此时我们查看网卡。

docker 创建网络指定ip docker自建网络_运维

可以看到网卡段会出现一个新的网段,并且命名为docker开头,往后在创建新的网络,他们的网段都是不一样的,借此实现同一个网络间的互通,不同网络间的隔离。

docker网络分配命令

当我们开启一台镜像的时候,可以使用

docker run -itd -p 端口号 --name 名字 --network 分配的网络 取决的镜像 bash来进行运行

或者也可以在运行好的容器输入:docker connect 分配的网络 容器名字 来进行网络分配

自建镜像仓库

镜像有三种方法去获取,一种是靠自建镜像,这种镜像通过编写脚本进行创建,第二种是通过docker hub 官网去进行拉取,官方网站的资料镜像比较全,但是由于是自己外国网站,访问时长会出现断链、拉取失败、丢包等现象。第三种则是国内比较多企业的做法,即自建一个容器仓库,而后将自己自建的镜像逐一拉过去,并且可供同网段的服务器下载。
这里先介绍一个命令:

docker run -itd -p 端口号 -v 哪里要做挂载点:挂载到容器的哪里 镜像名

这个命令优点类似nfs,但是这是本机和容器做的共享,指定的地方会生成相对应的目录,在本机中放置任何文件或应用,另一边的容器的挂载点都能收到

步骤

1)首先需要的是下载registry是一个仓库源,我们可以直接通过以下命令来进行启动,系统会自动到docker hub 上将该镜像包给下载下来。

docker run -itd -p 5000:5000 registry

2)下载下来后,可以通过docker ps 查看该镜像是否启动,如果没有启动,在输入一道

> docker run -itd -p 5000:5000 registry

来进行手动开启。

3)开启过后,需要手动去编写一个文件,可以使得ip地址进行共享

```powershell
vim /etc/docker/daemon.json
“insecure-registries”: [“本机地址:registry指定的端口号”]
"insecure-registries": ["192.168.53.123:5000"]

4)重启docker容器,并且重新开启registry镜像

systemctl restart docker
由于需要做永久性持久,因此需要进行挂载
docker run -d -p 5000:5000 -v /root/data:/var/lib/registry/docker/registry/v2

5)在做好一系列操作后,就可以上传镜像了!
1、需要将镜像改名,改名的形式为:ip地址:端口号/镜像名:标签
2、

例:docker push 192.168.53.123:5000/nginx:v1

3、上传完成后,使用curl 192.168.53.123:5000/v2/_catalog来查看是否上传完成

{“repositories”:[“nginx”]}

4、也可以使用浏览器,输入以上的网址来进行查看

docker 创建网络指定ip docker自建网络_redis_02

扩展

搭建compose

步骤

1)

> curl -L "https:///docker/compose/releases/download/1.29.1/docker-compose-$(uname
> -s)-$(uname -m)" -o /usr/local/bin/docker-compose

此为下载命令,首先需要进行安装

2)

> chmod +x /usr/local/bin/docker-compose

此为增加关键配置文件的权限

3)

> ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

此为增设软连接

4)mkdir composetest 
5)cd composetest
vim app.py:

import time
import redisfrom flask import Flask
app = Flask(__name__)cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)
@app.route('/')def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)



vim requirements.txt:

flask
redis


vim Dockerfile:
 #syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

vim docker-compose.yml
version: "3.9"services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

6)创建一系列文件完成后,使用docker-compose up -d命令即可完成安装

7)注意!它默认端口是5000,请确保别的端口号和5000不冲突。

8)而后可以直接在浏览器输入 本机号码:5000 来进行访问

9)每次刷新都会进行计数

docker 创建网络指定ip docker自建网络_docker 创建网络指定ip_03

命令集

docker save -o 导出镜像
docker load --input<镜像 导入镜像
docker run -itd 启动/创建
docker connect 分配的网络 容器名字 将分配好的容器重新进行网络分配
docker-compose up -d 启动compose
docker search 查找docker hub平台所有关键字镜像