【Docker】Dockerfile的使用、docker-compose多服务配置、docker存储管理、docker网络管理

1.Dockerfile构建镜像

1.1 编写Dockerfile

FROM centos:latest
MAINTAINER test@123.com
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum -y install openssh-server net-tools -y
RUN echo 'root:admin123' | chpasswd
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]

1.2 使用docker build 利用Dockerfile创建镜像

docker build -t centos_sshd:latest .

在这里插入图片描述

1.3 使用创建的镜像创建容器 docker run -d 镜像id

docker run -d centos_sshd

在这里插入图片描述

1.4 使用docker exec 容器id ip add 查看容器ip

docker exec 3282 ip add

在这里插入图片描述

1.5 使用ssh root@容器ip 登录创建的容器

// 密码在Dockerfile中
ssh root@172.17.0.3
ip add

在这里插入图片描述

2.使用docker-compose搭建django和postgresql

2.1 创建一个空目录

mkdir django-ps
cd django-ps

2.2 前置环境配置

vim Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

vim requirements.txt

Django>=2.0,<3.0
psycopg2>=2.7,<3.0

vim docker-compose.yml

version: '3'
services:
  db:
    image: postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    volumes:
      - db_data:/var/lib/postgresql
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
volumes:
  db_data: {}

2.3 创建Django项目

docker-compose run web django-admin startproject myexample .

在这里插入图片描述

在这里插入图片描述

ll

cd myexample
ll

vim settings.py

ALLOWED_HOSTS=['*']


DATABASES={
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

在这里插入图片描述

在这里插入图片描述

2.4 在项目目录下使用 docker-compose up

在这里插入图片描述

2.5 访问 192.168.67.233:8000 网址

在这里插入图片描述

2.6 关闭并清理服务

docker-compose down --volumes

在这里插入图片描述

3.docker存储管理

3.1 docker volume ls 查看卷

在这里插入图片描述

3.2 docker volume create volume-test01创建卷

在这里插入图片描述

3.3 docker volume inspect volume-test01 查看卷

在这里插入图片描述

3.4 cd到卷的mountpoint,查看内容,空的

在这里插入图片描述

3.5 docker run -dit -v volume-test01:/txt centos /bin/bash 创建容器

在这里插入图片描述

3.6 docker container exec -it e88b /bin/bash (进入容器)

在这里插入图片描述

3.7 cd /txt 进入目录,touch 123.txt创建文件,写入内容

在这里插入图片描述

3.8 exit退出容器,切换到宿主机 volum-test01所在目录,查看文件,找到了123.txt,cat查看内容一致

在这里插入图片描述

3.9 直接删除卷,失败

docker volume ls
docker volume rm volume-test01 

在这里插入图片描述

3.10 删除容器,然后再删除卷,成功

docker stop e88b
docker rm e88b
docker volume rm volume-test01 

在这里插入图片描述

3.11 docker run -dit --mount source=vol-test01,target=/app nginx(vol-test01不存在就会自动创建)

在这里插入图片描述

3.12 docker run -dit --mount source=vol-test01,target=/app,readonly nginx(加一个readonly就是只读的卷)

在这里插入图片描述

3.13 docker run -dit --mount target=/app nginx(创建匿名卷)

在这里插入图片描述

4.docker网络管理

4.1 查看网络列表 docker network ls

在这里插入图片描述

4.2 创建三个alpine容器,在默认网络中测试。

docker run -it --name alpine01 -d alpine
docker run -it --name alpine02 -d alpine
docker run -it --name alpine03 -d alpine

在这里插入图片描述

4.3 清空容器

docker system prune

在这里插入图片描述

4.4 创建一个网络xxxxxxxxxx,

docker network create --driver bridge net-test
docker network ls
docker network inspect net-test //查看该网络详细信息

在这里插入图片描述

4.5 创建alpine01 ,alpine02,alpine03链接到xxxxxxxx

docker run -dit --name alpine01 --network net-test alpine ash
docker run -dit --name alpine02 --network net-test alpine ash
docker run -dit --name alpine03 --network net-test alpine ash
docker network inspect bridge

在这里插入图片描述

4.6 创建alpine04链接到默认网络

docker run -dit --name alpine04 --network bridge alpine ash
docker ps

在这里插入图片描述

在这里插入图片描述

4.7 把alpine03再连接到默认网络

docker network connect bridge alpine03
docker network inspect bridge

在这里插入图片描述
在这里插入图片描述

4.8 测试连通性

docker attach alpine01
ping alpine02 -c 2
ping alpine03 -c 2
ping alpine04 -c 2 //不通
ping www.baidu.com -c 2

在这里插入图片描述
在这里插入图片描述

4.9 清空环境

docker stop alpine01 alpine02 alpine03 alpine04
docker rm alpine01 alpine02 alpine03 alpine04
docker network rm net-test

在这里插入图片描述

4.10 拉取httpd

docker run -dit --name web-01 -p 8080:80 httpd

在这里插入图片描述

4.11 测试-p选项的端口映射

docker ps
curl http://192.168.67.233:8080

在这里插入图片描述

4.12 测试-P选项的端口映射

docker run -dit --name web-02 -P httpd
docker port web-02
curl http://192.168.67.233:49153

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KiriSoyer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值