Docker-基础使用

作者: 石头耳东 | 来源:发表于2022-03-09 12:23 被阅读0次

零、本文纲要

  • 一、认识Docker
  • 二、Docker架构
  • 三、安装Docker
  • 四、启用Docker
  • 五、Docker的基本命令
  • 六、Docker数据卷
  • 七、Docker命令小结(仅看命令可跳到此处)

tips:Ctrl + F快速定位到所需内容阅读吧。

一、认识Docker

  • 1、Docker解决依赖兼容问题
    ① 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包;
    ② 将每个应用放到一个隔离容器去运行,避免互相干扰。

  • 2、Docker解决操作系统环境差异问题
    ① Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包;
    ② Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行。

  • 3、Docker的优势
    ① 可以将程序及其依赖运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统;
    ② 运行时利用沙箱机制形成隔离容器,各个应用互不干扰;
    ③ 启动、移除都可以通过一行命令完成,方便快捷。

  • 4、Docker和虚拟机的区别
    ① Docker是一个系统进程;虚拟机是在操作系统中的操作系统;
    ② Docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般。

二、Docker架构

镜像(Image)容器(Container)是我们较为关注的概念。

  • 2、镜像(Image)
    Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

  • 3、容器(Container)
    镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见。

  • 4、主机(Host)
    一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

  • 5、仓库(Registry)
    仓库用来保存镜像,可以理解为代码控制中的代码仓库。
    Docker Hub(https://hub.docker.com) 是一个官方的Docker镜像的托管平台,提供了庞大的镜像集合供使用。
    国内也有类似于DockerHub 的公开服务,比如 网易云镜像服务阿里云镜像库等。

Docker architecture.png

三、安装Docker

Install Docker Engine on CentOS | Docker Documentation

  • 1、系统要求
    此处官方要求CentOS必须是7/8版本。
    To install Docker Engine, you need a maintained version of CentOS 7 or 8. Archived versions aren’t supported or tested.
  • 2、卸载老版本
    如果安装过老版本的Docker,先卸载,再安装新版本。
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  • 3、安装Docker

① 安装yum工具,此处需保持虚拟机联网

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

② 更新本地镜像源
此处我们设置阿里云为本地镜像源,以保障基础下载速度。

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

③安装Docker
docker-ce为社区免费版本,ee版本为企业版。

yum install -y docker-ce

至此,我们就已经完成Docker的基础安装了。

四、启用Docker

  • 1、启动Docker

① 关闭防火墙/开放对应端口
Docker应用会用到诸多端口,实际生产环境中推荐按需开启。此处我们直接关闭防火墙。

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld

② 命令启动Docker

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

③ 查看Docker版本

docker -v
  • 2、配置镜像加速

此处我们配置阿里云的容器镜像服务 (aliyun.com)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://1ifz7405.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

五、Docker的基本命令

1、镜像操作

① 镜像
在Docker中,镜像名称为:NAME[:TAG|@DIGEST]。其中NAME部分是必须的,也就是镜像名称。[:TAG|@DIGEST]标签或者摘要部分是可选的,如:nginx:1.20。

② 镜像命令
具体可以查阅官方文档:docker image | Docker Documentation

镜像命令.png
  • 1.1 拉取、查看镜像

① 去镜像仓库搜索镜像
此处我们可以访问Docker Hub,然后搜索自己所需的镜像,选择Official Image官方镜像即可。

搜索镜像.png

② 镜像拉取
直接pull等同于pull latest版本,也就是最新版本。

docker pull nginx
docker pull nginx:latest

当然也可以根据自己实际需求,选择对应的版本。

查找仓库有的版本.png

③ 查看镜像

docker images
  • 1.2 保存、删除、导入镜像

① 保存镜像
命令:docker save [OPTIONS] IMAGE [IMAGE...],可见[OPTIONS]和[IMAGE...]是可选的。
[OPTIONS] -o,--output Write to a file, instead of STDOUT表示向外输出文件。

# 表示向外输出nginx:latest镜像的nginx.tar文件
docker save -o nginx.tar nginx:latest

② 删除镜像
命令:docker image rm [OPTIONS] IMAGE [IMAGE...]
或者docker rmi [OPTIONS] IMAGE [IMAGE...]
此处,我们可以看到Docker为了增加命令可读性也下了一定的功夫。

docker rmi nginx:latest

③ 导入镜像
命令:docker image load [OPTIONS]
-i,--input Read from tar archive file, instead of STDIN表示从文件读取。

docker load -i nginx.tar

2、容器操作

容器操作.png
  • docker run:创建并运行一个容器,处于运行状态
  • docker pause:让一个运行的容器暂停
  • docker unpause:让一个容器从暂停状态恢复运行
  • docker stop:停止一个运行的容器
  • docker start:让一个停止的容器再次运行
  • docker rm:删除一个容器
  • 2.1 创建并运行一个容器

我们可以在Docker Hub中查询到如何创建运行一个容器的相关命令,官方给我们提供了几种使用场景的命令。此处我们以Nginx为例。

如何使用镜像.png

① 创建并运行Nginx容器
官方命令:$ docker run --name some-nginx -d -p 8080:80 some-content-nginx,其中some-nginx是给image镜像的命名(唯一即可),some-content-nginx是我们本机对应的nginx镜像。
我们稍加改动,就可以运行自己的Nginx容器了。如下:

docker run --name mn -d -p 80:80 nginx:latest

-d :Run container in background and print container ID 后台运行;
-p :Publish a container's port(s) to the host 将容器端口映射到宿主机端口。
此时我们就可以通过 http://192.168.253.168:80/ 访问到我们的Nginx。
查看日志
docker logs
查看容器状态
docker ps
docker ps -a 查看所有容器,包括已经停止的(不包含已移除的)。
② 创建并运行Redis容器

创建运行Redis.png

官方命令:$ docker run --name some-redis -d redis redis-server --save 60 1 --loglevel warning,我们稍加修改,添加-p指令将Redis容器端口映射到主机端口。

$ docker run --name mr -p 6379:6379 -d redis:latest redis-server --save 60 1 --loglevel warning

这样,我们就可以通过Redis客户端连接访问Redis容器。

六、Docker数据卷

  • 1、认识数据卷
    数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
    一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录。同样我们操作宿主机的目录,就等于操作容器内的目录。
数据卷.png

① 创建数据卷
命令:docker volume create [OPTIONS] [VOLUME]

docker volume create html

② 查看所有数据卷
命令:docker volume ls [OPTIONS]

docker volume ls

③ 查看数据卷详细信息
命令:docker volume inspect [OPTIONS] VOLUME [VOLUME...]

docker volume inspect html

输出信息如下:

[
  {
    "CreatedAt": "2020-04-19T11:00:21Z",
    "Driver": "local",
    "Labels": {},
    "Mountpoint": "/var/lib/docker/volumes/html/_data",
    "Name": "myvolume",
    "Options": {},
    "Scope": "local"
  }
]

可以看到,我们创建的html这个数据卷关联的宿主机目录为/var/lib/docker/volumes/html/_data目录。

  • 2.2 挂载数据卷

① 带数据卷模式挂载
指令:-v, --volume=[host-src:]container-dest[:<options>]: Bind mount a volume.,如下我们就是把html数据卷挂载到Nginx容器内的/usr/share/nginx/html目录中。

docker run \
--name mn \
-v html:/usr/share/nginx/html \
-p 80:80 \
-d \
nginx:latest

这样我们修改/var/lib/docker/volumes/html/_data目录中的文件,容器中对应的文件也会产生变化。
② 直接挂载

  • -v [宿主机目录]:[容器内目录]
  • -v [宿主机文件]:[容器内文件]
docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25

七、Docker命令小结(仅看命令可跳到此处)

① docker相关
启动docker服务systemctl start docker
停止docker服务systemctl stop docker
重启docker服务systemctl restart docker
查看docker版本docker -v
② 镜像相关
镜像拉取:docker pull nginx,docker pull nginx:latest
查看镜像:docker images
保存镜像:docker save -o nginx.tar nginx:latest
删除镜像:docker rmi nginx:latest
导入镜像:docker load -i nginx.tar
③ 容器相关
创建并运行容器:docker run --name mn -d -p 80:80 nginx:latest
让运行容器暂停:docker pause mn
让容器从暂停状态恢复运行:docker unpause mn
停止运行的容器:docker stop mn
让停止的容器再次运行:docker start mn
删除一个容器:docker rm mn
查看日志:docker logs
查看容器状态:docker ps,docker ps -a
④ 数据卷相关
创建数据卷:docker volume create html
查看所有数据卷:docker volume ls
查看数据卷详细信息:docker volume inspect html
挂载数据卷:-v html:/usr/share/nginx/html,-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf

八、结尾

以上即为Docker基础的内容,感谢阅读。

相关文章

  • Docker-基础使用

    零、本文纲要 一、认识Docker 二、Docker架构 三、安装Docker 四、启用Docker 五、Dock...

  • RabbitMQ-基础使用(Spring AMQP)

    前置文章:Docker-基础使用[https://www.jianshu.com/p/73b42f6b2e4a]—...

  • Docker常用命令

    Docker-使用Docker 从``Docker Hub`镜像来源下载镜像 https://hub.docker...

  • Docker-基础

    1.Docker Platform Docker是一个开发、打包、运行APP的平台,它把应用和底层基础设施隔离,让...

  • 1.IaaS--基础设施即服务之--Docker中构建镜像

    本文转载自:https://www.funtl.com/zh/docker/Docker-使用-Dockerfil...

  • docker-基础命令和使用案例

    Docker基础命令 Dockerfile指令 编写Dockerfile原则 1.减少镜像层:一次RUN指令形成新...

  • Docker-基础指令

    Docker docker文档地址: 基本的名词 客户端,服务器,仓库 镜像(image): docker镜像就好...

  • Docker-初步使用

    学习入门网址:https://docs.docker.com/get-started/ 什么是 Docker 基本...

  • 为什么要使用 Docker

    学习完整课程请移步 互联网 Java 全栈工程师 本节视频 【视频】基础设施即服务-Docker-为什么要用 Do...

  • Docker-使用场景

    Docker 八个使用场景 简化配置 这是Docker公司宣传的Docker的主要使用场景。虚拟机的最大好处是能在...

网友评论

    本文标题:Docker-基础使用

    本文链接:https://www.haomeiwen.com/subject/iactdrtx.html