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