IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Centos7.x与Docker -> 正文阅读

[系统运维]Centos7.x与Docker

一、VMware创建虚拟机

二、加载Centos镜像安装系统

由于在安装docker的过程中,会遇到各种各样的错误,为了降低时间开销,需要利用VMware备份操作系统。
在这里插入图片描述

三、Docker安装

由于Docker 要求 CentOS 系统的内核版本高于 3.10,在安装docker前,先查看是否符合要求。

[root@localhost /]# uname -r
3.10.0-1160.el7.x86_64

3.1 更新yum

[root@localhost /]# yum update

更新成功如下图所示。
yum更新成功

3.2 安装yum-utils

[root@localhost /]# yum install -y yum-utils

安装成功如下图所示。
在这里插入图片描述

3.3 安装device-mapper-persistent-data

 [root@localhost /]# yum install -y device-mapper-persistent-data

安装成功如下图所示。
在这里插入图片描述

3.4 安装lvm2

[root@localhost /]# yum install -y lvm2

安装成功如下图所示。
在这里插入图片描述

3.5 设置yum源

如果不设置yum源为国内站点,默认是国外站点,容易出错。

[root@localhost /]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

配置成功如下图所示。
在这里插入图片描述

3.6 安装docker-ce版本

-ce表示这是docker的社区版,免费的。

[root@localhost /]# yum install docker-ce

安装成功如下图所示。
在这里插入图片描述
查看安装的docker版本。

[root@localhost /]# docker -v
Docker version 20.10.7, build f0df350

也可利用docker version命令查看详细信息。

[root@localhost /]# docker version
Client: Docker Engine - Community
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        f0df350
 Built:             Wed Jun  2 11:58:10 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Q&A: 打印信息报“***Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?***”的错误,如何解决?
输入下面的命令启动docker服务即可。

[root@localhost /]# systemctl start docker.service

重新查看docker version信息,结果如下图所示。

[root@localhost /]# docker version
Client: Docker Engine - Community
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        f0df350
 Built:             Wed Jun  2 11:58:10 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.7
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       b0f5bc3
  Built:            Wed Jun  2 11:56:35 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.6
  GitCommit:        d71fcd7d8303cbf684402823e425e9dd2e99285d
 runc:
  Version:          1.0.0-rc95
  GitCommit:        b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

这实际上验证了“Docker是一个客户端-服务器(C/S)架构程序”。

[root@localhost /]# uname -r

3.7 设置ustc镜像源

切换到**/etc/docker**目录下,查看其中的文件结构,可以看到没有daemon.json文件。

[root@localhost /]# cd /etc/docker
[root@localhost docker]# ls
key.json

直接vi命令新建一个即可。并在该文件中添加如下内容。

[root@localhost docker]# vi daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

3.8 Docker的Hello World

执行docker run(创建一个容器)命令,结果如下所示。
输出的打印信息含义已注释在代码中。

从打印信息的4个step可以窥见docker的大致原理:
(1)docker客户端连接到docker服务守护进程;
(2)docker守护进程(或者说,docker服务器)从docker Hub拉取镜像文件;
(3)docker守护进程从相应镜像(image)创建一个容器(container);
(4)docker守护进程把镜像中的信息发送给docker客户端,并在终端中显示。

[root@localhost /]# docker run hello-world
Unable to find image 'hello-world:latest' locally       // 说明本地没有找到hello-world镜像
latest: Pulling from library/hello-world                // 下载最新的hello-wprld镜像
b8dfde127a29: Pull complete
Digest: sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e
Status: Downloaded newer image for hello-world:latest

Hello from Docker!                                  // 出现这个表示docker安装正确,撒花!!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

**Q&A:**daemon与服务之间的关系?
在这里插入图片描述

3.9 查看docker中的镜像

在执行docker的hello world后,查看docker中的镜像,结果如下所示,多了一个hello world的镜像。

[root@localhost /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   4 months ago   13.3kB

可以使用rmi命令删除指定镜像,镜像名支持模糊搜索。

[root@localhost docker]# docker rmi d1

在删除时,报以下错误:

Error response from daemon: conflict: unable to delete d1165f221234 (must be forced) - image is being used by stopped container c8ac7c654d8c

根据描述,可知,有一个容器正在使用这个镜像,必须要先关闭容器。
利用docker ps命令,查看所有的容器,可以看到有一个使用“hello-world”镜像的容器,

[root@localhost /]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
c8ac7c654d8c        hello-world         "/hello"            13 minutes ago      Exited (0) 13 minutes ago                       modest_raman

如果要删除所有镜像

[root@localhost docker]# docker rmi `docker images -q`

3.10 搜索镜像

搜索镜像命令如下,可以看到报了以下错误,不要慌,耐心等待片刻,重新敲命令回车即可,或者可以给要查找的镜像名加上版本号。

[root@localhost /]# docker search mysql
Error response from daemon: Get https://index.docker.io/v1/search?q=mysql&n=25: read tcp 192.168.60.132:37382->34.192.247.57:443: read: connection reset by peer

四、docker常用命令

4.1 docker run 创建容器


创建容器命令:docker run

-i:表示运行容器

-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

–name :为创建的容器命名。

-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。

-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射


  1. 通过docker run命令可以创建一个容器,指定依赖的镜像,如下所示。

  2. 创建成功后,会进入容器,@后面的ID号就是容器的编号。

  3. 进入容器后,docker相关的命令不可用,由于该容器使用的是centos7的镜像,因此进入容器,就相当于进入一个centos系统。

  4. ll命令可以查看容器中的文件目录,可以看到与Linux系统相似。

[root@localhost /]# docker run -it --name=mycentos centos:7 /bin/bash
[root@9100b6a7f74e /]#
[root@9100b6a7f74e /]# docker ps
bash: docker: command not found
[root@9100b6a7f74e /]#
[root@9100b6a7f74e /]# ll
total 12
-rw-r--r--.   1 root root 12114 Nov 13  2020 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Nov 13  2020 bin -> usr/bin
drwxr-xr-x.   5 root root   360 Jul 11 07:04 dev
drwxr-xr-x.   1 root root    66 Jul 11 07:04 etc
drwxr-xr-x.   2 root root     6 Apr 11  2018 home
lrwxrwxrwx.   1 root root     7 Nov 13  2020 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Nov 13  2020 lib64 -> usr/lib64
drwxr-xr-x.   2 root root     6 Apr 11  2018 media
drwxr-xr-x.   2 root root     6 Apr 11  2018 mnt
drwxr-xr-x.   2 root root     6 Apr 11  2018 opt
dr-xr-xr-x. 121 root root     0 Jul 11 07:04 proc
dr-xr-x---.   2 root root   114 Nov 13  2020 root
drwxr-xr-x.  11 root root   148 Nov 13  2020 run
lrwxrwxrwx.   1 root root     8 Nov 13  2020 sbin -> usr/sbin
drwxr-xr-x.   2 root root     6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root     0 Jul 11 05:25 sys
drwxrwxrwt.   7 root root   132 Nov 13  2020 tmp
drwxr-xr-x.  13 root root   155 Nov 13  2020 usr
drwxr-xr-x.  18 root root   238 Nov 13  2020 var

通过docker ps命令(通过SSH工具),可以看到容器中多了一个,如下所示,并且状态是Up。

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                      PORTS               NAMES
9100b6a7f74e        centos:7            "/bin/bash"         About a minute ago   Up About a minute                               mycentos
c8ac7c654d8c        hello-world         "/hello"            41 minutes ago       Exited (0) 41 minutes ago                       modest_raman

通过exit命令,可以退出容器。

[root@9100b6a7f74e /]# exit
exit
[root@localhost /]#

同时,查看容器状态,如下所示,对应的容器状态变成了Exit。

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS               NAMES
9100b6a7f74e        centos:7            "/bin/bash"         11 minutes ago      Exited (0) 9 seconds ago                           mycentos
c8ac7c654d8c        hello-world         "/hello"            About an hour ago   Exited (0) About an hour ago                       modest_raman

4.2 以守护方式创建容器

可以发现,当以守护方式创建容器成功后,并没有进入容器,利用docker ps命令查看,发现创建的容器正在运行。

[root@localhost ~]# docker run -di --name=mycentos2 centos:7
e8dc522f2f4db1877ff48522c3af11f4bb3b15b26bbb5324a50a0b032471ad0e
[root@localhost ~]#
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
e8dc522f2f4d        centos:7            "/bin/bash"         6 seconds ago       Up 6 seconds                                 mycentos2
9100b6a7f74e        centos:7            "/bin/bash"         7 hours ago         Exited (0) 7 hours ago                       mycentos
c8ac7c654d8c        hello-world         "/hello"            8 hours ago         Exited (0) 8 hours ago                       modest_raman

4.3 启动/停止容器和进入容器

如果想进入一个容器,首先必须确保它处于Up状态,否则进入不成功。

// 开启容器
[root@localhost ~]# docker start mycentos
// 停止容器
[root@localhost ~]# docker stop mycentos
// 进入容器
[root@localhost ~]# docker exec -it mycentos bash

4.4 目录挂载

通过下面的命令,可以将宿主机的目录和docker的目录建立映射,修改同步。

// 冒号前是宿主机目录;冒号后是docker目录
// 宿主机目录:容器目录
[root@localhost ~]# docker run -di --name=mycentos3 -v /test:/test centos:7

4.5 查看容器信息

通过下面的命令可以查看容器的相关信息。

// 所有信息
[root@localhost /]# docker inspect mycentos3
// 筛选出IP地址,只查看这一项
[root@localhost /]# docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos3
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:54:04  更:2021-07-13 17:55:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 1:28:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码