CentOS7下docker安装+基本操作

    技术2024-11-06  11

    一、Docker 安装

    Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看此前提条件来验证你的 CentOS 版本是否支持 Docker 。 需要安装 64位CentOS7.x 以上的版本。

    1、查看当前系统的内核版本是否高于 3.10

    [root@docker-1 ~]# uname -r 3.10.0-693.el7.x86_64

    2、 安装 Docker 服务 

     卸载旧版本:(如果安装过旧版本的话) 

    yum remove docker docker-common docker-selinux docker-engine

    安装所需的软件包 

    yum-utils 提供了 yum-config-manager 实用程序,并且 devicemapper 存储驱动需要device-mapperpersistent-data 和 lvm2

    yum install -y yum-utils device-mapper-persistent-data lvm2

     设置Docker的镜像仓库(阿里)

    yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    安装最新版本的 Docker CE

    yum -y install docker-ce

    二、卸载 Docker 服务 

    1. 卸载 Docker 软件包 

    yum remove docker-ce

    2. 删除镜像/容器等

    rm -rf /var/lib/docker

    三、启动与停止Docker服务 

    systemctl 命令是系统服务管理器指令,它是service 和 chkconfig 两个命令组合。 启动docker:systemctl start docker 停止docker:systemctl stop docker 重启docker:systemctl restart docker 查看docker状态:systemctl status docker 开机自动启动docker:systemctl enable docker

    四、 镜像操作

     1、查看镜像列表

    #列出已安装的所有镜像 docker images #只显示镜像ID docker images -q

    这些镜像都是存储在Docker宿主机的 /var/lib/docker 目录下 

    2、拉取镜像

    如果拉取失败,则配置国内镜像加速器(阿里):https://blog.csdn.net/qq_22049773/article/details/106322121

    #不配置版本号,则默认拉取最新版本 docker pull 镜像名:版本号 docker pull mysql:5.7

    3、删除镜像

    #删除某一个镜像 docker rmi -f 镜像ID #删除所有镜像 (是 `` 反单引号 ) docker rmi -f `docker images -q` 其中 docker images -q 获取所有镜像id

    五、容器操作

    1、查看容器

    #查看正在运行的隆起 docker ps  #查看所有隆起 docker ps -a #查看最后一次运行的容器 docker ps -l #查看停止的容器 docker ps -f status=exited CONTAINER IDIMAGE COMMAND CREATEDSTATUS PORTS NAMES容器 ID镜像初始命令创建日期 容器状态端口号容器名字

    2、创建容器

    注意:必须先有镜像,再有容器

    docker pull mysql:5.7

     

    创建容器命令:

    docker run [OPTIONS] 镜像名:标签名

    创建容器 [OPTIONS] 常用的参数说明:

    -i 表示交互式运行容器(就是创建容器后,马上会启动容器,并进入容器 ),通常与-t 同时使用 。

    -t 启动后会进入其容器命令行, 通常与 -i 同时使用; 加入 -it 两个参数后,容器创建就能登录进去。即 分配一个伪终端。

    --name 为创建的容器指定一个名称 。

    -d 创建一个守护式容器在后台运行,并返回容器ID; 这样创建容器后不会自动登录容器,如果加-i参数,创建后就会运行容器。

    -v 表示目录映射, 格式为:-p 宿主机目录:容器目录 注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

    -p 表示端口映射,格式为:-p 宿主机端口:容器端

     

    创建容器,例子:

    1、交互式容器     

         说明: 就是创建容器后,马上会启动容器,并进入容器

         docker run -it --name=mysqlMaster mysql:5.7 /bin/bash

         (1)退出容器:exit   ,此时容器为退出停止状态

         (2)退出,但不停止容器:按键盘:Ctrl + p + q ,按一次一行,则多按几次,一般是连两次即可。

    2、守护式容器 

          说明:后台运行的容器

         docker run -id --name=mysqlSalve mysql:5.7 /bin/bash

    3、启动/停止容器

     

    启动已运行过的容器:        docker start 容器名称|容器id        如:docker start mysqlMaster

     

    停止正在运行的容器(正常停止):

           docker stop 容器名称|容器id       如:docker stop mysqlMaster

    4、登入容器

    docker exec -it 容器名称|容器id /bin/bash

    如:docker exec -it mysqlMaster /bin/bash

    5、删除容器

    docker rm 容器名称 | 容器ID

    例:docker rm mysqlMaster 注意,只能删除停止的容器

    6、查看容器IP

    docker inspect --format='{{.NetworkSettings.IPAddress}}' mysqlMaster

    六、拷贝宿主机与容器中的文件

    1、将宿主机文件拷贝到容器内

    语法:

    docker cp 要拷贝的宿主机文件或目录  容器名称:容器文件或目录

    docker cp /root/testCopy.txt wnd_tomcat8:/opt/

    2、从容器内文件拷贝到宿主机

    语法:

    docker cp 容器名称:要拷贝的容器文件或目录 宿主机文件或目录 

    docker cp wnd_tomcat8:/opt/testCopy.txt /root

    七、数据目录挂载

    docker run -id --name=wnd_tomcat8 -p 8888:8080 -v /usr/local/project:/usr/local/tomcat/webapps --privileged=true tomcat:8 /bin/bash

    -p 表示地址映射, 宿主机端口号:容器运行端口号

    -v 表示地址映射, 宿主机目录:容器映射目录

    --privileged=true 如果映射的是多级目录,防止有可能会出现没有权限的问题,所以加上此参数

    八、备份与迁移

    1、容器保存为镜像

    语法:

            docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]

    (1)、无目录挂载-容器保存为镜像 

                 查看镜像是否有挂载目录:docker inspect --format='{{.Mounts}}' 容器名              例: docker commit -m=“mysql一主一从” -a="maodou" mysql-master mysql-master:1.1

                         docker commit -m=“mysql一主一从” -a="maodou" mysql-slave mysql-slave:1.1

    (2)、有目录挂载-容器保存为镜像

                问题: 如果Docker对容器挂载了数据目录, 在将容器保存为镜像时,数据不会被保存到镜像中。

                原因:因为宿主机与容器做了路径映射,再commit一个新的镜像时,该路径下的所有数据都会被抛弃,不会 被保存到新镜像中。可通过 docker inspect --format='{{.Mounts}}' 镜像名 查看是否有目录挂载.

                解决:

                        目录挂载方法。先把在宿主机的数据备份在某个目录下,在 docker run 的时候使用-v参数将宿主机上的 目录映射到容器里的目标路径中(tomcat是 /usr/local/tomcat/webapps ,mysql是var/lib/mysql)

                        拷贝方法。先把在宿主机的数据备份在某个目录下,通过拷贝的方法 docker cp 将备份的数据复制进容 器里的目标路径中(tomcat是 /usr/local/tomcat/webapps ,mysql是var/lib/mysql)。

    2、镜像备份

    docker save -o mysql-master.1.1.tar mysql-master:1.1

     

    3、镜像恢复

    删除镜像:docker rmi mysql-master:1.1

    恢复镜像:docker load -i mysql-master.1.1.tar

    -i 输入的镜像文件

     

     九、容器中安装vim

    apt-get update,然后执行 apt-get install -y vim

     

     

    Processed: 0.020, SQL: 9