docker专项(一)docker的安装以及基本使用

326 阅读3分钟

docker(容器技术的一种实现) 我们经常会使用docker构造虚拟化环境,docker自动化部署已经慢慢成为发展的趋势。本人介绍下docker的基本使用,本人linux发行版本为centos7.4

基本概念

使用docker接触最多的就是以下3个概念,

  • 镜像:image (理解成打包好的代码)
  • 容器:container(跑代码的环境 例如lnmp)
  • 仓库:repository(代码仓库git)

docker的安装

# 卸载原来的docker(如果之前已经有安装过)
yum remove docker \
      docker-client \
      docker-client-latest \
      docker-common \
      docker-latest \
      docker-latest-logrotate \
      docker-logrotate \
      docker-engine

# 安装依赖
yum update -y && sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

# 添加官方yum库
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 安装docker
yum install docker-ce docker-ce-cli containerd.io

# 查看docker版本
docker --version

# 开机启动
systemctl enable --now docker

执行完上面的代码之后

image.png 看到上图的信息代表docker已经成功安装啦

配置一下 daemon.json 使用国内源下载镜像会快很多

vim /etc/docker/daemon.json

daemon.json 大致内容如下 ,当然,也可以配置自己的喜欢的其他源,例如阿里云的镜像源

{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
    ]
}

docker的基本命令可以去www.runoob.com/docker/dock… 菜鸟教程观看

接下来将介绍docker的基本使用

看完本文的目标:拉取公共镜像,运行镜像

先了解几个简单的概念

  • image(已经构建好的镜像)
  • container(装载并运行镜像的的东西)
  • 镜像仓库 如: hub.docker.com/ (公开的镜像仓库,类似于github)

本文以运行nginx容器为例子。我们先从镜像仓库中拉一个nginx的镜像下来

image.png

docker pull nginx

查看本地可用的镜像

[root@192 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    605c77e624dd   4 months ago   141MB

可以看到 本地上有一个nginx tag为latest的镜像 ,现在我们让nginx跑起来, 先看使用文档 跟github一样 dockerhub上面一般都会提供一些使用文档

image.png 我们往下滚

image.png 可以看到nginx的基本使用,先把执行命令贴出来

docker run -p 8080:80 --name some-nginx -v /home/www:/usr/share/nginx/html -itd nginx:latest

我们分析一下上面的代码

  • docker run (启动一个容器)
  • --name 给容器指定一个别名,方便以后管理(如 以后start stop rm 等)
  • -d 运行在后台,其实就是类似以守护进程的形式运行,一般我们都是 -itd 连着用
  • -v 文件挂载 格式 宿主机目录:容器目录 (例如 nginx容器中server的root目录为/usr/share/nginx/html,就相当于读取宿主机的/home/www)
  • -p 端口映射 宿主主机端口:容器中的端口 (即访问宿主主机的8080等同于访问容器的80。因为我们例子容器中的nginx监听的是80端口) 为了方便演示 我们在宿主主机的/home/www 目录下写一个index.html 内容如下
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
</head>
<body>
    <h2>欢迎来到容器中</h2>
</body>
</html>

现在我们启动容器,并使用docker ps 来查看运行中的容器 (docker ps -a可以看到所有容器)

[root@192 www]# docker run -p 8080:80 --name some-nginx -v /home/www:/usr/share/nginx/html -itd nginx:latest
4f2e8e6b116270ecdf01814bdbd4a3535f6103925530de50c73326b40e94489f
[root@192 www]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                   NAMES
4f2e8e6b1162   nginx:latest   "/docker-entrypoint.…"   5 seconds ago   Up 4 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   some-nginx

这个时候我们访问一下index.html

image.png

我们也可以通过 docker stop | start (some-nginx|4f2e8e6b1162) 来启动或者停止容器

至此,本文的目标完成啦