Docker基础命令使用
1 | https://blog.51cto.com/13043516/2121564 |
1. Docker Hub搜索镜像 docker search 关键字
选项:
–automated=false:仅显示自动创建的镜像(通过Github或BitBucket仓库自动构建的镜像,直接从仓库复制一份,生成dockerfile并自动生成标记)
–no-trunc=false:输出信息不截断显示
-s,–stars=x:指定仅显示评价位指定星级以上的镜像
1-2. 搜索centos
1 | docker search centos |
1-3. 搜索包含nginx关键字并且500以上星的镜像
1 | docker search -s 500 nginx |
2. 下载镜像 docker pull 镜像名
2-1. 搜索包含nginx关键字并且500以上星的镜像
1 | docker search -s 500 nginx |
2-2. 从公有仓库中下载nginx镜像 //这边要为docker配置国内镜像加速器,否则下载不了
1 | docker pull nginx |
2-3. 显示当前系统所有镜像
1 | docker images |
3. 上传镜像到仓库 docker push 路径
docker push 仓库IP:仓库端口 / 准备上传的镜像名 (如下命令)
1 | docker push 192.168.152.159:5000/httpd |
4. 运行容器 docker run [选项] 镜像名
选项:
-i:交互式操作
-t:分配一个tty伪终端
-d:以守护进程形式运行
4-1. 将下载的镜像文件或本地构建的镜像文件创建为容器并运行
1 2 3 4 5 | 推荐这种方式创建及进入容器 docker images //查看镜像 docker run --name centos7 --privileged -d -e "container=docker" -p 8091:22 -p 8092:80 -p 8093:443 -p 8094:5901 --restart always ansible/centos7-ansible /usr/sbin/init //docker run -d 创建容器 docker ps -a //查看已经创建的容器 docker exec -it centos7 /bin/bash //进入容器 |
备注:
1 2 3 4 5 | --name centos7 //下一步进入容器时会用到 --privileged //加入特权 -p 8091:22 //本机的8091端口转 容器的22端口 ansible/centos7-ansible //镜像docker images ,可以查看 --restart always //无论退出状态是如何,都重启容器//创建时忘记加,可以通过如下:docker container update --restart=always 容器名字 |
4-3. 另一种方式创建及进入容器
1 2 3 4 5 | 这种方式会导致root账号权限不够,安装lnmp之类的软件,会安装失败: docker images //查看镜像 docker run -it ansible/centos7-ansible /bin/bash //docker run -it 创建并进入容器 docker ps -a //查看已经创建的容器 docker attach 5a3adf677a89 //进入容器 |
4-4. 运行容器并间隔1秒循环输出hello
1 | docker run -it ansible/centos7-ansible /bin/bash -c "while :;do echo "hello";sleep 1;done" //ansible/centos7-ansible 是镜像,通过docker images 查询 |
5. 查看系统容器列表 docker ps
5-1. 显示运行的容器
1 | docker ps |
5-2. 查看当前系统所有容器
1 | docker ps -a |
6. 查看容器日志 docker logs 日志id
6-2. 查看指定id容器日志
1 | docker logs e9ad47cf3472 |
7. 退出容器(两种方式)
7-1. 方式一:ctrl+p再ctrl+q //退出伪终端,容器后台继续运行(退出后docker exec -it 可切换指定Docker容器)
1 | 尽量用这种方式,退出但不关闭容器 |
7-2. 方式二:exit或ctrl+d //退出并停止容器
7-3. 切换指定Docker容器 docker attach id
1 | docker attach 4199d2eb3ff7 // -it 启动的用docker attach 进入, -d 启动的要用docker exec进入 |
8. 删除容器 docker rm id
8-1. 强制删除正在运行的容器
1 | docker rm -f 4199d2eb3ff7 |
8-2. 删除nginx标记为1的镜像
1 2 | docker images //查看镜像 docker rmi ansible/centos7-ansible //删除镜像,ansible/centos7-ansible是镜像 |
9. 运行、停止、重启、杀死容器
9-1-3. 运行指定id容器
1 2 | docker ps -a docker start 5a3adf677a89 |
9-2. 停止容器
1 2 | docker ps -a docker stop 5a3adf677a89 |
9-3. 重启容器
1 2 | docker ps -a docker restart 5a3adf677a89 |
9-4. 杀死容器
1 2 | docker ps -a docker kill 5a3adf677a89 //kill 是强制断电退出 |
10. 存储、载入镜像
10-1. 存储镜像 docker save -o 目标tar文件 镜像文件:标记
1 | docker save -o centos7 ansible/centos7-ansible //把 ansible/centos7-ansible 存储在本地,并命名为centos7 |
10-2. 载入镜像 docker load < tar文件
1 | docker rmi -f ansible/centos7-ansible //查看并删除指定镜像,用这个镜像的容器需全部关闭才能删得掉,否则删不了 |
1 | docker load < centos7 //载入镜像(之前做过存储在/root/目录下) |
11. 容器commit起来
11-1. 创建测试文件
1 2 | docker exec -it centos7 /bin/bash //以前创建的一个容器叫centos7 touch 2021.txt //创建2021.txt |
11-2. 容器commit起来
1 2 3 | docker ps -a //查看容器 id docker commit db09f1618abc centos7:2021 //将正在运行的这个id为 db09f1618abc 容器commit起来,这样在关闭容器时,安装的东西不会出现丢失。 docker images //查看镜像 |
11-3. 创建并进入容器
1 2 | docker run --name centos777 --privileged -d -e "container=docker" -p 8071:22 -p 8072:80 -p 8073:443 -p 8074:5901 --restart always centos7:2021 /usr/sbin/init docker exec -it centos777 /bin/bash |
12-1. 镜像打上标签
1 2 3 | docker images docker tag centos7_zls:latest centos7:2021 // 打上tag,会多加一个,以前的不会改 docker images |
13 导出容器快照 docker export -o 目标tar文件 id
将容器当前状态导出到快照文件,可通过该文件拷贝到其余服务器导入到仓库中(与直接导入导出镜像存储文件相比,快照导入导出更小,但快照将丢弃所有的历史记录和容器当
前运行状态)
13-1. 创建测试文件
1 2 | cd root touch 2022-01-03.txt |
13-2. 查看当前所有容器 docker ps -a
1 | docker ps -a //查到容器id是f11b6b1353a1 |
13-3. 将指定id容器导出快照文件
1 | docker export -o centos7.3-mini.tar f11b6b1353a1 |
13-4. 导入本地容器快照
cat 本地容器快照名 | docker import – 自定义容器名:自定义标记名
13-5. 通过快照文件导入为镜像文件
1 | cat centos7.3-mini.tar | docker import - centos7.3:86x64-mini |
13-5. 还原并查看快照文件
1 2 | docker run --name centos73 --privileged -d -e "container=docker" --restart always centos7.3:86x64-mini /usr/sbin/init //创建容器 docker exec -it centos73 /bin/bash //进入容器 |
===============以下内容暂时还没测试===================
14-1. 打上标签的镜像推到远程仓库
1 | docker push guokai2012/lnmp:1.0 // 现在把这个tag镜像推到远程仓库 |
至此,整个docker安装lnmp就结束了。
15. 编写docker-compose.yml文件,来运行自己配置容器lnmp
15-1. 下面就是配置的图片。仅供参考
15-2. 配置好yml文件后,我们用docker-compose来启动我们的容器
1 2 | docker-compose up -d lnmp // 启动lnmp容器 docker-compose exec lnmp /bin/bash // 进入lnmp容器 |
15-3. 验证一下。我们直接访问127.0.0.1