一、docker 的命令的解释
1、命令解释
1 2 3 4 5 6
| docker run -d -p 80:80 nginx
run (创建并运行一个容器) -d 放在后台 -p 端口映射 nginx docker镜像的名字
|
2、配置 docker 镜像加速
1 2 3 4 5 6
| vi /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com"] }
systemctl restart docker
|
3、docker 容器是一种软件的打包技术,接下来我们体验一下
1、传统编译安装 nginx:
1 2 3 4 5 6 7
| 官网下载Nginx源码包wget tar解压源码包 创建Nginx用户 安装依赖包 编译安装三部曲configure,make,make install 修改nginx配置文件 启动nginx
|
2、docker 容器
1
| docker run -d -p 80:80 nginx
|
二、镜像常用命令
1、搜索镜像:
选镜像的建议:
- 优先考虑官方
- stars 数量多
2、获取镜像:
镜像加速器:阿里云加速器,daocloud 加速器,中科大加速器,Docker 中国官方镜像加速:https://registry.docker-cn.com
1 2
| docker pull centos:6.8(没有指定版本,默认会下载最新版) docker pull daocloud.io/huangzhichong/alpine-cn:latest
|
扩展:查询 docker 镜像所有版本 https://hub.docker.com/r/library/
3、查看删除导出
1、查看镜像
2、删除镜像
1
| docker rmi 例子:docker image rm centos:latest
|
3、导出镜像
1
| docker save 例子:docker image save centos > docker-centos7.4.tar.gz<br>docker save mysql:5.7> mysql-5.7.tar.gz
|
4、导入镜像
1
| docker load 例子:docker load -i docker-centos7.4.tar.gz
|
三、容器常用命令
1、运行一个容器
1 2 3 4 5 6 7 8
| docker run -d -p 80:80 nginx:latest run (创建并运行一个容器) -d 放在后台 -p 端口映射 nginx:latest docker镜像的名字和版本 还有很多其他的参数
docker run == docker create + docker start
|
2、进入到容器
进入容器的目的:排错,调试
进入容器的方法:
1 2 3 4 5 6 7 8 9
| docker exec [OPTIONS] CONTAINER COMMAND [ARG...] 例子: docker exec -it 容器id或容器名字 /bin/bash
docker attach [OPTIONS] CONTAINER 例子: docker attach 容器id或容器名字
nsenter(安装yum install -y util-linux 弃用)
|
3、停止删除容器命令
1、停止容器
1
| docker stop CONTAINER_ID
|
2、杀死容器
1
| docker kill container_name
|
3、查看容器列表
1 2 3 4
| docker ps docker ps –a
docker ps –a -l
|
4、删除容器
5、批量删除容器
1
| docker rm -f `docker ps -a -q`
|
4、要获取所有容器名称及其 IP 地址只需一个命令。
1
| docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
|
如果使用 docker-compose 命令将是:
1
| docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
|
5、显示容器的所有 IP
1
| docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
|
四、容器网络访问常用命令
1 2 3 4 5 6 7 8
| docker run -it --name centos6 centos:6.8 /bin/bash -it 分配交互式的终端 --name 指定容器的名字 /bin/sh 覆盖容器的初始命令
--cpus 指定cpu的数量 --memory 限定内存的大小 -h 指定容器的主机名
|
docker 的本质是:在隔离的环境运行的一个进程
所以:docker 容器内的第一个进程必须一直处于前台运行的状态(必须夯住),否则这个容器,就会处于退出状态!
1、运行容器为什么要使用端口映射?
默认情况下,容器使用的 ip 是 172.17.0.0/16 网段的,外界的用户只能访问宿主机的 10.0.0.0/24 网段,
无法访问 172.17.0.0/16 网段。我们运行容器的目的:是希望运行在容器中的服务,能够被外界访问,
这里就涉及到了外网 10.0.0.0/24 到容器内网 172.17.0.0/16 网段的转换,所以需要做端口映射
2、指定映射(docker 自动添加一条 iptables 规则实现端口映射)
1 2 3 4 5
| -p hostPort:containerPort -p ip:hostPort:containerPort -p ip::containerPort(随机端口) -p hostPort:containerPort:udp -p 81:80 -p 443:443 可以指定多个-p
|
3、随机映射
五、数据卷常用命令
1、数据卷的作用:
- 持久化容器运行过程中产生的数据文件
- 实现多个容器间的文件共享。
正常情况下,删除容器,容器中所有的文件也会被删除
2、数据卷常用命令
1、创建一个数据卷
2、查看数据卷列表
3、删除一个数据卷
4、查看一个数据卷的属性
3、docker 数据卷运用一
1 2 3 4 5 6 7 8 9 10 11
| docker volume create luoahong
docker run -d -p 80:80 -v luoahong:/usr/share/nginx/html nginx:latest
cd /var/lib/docker/volumes/luoahong/_data/ rm -f * wget https://www.qstack.com.cn/xiaoniaofeifei.zip unzip xiaoniaofeifei.zip
docker run -d -p 81:80 -v luoahong:/usr/share/nginx/html nginx:latest docker run -d -p 82:80 -v luoahong:/usr/share/nginx/html nginx:latest
|
4、把宿主机的目录挂载到容器中
1 2 3 4 5
| cd /opt mkdir xiaoniao cd xiaoniao/ wget https://www.qstack.com.cn/xiaoniaofeifei.zip unzip xiaoniaofeifei.zip
|
重点
1
| docker run -d -p 83:80 -v /opt/xiaoniao:/usr/share/nginx/html nginx:latest
|