service docker start 开启服务
service docker stop 停止服务
//开机启动
systemctl start docker
systemctl enable docker
镜像命令:
docker version | 查看版本 |
docker | 查看所有的客户端命令 |
docker 命令(例如stats) --help | 查看某命令的详细使用 |
docker search java | 搜索存放在docker hub的镜像 |
docker pull java | 下载java镜像 |
docker images | 列出所有的镜像 |
docker rmi 镜像id | 删除镜像 |
docker rmi -f ${docker images -q} | 删除所有的镜像 |
docker run 镜像 | 运行镜像 |
docker inspect 镜像 | 查看镜像分层信息 |
容器命令:
docker run 镜像 command 启动容器
--name 定义容器名。先检查本地是否存在镜像,不存在自动下载并启动容器
启动交互式容器
docker run -t -i 镜像 /bin/bash -t在新容器指定伪终端或终端,-i允许对容器进行标准输入
exit 退出交互式容器
ctrl+p+q快捷键可以以守护进程退出
docker run -d 镜像 command 后台守护进程启动
docker ps 查看正在运行的容器
docker ps -a 查看所有的容器
docker ps -l 查看最后使用的容器
docker stop 容器 停止容器
docker kill 容器 强制停止容器
docker start 容器 启动容器
docker restart 容器 重启容器
docker rm 容器 删除容器 删除时容器必须是停止的
docker rm -f $(docker ps -s -q) 删除所有的容器
docker top 容器 查看容器中正在运行的进程
docker exec [-d][-i][-t] 容器 命令 在运行的容器中启动进程
进入容器:
1.使用attach(docker自带)命令进入。进入容器退出后容器关闭
docker attach 容器
2.使用docker exec -it 容器 bash 进入容器退出后容器不关闭(推荐使用)
3.使用nsenter命令
但是使用attach命令有时候并不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了
容器日志:
docker logs [-f][-t][--tail] 容器 -f是一直跟踪日志的变化,-t加上时间戳,--tail是返回结尾处多少数量的日志,不指定会默认返回所有数量的日志
在容器中部署静态网站
设置容器端口
docker run [-P][-p] -P暴露容器所有的端口,新建并启动容器 -p 指定端口映射(不指定则随机端口)
1.只指定容器端口(宿主机端口随机)
docker run -p 80 -i -t --name webtest ubuntu /bin/bash
2.指定主机端口和容器端口
主机端口:容器端口
docker run -p 8080:80 -i -t ubuntu /bin/bash
3.ip::容器端口
docker run -p 0.0.0.0::80 -i -t ubuntu /bin/bash
4.ip:主机端口:容器端口
docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash
这里使用第二种
安装nginx
apt-get update 先进行更新
//apt install net-tools 安装ifconfig
//apt install iputils-ping 安装ping
apt-get install -y nginx 安装nginx
apt-get install -y vim 安装vim
mkdir -p /var/myweb 创建存放静态网页的文件夹
进入该文件夹创建一个index.html
修改配置文件
所修改的位置
保存之后
cd /
nginx 开启nginx
ps -ef 查看是否有nginx的进程
快捷键:ctrl+p+q 退出容器
docker port 容器 查看端口映射或使用docker ps也可查看
最后测试:
curl http://127.0.0.1:8080 就可以看到我们写的index.html;
你也可以通过docker inspect 容器查看IP地址,然后直接访问容器(80端口可以不加端口号),我这里的是curl http://172.17.0.2
当我们对容器重启后我们会发现nginx并没有启动,这时我们可用docker exec 容器 nginx启动