Docker基础命令使用

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

Leave a Reply

Your email address will not be published. Required fields are marked *