Docker 技术入门与实践(第3版)笔记
第一章:简介
第二章:核心概念!
#将用户加入docker用户组
sudo usermod -aG docker USER_NAME
第三章:使用Docker镜像
#获取镜像
docker pull id
docker pull jub.c.163.com/public/id
#运行容器
docker run -it id /bin/sh
echo "hello"
exit
#查看镜像
docker images
#tag
docker tag name:myname
#查看详细信息
docker inspect id
#查看镜像历史
docker history id
#搜寻镜像
docker search --filter=is-official=true nginx
#删除镜像
docker rmi id
#清理镜像
docker image prune -f
#基于已有容器创建镜像
docker commit -m "aaa" -a "author" id tag
#基于Dockerfile创建
FROM debian:stretch-slim
LABEL version="1.0" maintainer="name email"
RUN apt-get update &&\
apt-get install -y python3 &&\
apt-get-clean && \
rm -rf /var/lib/apt/lists/*
docker build -t python:3.
#存出镜像
docker save -o ubuntu_18.04 tar ubuntu:18.04
#载入镜像
docker load -i ubuntu:18.04.tar
或者 docker load<ubuntu_18.04.tar
第四章:操作docker容器
#新建容器
docker create -it ubuntu:lastest
docker ps -a
#启动容器
docker start id
#新建并启动容器
docoker run ubuntu /bin/echo 'hello world'
docker run -it ubuntuZ:18.04 /bin/sh
#启动过程
#1、检查本地是否存在指定的镜像,不存在就从仓库下载
#2、创建并启动容器
#3、分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层
#4、从宿主机配置的网桥接口中桥接一个虚拟接口到容器中
#5、从网桥的地址池中配置一个ip地址给容器
#6、执行用户指定的应用程序
#7、执行完毕后容器被自动终止
#守护态运行
docker run -d ubuntu /bin/sh -c "while true;do echo helloworld;sleep1;done"
docker ps
docker container ls
#查看容器输出
docker logs id
#暂停容器
docker run --name test --rm -it ununtu bash
docker pause test
docker ps
#终止容器
docker stop id
docker ps -a
docker start id
docker restart id
#进入容器
docker run -itd ubuntu
docker ps
docker attach is
#进入容器 exec
docker exec -it id /bin/sh
#删除容器
dockdf rm
-f 强制终止并删除运行中的容器
-l 删除容器的连接,保留容器
-v 删除容器挂载的数据卷
#导出容器
docker export -o name.tar id
docker export id>name.tar
#导入容器
docker import name.tar -name
#查看容器
docker container inspect id
#查看容器进程
docker top id
#查看统计信息
docker stats id
#复制容器
docker cp id destpadh
# 查看变更
docker container diff test
#查看端口
docker port id
#更新配置
docker update id
第六章:docker数据管理
数据卷 data volumes:
-
数据卷可在容器件共享和重用
-
对数据卷的数据的修改立马生效,无论是在容器内操作还是在本地操作
-
对数据卷的更新不影响镜像,解耦应用和数据
#创建数据卷 docker volume create -d local test ls -l /var/lib/docker/volumes # docker volume [inspect ls,prune,rm] #创建容器时将主机路径关注到容器,作为数据卷 docker run -mount - volume:普通数据卷,映射到主机/var/lib/docker/volumes下 -bind:绑定数据 映射到主机路径 -tmpfs 临时数据卷,只存在于内存中 docker run -d -P --name web --mount type=bind,source=/webapp,destination=/opt/webapp id python app.py #等同于 docker run -d -P --name web -v /webapp:/opt/webapp id/webapp python app.py
数据卷容器:容器,专门提供数据卷给其他容器挂载
#创建数据卷容器
docker run -it -v /dbdata --name dbdata imagename
#挂载
docker run -it --volumes-from dbdata --name dbq imagename
第七章:端口映射与容器互联
1、conf外部访问容器应用
docker run -d -P id python app.py
docker ps
#docker 随机映射49000~49900的端口到内部容器端口
docker logs -f id
docker run -d -p 5000:5000 id python app.py
2.通过容器名,连接多个容器
docker run -d --name db training/postgres
docker run -d -P --name web --link db:db training/webapp python app.py
docker ps
docker exec -it id /bin/sh
env
第八章:使用dockerfile创建镜像
docker compose
- 编写模板文件,创建、管理基于docker容器的应用集群
- pip3 install -U docker-compose
- 默认模板名:docker-compose.yml