二.Docker的简单使用

214 阅读4分钟

一. Docker的安装-基于Centos7

1.1.1 使用官方安装脚本自动安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

1.1.2 手动安装

  • 卸载旧版本
$sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  • 安装Docker Engine-Community
  • 使用 Docker 仓库进行安装

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

  • 设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2
国内的稳定仓库:

$ sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安装 Docker Engine-Community

$ sudo yum install docker-ce docker-ce-cli containerd.io

  • 启动Docker

sudo systemctl start docker

  • 通过运行 hello-world 镜像来验证是否正确安装了 Docker Engine-Community 。

$ sudo docker run hello-world

1.1.3 卸载dokcer

  • 删除安装包

yum remove docker-ce

  • 删除镜像、容器、配置文件等内容:

rm -rf /var/lib/docker

二 Docker的简单命令使用

  • **docker run ** 在容器内运行一个应用程序。

image.png
各个参数解析:

  • docker: Docker 的二进制执行文件。
  • run: 与前面的 docker 组合来运行一个容器。
  • centos: 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
  • **/bin/echo "Hello world": **在启动的容器里执行的命令

以上命令完整的意思可以解释为:Docker 以centos 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。

运行交互式的容器 我们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现**"对话"**的能力:

Docker 镜像指令

  1. Docker 中当前拥有哪些镜像: docker images 或者 docker image ls
newzhong@newzhong-PC:~/Desktop$ docker images
REPOSITORY    TAG          IMAGE ID       CREATED         SIZE
rabbitmq      management   799381c528ac   6 months ago    254MB
mongo         latest       5285cb69ea55   6 months ago    698MB
mariadb       10.3         0e8d01679c3b   6 months ago    387MB
mariadb       latest       45a5a43e143a   6 months ago    410MB
mysql         latest       d1dc36cf8d9e   6 months ago    519MB
redis         latest       f1b6973564e9   6 months ago    113MB
mysql         5.7          42f82e150ec2   6 months ago    448MB
nginx         latest       605c77e624dd   7 months ago    141MB
redis         6.0          5e9f874f2d50   7 months ago    112MB
hello-world   latest       feb5d9fea6a5   10 months ago   13.3kB
centos        latest       5d0da3dc9764   10 months ago   231MB

其中REPOSITORY为镜像名,TAG为版本标志,IMAGE ID为镜像 id(唯一的),CREATED为镜像创建者创建的时间,SIZE为镜像大小。
该指令能够查询指定镜像名:docker images rabbitmq,这样会列出所有的在Docker中的rabbitmq的镜像。
image.png
该指令还能够携带-q参数:docker images -q , -q表示仅显示镜像的 id:
image.png

  1. 下载镜像 docker pull --- docker pull redis:6.0

docker pull是固定的,后面写上需要下载的镜像名及版本标志;若是不写版本标志,而是直接执行docker pull MySQL,则会下载镜像的最新版本。

  1. 搜索镜像 docker search
  2. 搜索镜像 指定版本 docker search Mysql:5.7
  3. 删除镜像
    1. 通过镜像id docker image rm 00

image.png
b. 删除指定版本 : docker image rm mariadb:10.3 若不指定版本就删除最新的
如果要删除的镜像正在运行,就无法删除 -f 强制删除

2.1 Docerk的容器指令

  1. 通过镜像运行容器 docker run mysql:5.7
  2. 创建并启动rabbitmq
docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_VHOST=/ -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest --hostname myRabbit --name rabbitmq rabbitmq

参数说明 -d:表示在后台运行容器; -p:将容器的端口 5672(应用访问端口)和 15672 (控制台Web端口号)映射到主机中; -e:指定环境变量: RABBITMQ_DEFAULT_VHOST:默认虚拟机名; RABBITMQ_DEFAULT_USER:默认的用户名; RABBITMQ_DEFAULT_PASS:默认的用户密码; --hostname:指定主机名(RabbitMQ 的一个重要注意事项是它根据所谓的 节点名称 存储数据,默认为主机名); --name rabbitmq:设置容器名称; rabbitmq:容器使用的镜像名称;

image.png

  1. 设置docker启动的时候自动启动rabbitmq

docker update rabbitmq --restart=always

  1. 启动rabbit_management
    1. 先进入rabbitmq容器
      1. docker exec -it rabbitmq /bin/bash
      2. 在执行 rabbitmq-plugins enable rabbitmq_management

image.png
b. 直接执行 docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management
image.png

2.2 docker启用和停用相关命令

  1. 列出容器 docker ps
  • -a :显示所有的容器,包括未运行的。
  • -f :根据条件过滤显示的内容。
  • --format :指定返回值的模板文件。
  • -l :显示最近创建的容器。
  • -n :列出最近创建的n个容器。
  • --no-trunc :不截断输出。
  • -q :静默模式,只显示容器编号。
  • -s :显示总的文件大小。
  1. 通过容器的 id 启动docker start [id]
  2. 通过容器的 id 重启docker restart [id]
  3. 通过容器的 id 停止docker stop [id]
  4. 通过容器的 id 直接杀死容器docker kill [id]

2.3 日志

  1. 容器运行日志容器id:docker logs [id]
  2. 要想Linux一样实时的刷新日志使用-f参数: docker logs -f [id]
  3. 加-t 显示日志的时间戳

image.png

2.4 进程交互命令

  1. 运行 的那些进程: docker top [id]
  2. 进入容器: docker exec -it 463e3e91f709 bashimage.png
    1. 退出 exit 或者ctrl+ D
  3. 文件从外部复制到docker的容器里面 docker cp /usr/local/1.jar [id]:/usr/local/jar
  4. 也可以将容器里面的文件复制到外部:docker cp 463e3e91f709:/home/1.log /usr/local/

image.png