Docker
-
安装
yum -y update 更新yum yum install docker -y 使用yum安装docker
-
启动Docker
systemctl start docker.service 启动 systemctl status docker.service 查看状态 systemctl stop docker.service 停止 systemctl restart docker.service 重启
-
预备工作
1.安装常用工具
yum install iproute ftp bind-utils net-tools wget -y
2.配置镜像加速器
1.直接运行下面代码: sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://hvmf8r55.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
3.查看 daemon.json 是否已经生效
tail /etc/docker/daemon.json
-
镜像命令
1.从官网上拉取镜像
docker pull 镜像名(nginx,centos等)
2.官网仓库查询镜像名
docker search 镜像名
3.查看所有的本地镜像
docker images
4.删除镜像(当镜像有对应容器时,无法删除)
docker rmi 镜像名(或id) 删除单个镜像 docker rmi $(docker images -q) 删除全部镜像
5.标记镜像(同一个id就会有两个镜像)
docker tag 镜像名1:tag1 镜像名2:tag2 此时docker images会发现2个镜像的id相同
6.提交镜像到官网
docker login 先登录 docker push 镜像名 这里的镜像名有要求:用户名/镜像名:版本号,如zj/nginx:latest
-
容器命令
1.根据镜像生成容器,并运行
docker run -dit --privileged -p21:21 -p80:80 -p8080:8080 -p30000-30010:30000-30010 --name how2jtmall how2j/tmall:latest /usr/sbin/init --privileged 启动容器的时候,把权限带进去。 -dit -d后台运行 -i提供交互接口 -t提供命令行终端 -p 80:80 第一个80是CentOS 上80端口,第二个80是容器的80端口,两个端口对接开发 --name how2jtmall how2j/tmall:latest --name 容器别名 镜像名:版本号 /usr/sbin/init 表示启动后运行的程序,即通过这个命令做初始化
2.创建容器
docker create 创建,不启动
3.进入容器
docker exec -it 镜像名 /bin/bash exit 离开容器
4.将容器提交成镜像
docker commit 容器名 镜像名
5.启动容器
docker start 容器名 启动 docker stop 容器名 停止 docker pause 容器名 暂停 docker unpause 容器名 恢复
6.查看容器
docker ps -a 查询所有容器 docker ps 查询运行中的容器
7.查看容器所有信息
docker inspect 容器名
8.删除容器
docker rm 容器名 删除单个 docker rm `docker ps -a -q` -f 删除所有容器 (-f强制删除)
9.查看容器日志
docker logs 容器名 docker logs -f --tail=3 -t 容器名 -f实时日志 -t添加时间 --tail=3最近3条数据
10.将宿主机的文件复制到容器中
docker cp 宿主机文件地址 容器名:容器目标地址 docker cp ./blog/docker/index.html nginx:/usr/share/nginx/html/
11.容器的导出
docker export 容器名 > 宿主机地址/文件名(.tar) docker export nginx > ./blog/docker/nginx.tar
12.容器的导入
cat 文件名(.tar) | docker import 容器名:版本号 cat nginx.tar | docker import -importnginx:latest
-
数据卷
1.挂载
docker run -itd --name 容器名 -v 宿主机挂载的绝对地址:容器目录 -p 80:80 nginx docker run -itd --name nginx2 -v ./home:/usr/share/nginx/html -p 80:80 nginx 将宿主机的./home目录挂载到容器的/usr/share/nginx/html目录下,这样在宿主机里修改文件,对应的容器改目录下也会修改
2.查看数据卷
docker volume ls 查看所有数据卷 docker volume inspect 数据卷名(根据上一个命令查看名称) 查看数据卷详情
3.删除数据卷
docker volume rm 数据卷名 删除单个数据卷 docker volume prune 数据卷名 批量删除(与容器相关的数据卷不会删除)
-
数据卷容器
数据卷容器也是容器,用来挂载数据卷的容器,专门供其他容器来引用
1.创建数据卷容器
docker run -itd -v 容器目录 --name 容器名 容器类 docker run -itd -v /usr/share/nginx/html --name mydata centos
2.引用容器
docker run -itd --volumes-from 数据卷容器名 -p 80:80 --name 创建的容器名 容器类 docker run -itd --volums-from mydata -p 80:80 --name nginx1 nginx docker run -itd --volums-from mydata -p 80:80 --name nginx2 nginx nginx1和nginx2都挂载了同一个数据卷到 /usr/share/nginx/html 目录下,三个容器中,修改任意一处,三处都会修改
3.利用数据卷容器对数据备份和恢复
查看文档19
-
Dockerfile和自动化构建
创建本地镜像的方式:1.commit 2.dockerfile
查看文档10-12
-
容器连接与容器编排
查看文档20-21