docker,带你玩转docker

阅读须知:

探索者安全团队技术文章仅供参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作,由于传播、利用本公众号所提供的技术和信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,如有侵权烦请告知,我们会立即删除并致歉,创作不易转载请标明出处.感谢!

大家好,我是 breeze, 鉴于自己对docker理解不好,于是特意来学习一下。


0x00  什么是docker

1710082696001.png

软件的打包技术,就是将算乱的多个文件打包为一个整体,打包技术在没有docker容器之前,一直是有这种需求的,docker打包出来的每个软件,称之为docker镜像。可以说整个IT领域,不管是哪个工种,都需要好好学习docker。

docker是CS架构的程序,客户端控制服务端来做各种事情。

镜像:images,是个压缩包文件,里面存放着安装好的程序。

容器:Container,Docker利用容器来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。


0x01  docker的安装

这里只讲linux下的安装

#添加docker的gpg密钥,签名用的
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | 
sudo apt-key add -
#添加docker的apt源
echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster 
stable' | sudo tee /etc/apt/sources.list.d/docker.list
#更新apt缓存
apt update
#安装docker
sudo apt-get install docker docker-compose -ysudo apt-get install docker.io
#安装完成之后,docker就自动启动了
systemctl status docker   
#查看docker版本
docker -v  

1.添加docker的gpg密钥,签名用的

1710082798256.png

2.添加docker的apt源(加快访问速度)

1710082906616.png

3.apt update 更新一下apt缓存

1710082941045.png

4.任意方式安装docker,由于我安装过了,就就不安装了。

sudo apt-get install docker docker-compose -y `或` sudo apt-get install docker.io

5.设为开机自启

systemctl enable docker

1710082964306.png

6.更改docker镜像库的源

cd /etc/docker
vim docker.json
# 添加如下内容,并保存退出
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}   
# 可以重启docker服务
systemctl restart docker

0x02  镜像基本命令

docker search  #搜索镜像(只搜索官方仓库的,官方仓库地址:hub.docker.com)

比如搜索docker search php,就会在镜像库中搜索关于php的镜像

1710082977587.png


docker images  查看本地镜像列表

1710082988567.png


dcoker pull  拉取镜像

docker pull tomcat:latest

比如拉取固定版本的php,docker pull php:7.15

1710082999035.png


docker push  上传镜像,推送镜像,推到官方仓库,需要在本地登录一下官方账号


docker rmi

#删除镜像,rm image的意思,直接rm不加i表示要删除容器,可以通过名称加版本来删除,或者直接通过镜像id值来删除

#docker rmi tomcat:latest 或者 docker rmi imageid值

#可以同时删除多个镜像:docker rmi tomcat:latest tomcat:jre17-temurin-jammy

#如果这个镜像处于运行状态的是删除不了的,比如有容器在使用这个镜像,就不能删除镜像,比如

docker rmi nginx:1.16会报错


docker container ls 或者docker ps 查看镜像的运行状态

1710083015188.png

第一个就是容器值

docker save

#导出镜像(压缩包) docker save 镜像名称:版本 -o docker_nginx1.20.tar.gz
#docker save nginx:1.16 -o docker.nginx1.16.tar.gz


docker load

#导入镜像 docker load -i docker_nginx1.20.tar.gz,会自动解压并导入到docker服务中

0x03  容器常见命令

docker run 运行一个新容器

docker run -d -p 82:80 nginx:1.16

例如这个-p是指定端口的意思。82:20是端口映射。例如后面的80是容器的端口,前面的82是运行docker的端口。

-d  #放后台运行
-p 端口映射 #例子: -p 宿主机端口:容器端口
--name 指定容器的名字 # docker run -it --name jaden 镜像id或者名称
--link 关联另一个容器 # 了解即可
-e MYSQL_ROOT_PASSWORD #设置容器的一些属性,了解一下即可
-it #是给运行起来的这个容器分配一个终端,就可以进入到容器内部操作了

docker ps === docker container ls #参数: 默认之显示up状态的容器,-a查看所有容器,或者–all

docker stop 停止容器 #例子 docker stop 容器id或者容器名字

docker kill 杀掉容器

#强制关闭容器,尽量不要用,很容易就启动不了了

docker start 启动容器

#例子 docker start 容器id或者容器名字

docker restart 重启重启

#例子 docker restart 容器id或者容器名字


docker rm 删除容器

#例子 docker rm 容器id或者容器名字,同时删除多个,就空格隔开,处于up状态是不能直接删除的,强制删除是可以删除up状态的容器的,docker rm f 容器名称或者id

1710083051307.png

docker rm -f docker ps -a -q #删除所有容器,-q是只显示容器id,反引号中的指令优先执行


docker top 查看容器内的进程

#例子docker top 容器id或者容器名字

1710083061358.png


docker stats 查看容器的资源占用情况

1710083074755.png

docker exec 进入容器

#例子: docker exec -it 容器id或者容器名字

# 直接交互指令:docker exec -it 76738703b7b2 ls # 执行ls指令

# 进入终端:docker exec -it 76738703b7b2 /bin/bash或者/bin/sh #/bin/bash打开一个终端窗口,exit指令退出终端

1710083094001.png


docker inspect -f ‘{{.Name}} => {{.NetworkSettings.IPAddress }}’ $(docker ps -aq) 可以查看所有容器的ip地址的,

容器的ip地址是从172.17.0.1开始分的。docker容器类似于一个

微型的虚拟机,它占用的都是宿主机(物理机)的资源。在物理机上是可以看到容器所运行的程序的。每个容器都有自己的ip地址。

1710083109339.png

docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}

{{.IPAddress}}{{end}}’ $(docker ps -aq) | grep “容器名称或者id”

0x04  实验安装wordpress

1710083124210.png

这里自动安装并启动了mysql5.7的服务。指定了root密码是123456,命名为mysql

1710083136635.png

自动拉取了wordpress5.6,并在86端口运行,与mysql链接。这么就不用自己配置数据库信息了。

访问86端口,成功进入安装界面

1710083147220.png

0x05  docker-compose

docker-compose是批量管理docker容器的工具,比如前面我们启动的wordpress项目,需要启动两个容器才行,有时候就是这样,需要同时启动多个容器来

完成你想要做的事情,但是到底启动多少个容器呢?比如wordpress那个,我们记不住,换一个机器不看笔记

很难起来,有了docker-compose就可以解决这个问题了。

apt install docker-compose

1710083168025.png

docker-compose -v  查看版本

1710083179311.png

以下是一个标准的yaml文件。我只是了解一下docker,并不用学这么深入,我就跳过了。

# 将如下内容拷贝到文件中保存退出,注意拷贝的时候,把里面我标记的注释去掉。
# 注意,下面这个文件内容是严格要求格式的,多一个空格都不行,通过缩进来表示等级关系,下面的这种配
置语法叫做yaml语法
version: '3'  # docker-compose.yml的文件格式版本
services:
   db:  #容器名称
     image: mysql:5.7
     restart: always  # 开机自启动的意思
     environment:
       MYSQL_ROOT_PASSWORD: 123456
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: 123456  # 和下面的WORDPRESS_DB_PASSWORD值要对应上
   wordpress:
     depends_on:
       - db
     image: wordpress:5.6  
     ports:
       - "83:80"  # 端口映射
     restart: always
     environment:
       WORDPRESS_DB_HOST: db
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: 123456

docker-compose常见命令

#创建并启动
docker-compose up -d # 启动之后就可以通过浏览器访问了
#停止并删除
docker-compose down
#重启
docker-compose restart
#停止
docker-compose stop
#启动
docker-compose start

非常感谢Breeze大师傅的精彩投稿,喜欢的小伙伴可以点点赞哦


同时感兴趣的小伙伴可以多多关注我们团队哦!!!

pFcErm8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值