前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >经验总结 | Docker 使用笔记

经验总结 | Docker 使用笔记

作者头像
TeamsSix
发布2022-09-20 18:42:53
6590
发布2022-09-20 18:42:53
举报
文章被收录于专栏:TeamsSix的网络空间安全专栏

0x00 前言

平时在使用 Docker 时,经常会碰到忘记相关命令的情况,因此平时忘记一个就会记录一个,经过多年的记录,Docker 相关的笔记已经记录了不少。

最近在看代码审计的时候又提到了 Docker,正好借着这个机会好好的把原来记录的比较乱的 Docker 笔记整理一下。

如果你也面临过「在使用 Docker 时,时不时就会忘记某条命令」的情况,那么我相信本篇文章应该会对你有所帮助。

0x01 安装

1、安装 Docker

代码语言:javascript
复制
curl -fsSL https://get.docker.com/ | sh

或者

代码语言:javascript
复制
wget -qO- https://get.docker.com/ | sh

在命令中输入以下命令,如果输出 helloword 表示 Docker 安装成功。

代码语言:javascript
复制
docker run ubuntu echo "helloworld"

2、安装 Docker-Compose

代码语言:javascript
复制
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

3、Docker 设置国内镜像源

代码语言:javascript
复制
vi /etc/docker/daemon.json

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

systemctl restart docker.service

国内加速地址如下:

代码语言:javascript
复制
Docker中国区官方镜像
https://registry.docker-cn.com

网易
http://hub-mirror.c.163.com

中国科技大学
https://docker.mirrors.ustc.edu.cn

阿里云容器  服务
https://cr.console.aliyun.com/

0x02 使用

1、搜索镜像

代码语言:javascript
复制
docker search centos

2、拉取镜像

代码语言:javascript
复制
docker pull centos

3、查看镜像文件

代码语言:javascript
复制
docker images

查看镜像层级关系

代码语言:javascript
复制
docker images tree

# 以前这个命令是:

docker images --tree

4、查看docker所有进程

代码语言:javascript
复制
docker ps -a

5、开启容器

开启指定容器,这里的容器名为 Web

代码语言:javascript
复制
docker start web

启动所有容器

代码语言:javascript
复制
docker start $(docker ps -aq)

6、进入正在运行的容器

docker 创建的

代码语言:javascript
复制
docker attach web

docker-compose 创建的

container_name 需要在 docker-compose.yml 文件中查看

代码语言:javascript
复制
docker-compose exec container_name bash

7、指定端口启动创建进入容器

代码语言:javascript
复制
docker run -p 9992:80 -p 8882:8888 -it ubuntu /bin/bash
docker run --name web1 -p 9991:80 -p 8881:8888 -it centos /bin/bash

8、导出导入镜像

export\import 导入导出

代码语言:javascript
复制
docker export web > /home/docker_web.tar
docker import /home/docker_web.tar

save\load 导入导出

代码语言:javascript
复制
docker save 9610cfc68e8d > /home/docker_web.tar
docker load < /home/docker_web.tar

export\import 与 save\load 的区别:

  • export\import 导出的镜像文件大小要小于 save\load 导出的镜像
  • export\import 是根据容器拿到的镜像,再导入时会丢失镜像所有的历史,所以无法进行回滚操作;而 save\load 的镜像,没有丢失镜像的历史,可以回滚到之前的层。

9、修改正在运行的容器端口映射

a、停止容器

b、 停止 docker 服务(systemctl stop docker)

c、 修改这个容器的 hostconfig.json 文件中的端口(原帖有人提到,如果 config.v2.json 里面也记录了端口,也要修改)

代码语言:javascript
复制
cd /var/lib/docker/3b6ef264a040*     # 这里是 CONTAINER ID

vi hostconfig.json

# 如果之前没有端口映射, 应该有这样的一段:
"PortBindings":{}

# 增加一个映射, 这样写:
"PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3307"}]}

# 前一个数字是容器端口, 后一个是宿主机端口
# 而修改现有端口映射更简单, 把端口号改掉就行

d、启动docker服务(systemctl start docker)

e、启动容器

10、文件传输

代码语言:javascript
复制
docker cp 本地文件路径 ID全称:容器路径

# 或者

docker cp ID全称:容器文件路径 本地路径

11、后台运行docker

启动全新的容器,该命令会在后台运行容器,并返回容器ID

代码语言:javascript
复制
docker run -d

对于现有的容器

代码语言:javascript
复制
ctrl+P+Q

0x03 卸载

1、停止容器

停止指定容器

代码语言:javascript
复制
docker stop web

停止所有容器

代码语言:javascript
复制
docker stop $(docker ps -aq)

2、删除容器和镜像

删除指定容器

代码语言:javascript
复制
docker container rm d383057928b4  # 指定容器 ID

删除所有已退出的容器

代码语言:javascript
复制
docker rm $(docker ps -q -f status=exited)

删除所有已停止的容器

代码语言:javascript
复制
docker rm $(docker ps -a -q)

删除所有正在运行和已停止的容器

代码语言:javascript
复制
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

删除所有容器,没有任何标准

代码语言:javascript
复制
docker container rm $(docker container ps -aq)

Docker 资源清理

代码语言:javascript
复制
docker container prune    # 删除所有退出状态的容器
docker image prune        # 删除 dangling 或所有未被使用的镜像
docker network prune      # 删除所有未使用的网络
docker volume prune       # 删除未被使用的数据卷
docker system prune       # 删除已停止的容器、dangling 镜像、未被容器引用的 network 和构建过程中的 cache,安全起见,这个命令默认不会删除那些未被任何容器引用的数据卷,如果需要同时删除这些数据卷,你需要显式的指定 --volumns 参数
docker system prune --all --force --volumns     # 这次不仅会删除数据卷,而且连确认的过程都没有了!注意,使用 --all 参数后会删除所有未被引用的镜像而不仅仅是 dangling 镜像

删除所有镜像

代码语言:javascript
复制
docker rmi $(docker images -q)

3、卸载Docker

代码语言:javascript
复制
yum list installed | grep docker
yum -y remove docker.x86_64

4、卸载Docker-compose

代码语言:javascript
复制
rm /usr/local/bin/docker-compose

参考地址: https://blog.csdn.net/a906998248/article/details/46236687 https://blog.csdn.net/wesleyflagon/article/details/78961990 原文链接: https://teamssix.com/211028-204606.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TeamsSix 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 安装
    • 1、安装 Docker
      • 2、安装 Docker-Compose
        • 3、Docker 设置国内镜像源
        • 0x02 使用
          • 1、搜索镜像
            • 2、拉取镜像
              • 3、查看镜像文件
                • 4、查看docker所有进程
                  • 5、开启容器
                    • 6、进入正在运行的容器
                      • 7、指定端口启动创建进入容器
                        • 8、导出导入镜像
                          • 9、修改正在运行的容器端口映射
                            • 10、文件传输
                              • 11、后台运行docker
                              • 0x03 卸载
                                • 1、停止容器
                                  • 2、删除容器和镜像
                                    • 3、卸载Docker
                                      • 4、卸载Docker-compose
                                      相关产品与服务
                                      容器服务
                                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                      领券
                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档