服务计算之玩转 Docker

一、 docker 安装

  • 如果有旧版本docker需要先通过指令卸载
sudo apt-get remove docker docker-engine docker-ce docker.io
  • 更新 apt 包索引
sudo apt-get update
  • 为了使apt可以通过https使用Repository,先安装以下包
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  • 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

在这一步可能会出现Protocol https not supported or disabled in libcurl"的错误提示,这是因为默认情况下,libcurl不支持https
使用curl -V指令后,也可以看到curl支持的协议里面不包括https
在这里插入图片描述
因为https协议是加密安全的基于http的协议,需要使用openssl的静态库,所以需要支持https就必须下载并安装openssl

sudo apt-get install libssl-dev

下载安装openssl后进入curl文件夹下执行如下指令重新安装curl

./configure --with--ssl
make
make install

此时再次执行curl -V,可以看到现在curl支持https协议
再次执行之前报错的添加Docker官方GPG密钥指令,执行成功
在这里插入图片描述

  • 检查GPG Key信息是否正确
sudo apt-key fingerprint 0EBFCD88
  • GPG Key信息如下
    在这里插入图片描述

  • 添加源信息

# 将源信息直接写入/etc/apt/sources.list
$ sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
  • 确认Docker的源信息是否正确, 新的源是否添加成功
sudo apt-cache madison docker-ce

结果如下在这里插入图片描述

  • 安装最新版本的Docker CE
sudo apt-get install -y docker-ce
  • docker 安装验证
sudo docker version

如果安装成功,将会显示以下结果
在这里插入图片描述


二、 docker 基本操作

  • 获得帮助
docker --help

在这里插入图片描述

  • 新建并启动镜像

使用docker run命令即可新建并启动一个容器。
-d:表示后台运行
-p:随机端口映射,例如

  • ip:hostPort:containerPort
  • ip::containerPort
  • hostPort:containerPort
  • containerPort
sudo docker run hello-world -d -p 91:80 nginx
-d # 后台运行
-p 宿主机端口:容器端口 # 开放容器端口到宿主机端口

  • 运行第一个容器

运行Hello World,校验Docker是否安装成功。运行这个命令会下载一个hello-world的镜像, 并且运行在一个容器中。该容器运行时会有如下输出

docker run hello-world

在这里插入图片描述

  • 运行镜像

要点:-it 参数,通过终端与进程(容器)交互,stdin,stdout,stderr定向到 TTY

docker run -it ubuntu bash

在这里插入图片描述

  • 搜索镜像

使用docker search命令搜索存放在Docker Hub中的镜像

sudo docker search java

执行该命令后,Docker就会在Docker Hub中搜索含有 java 这个关键词的镜像仓库

  • 下载镜像
sudo docker pull java

执行该命令后,Docker会从Docker Hub中的java仓库下载最新版镜像,其他镜像的下载类似


  • 显示本地镜像库内容
docker images

REPOSITORY:镜像所属仓库名称
TAG:镜像标签。默认是latest,表示最新
IMAGE ID:镜像ID,表示镜像唯一标标识
CREATED:镜像创建时间
SIZE:镜像大小
在这里插入图片描述

  • 删除镜像

删除指定名称的镜像方法如下

sudo docker rmi hello-world

删除所有镜像

sudo docker rmi -f $(docker images)

其中 -f参数表示强制删除


  • 显示运行中容器
docker ps

在这里插入图片描述

  • 显示所有容器(包含已中止)
docker ps -a

CONTAINER_ID:表示容器ID
IMAGE:表示镜像名称
IMAGE:表示镜像名称
CREATED:表示容器创建时间
STATUS:表示容器运行状态。UP表示运行中,Exited表示已停止
PORTS:表示容器对外的端口号
NAMES:表示容器名称,该名称默认由Docker自动生成,也可使用docker run命令的–name选项自定指定
在这里插入图片描述

  • 继续运行原容器并进入

docker restart命令实际上是先执行了docker stop命令,然后再执行了docker start命令
docker attach命令可以进入运行中的容器

docker restart sharp_payne
docker ps
docker attach sharp_payne

在这里插入图片描述

  • 删除容器

删除指定容器(已停止)

sudo docker rm sharp_payne

删除指定容器(未停止)

sudo docker rm -f sharp_payne

删除所有容器

sudo docker rm -f $(docker ps -a -q)

三、 MySQL与容器化

  • 拉取 MySQL 镜像
docker pull mysql:5.7

文件比较大,因此可能会下载的很慢,如果其中一项下载失败可能需要多试几次
在这里插入图片描述

  • 启动服务器
sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

-p:端口映射。将容器的3306端口映射到宿主机的3306端口。[宿主机]:[容器]
-e:设置环境变量。这里是设置root账号的密码为root
–name:将容器命名为mysql2

在这里插入图片描述

  • 启动 MySQL 客户端
docker run -it --net host mysql:5.7 "sh"
mysql -h127.0.0.1 -P3306 -uroot -proot
...
mysql>
  • sudo docker run -it --rm --net host mysql:5.7 "sh"启动了容器内 sh 进程
  • -it 等价于 -i -t ,表示使用当前 stdin 和 stdout 作为该进程的 io
  • –rm , 当该进程结束时,自动清理该容器的文件系统空间
  • –net host,表示容器使用当前主机的网络环境

在这里插入图片描述

  • mysql 基本数据库操作

    • 创建数据库 test : create datebase test;
    • 查询数据库: show databases;
    • 设定 test 为当前数据库: use test;
    • 删除数据库 test: drop database test;
    • 显示表: show tables;
    • 显示表 userinfo 结构: describe userinfo
    • 执行查询语句:sql statement;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值