docker!亲手带你玩转docker

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


0x00  什么是docker

软件的打包技术,就是将算乱的多个文件打包为一个整体,打包技术在没有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 -y
或
sudo apt-get install docker.io
#安装完成之后,docker就自动启动了
systemctl status docker   
#查看docker版本
docker -v  

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

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

3.apt update 更新一下apt缓存

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

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

5.设为开机自启

systemctl enable docker

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的镜像


docker images  查看本地镜像列表


dcoker pull  拉取镜像

docker pull tomcat:latest

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


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 查看镜像的运行状态

第一个就是容器值

docker save   

 #导出镜像(压缩包) docker save 镜像名称:版本 -o docker_nginx1.20.tar.gz
 #docker save nginx:1.16 -o docker.nginx1.16.tar.gz
    #ls 就看到了 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

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


docker top   查看容器内的进程  

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


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

docker exec   进入容器  

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

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

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


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

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

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

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

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

0x04  实验安装wordpress

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

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

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

0x05  docker-compose

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

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

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

apt install docker-compose

docker-compose -v   查看版本

 

 以下是一个标准的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

 

posted @ 2024-01-27 21:57  AllFalls  阅读(10)  评论(0编辑  收藏  举报