目录
1.docker
1.1是什么
1.2docker重要概念
2.docker基础命令
2.1 docker version 查看版本
2.2 docker images 查看本地镜像
2.3 docker search 从 Docker Hub查找镜像
2.4 docker pull 从镜像仓库中拉取或者更新指定镜像
2.5 docker create 创建容器
2.5.1创建一个mysql容器
2.5.2创建一个nginx容器
2.6 docker start 启动容器
2.7 docker ps 查看本地容器
2.8 docker stop 停止容器
2.9 docker rm 删除容器
2.10 docker run 创建并启动容器
2.11 docker top 查看容器内的进程
2.12 docker logs 查看容器日志
2.13 docker exec 进入容器内部
3.连接容器
3.1连接mysql
3.2访问nginx
4.限制进程的cpu和内存资源
5.容器内部为什么上不了网
docker是一个软件,使用GO语言开发的对容器进行管理的软件。
镜像 image:镜像就是打包好的软件 --》程序代码、基础系统、依赖关系的软件包、数据库、工具
容器 container:运行镜像的地方 --》原理是启动一个进程来运行这个镜像
仓库 repository:集中存放镜像的地方
因为我之前下载过mysql,所以更新之前下载的mysql镜像
#docker pull mysql:5.7.34 指定版本下载
#docker pull mysql/mysql-cluster 指定下载源,可以不从官方下载
--name 指定名称
-e 宿主机往容器里传递环境变量 environment
MYSQL_ROOT_PASSWORD 是变量名
-p 端口映射 将宿主机3306端口映射到此容器3306端口
mysql 镜像名 后可指定版本
-name 指定容器名称
-v /usr/local/nginx1/html:/usr/share/nginx/html:ro 数据卷
#可以实现宿主机和容器之间的数据共享
/usr/local/nginx1/html 宿主机里的nginx网页路径
/usr/share/nginx/html 容器里的nginx网页路径
#不一定使用名称启动容器,也可以使用ID启动容器
CONTAINER 容器编号
IMAGE 镜像
COMMAND 执行的命令
CREATED 创建时间
STATUS 状态
PORTS IP/端口映射
NAMES 容器名
#docker ps -a查看本地所有容器(包括启动和未启动的)
#docker container ls命令也是次效果
#启动的容器不能被删除,所以删除容器前需要先执行docker stop命令。
#run命令等于create+start
#日志可用于排错
#容器内部使用的是Debian操作系统
#本文之前创建的mysql容器版本为5.7.35,这里连接到的mysql版本也是5.7.35,而宿主机的mysql是最新版的,说明我们连接到的是容器里的mysql。
#端口映射为宿主机的8080端口映射到容器里的80端口 ,我们访问到即为正确。
创建一个容器,让这个进程咋容器里run,这样可以限制容器所使用的cpu和内存,
从而可以达到限制这个进程的cpu和内存的使用
docker run -it --cpu-shares 30 -m 10000000 -d --name seesunman1 centos:7
#容器内部就是一个局域网,宿主机作为路由器,默认情况下是不开启路由功能
#云服务器默认开启路由功能,虚拟机的不会默认开启。
临时开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
service docker restart
永久开启路由功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 #添加一行
sysctl -p#刷新配置
docker run -it -d --name peanut -p 8090:90 centos:7
#容器创建时加上-p 自动在iptables里添加DNAT和SNAT策略
#没有指定端口则只能实现SNAT功能,容器可以访问外部,不但能实现外部访问容器内部
docker container inspect seesunman可以查看容器ip地址