快捷搜索:  汽车  科技

docker最简单安装(Docker系列一安装Docker)

docker最简单安装(Docker系列一安装Docker)systemctllist-unit-files|grepenable 到这里,完成了安装。#启动 systemctlstartdocker #开机自启 sudosystemctlenabledocker 使用语句查看已经自启的服务 如果列表中存在即为设置成功:yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2 设置安装的源。yum-Config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo-y 建议直接下载最新稳定版,当然也可以下载指定版本。#下载最新版本 sudoyuminstalldocker-ce-y #查看所有版本 yumlistdocker-ce--showduplicates|sort-r #下载17.12.0版本的 y

前言

重新换了服务器,要在centOS7上面安装Docker

其实安装Docker分为两种,一种是在线安装也就是本文介绍的内容;另一种是离线安装,适合没有办法联网的伙伴,详情可以直接查看文末的推荐链接。

docker最简单安装(Docker系列一安装Docker)(1)

安装Docker

Docker 要求 CentOS 系统的内核版本高于3.10 ,验证你的CentOS 版本是否支持 Docker 。

#查看你当前的内核版本 uname-r

安装需要的软件包。

yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2

设置安装的源。

yum-Config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo-y

建议直接下载最新稳定版,当然也可以下载指定版本。

#下载最新版本 sudoyuminstalldocker-ce-y #查看所有版本 yumlistdocker-ce--showduplicates|sort-r #下载17.12.0版本的 yuminstalldocker-ce-17.12.0.ce

启动并加入开机启动

#启动 systemctlstartdocker #开机自启 sudosystemctlenabledocker

使用语句查看已经自启的服务 如果列表中存在即为设置成功:

systemctllist-unit-files|grepenable

到这里,完成了安装。

配置Docker

修改源为中科大的镜像源,修改/etc/docker/daemon.json文件内容为:

{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]}

保存后,重启Docker,查看是否成功。

#重启 systemctldaemon-reload systemctlrestartdocker #查看docker状态 systemctlstatusdocker #查看docker配置 dockerinfo

docker最简单安装(Docker系列一安装Docker)(2)

到这里就完成了配置。

使用Docker

这里以安装MySQL为例,进行讲解。

拉取镜像到本地

用root账户搜寻想要的镜像,一般是选择标星最多的。

#登陆root账户 sudo-i #搜寻镜像 dockersearchmysql #拉取镜像 sudodockerpullmysql

docker最简单安装(Docker系列一安装Docker)(3)

当然,如果不想要最新版本的,你也可以选择列出Tags。

#RepoName默认为官网docker库,镜像名为mysql,结果显示所有支持的tags exportRepoName=https://registry.hub.docker.com\ &&exportImagesName=mysql\ &&wget-q$RepoName/v1/repositories/$ImagesName/tags-O-|sed-e's/[][]//g'-e's/"//g'-e's///g'|tr'}''\n'|awk-F:'{print$3}'|sort-u

docker最简单安装(Docker系列一安装Docker)(4)

然后你选择删除已经下载的镜像,重新拉取指定版本的镜像。

#拉取指定版本的镜像 dockerpullmysql:5.7.30 #查看镜像 dockerimages

得到结果为:

REPOSITORYTAGIMAGEIDCREATEDSIZE mysqllatest3218b38490ce7monthsago516MB mysql5.7.309cfcce23593a2yearsago448MB

于是删除镜像

dockerrmi3218b38490ce

docker最简单安装(Docker系列一安装Docker)(5)

创建外部挂载目录

在用镜像创建容器之前,建议创建存储目录,来保存容器中的数据和配置信息,免得未来重启容器后就丢失数据了。

#自定义新建的目录名 exportMysqlName=mysql-5.7 #指定配置目录、数据目录 mkdir-p/home/keen/docker/$MysqlName/conf mkdir-p/home/keen/docker/$MysqlName/data #赋予权限 chmod-R755/home/keen/docker/$MysqlName/conf 配置容器

/home/keen/docker/mysql-5.7/conf/下创建文件my.cnf

vim/home/keen/docker/$MysqlName/conf/my.cnf #先按`i` 底下出现一个"Insert"的文字。

docker最简单安装(Docker系列一安装Docker)(6)

复制内容如下,到命令行里粘贴。

[mysqld] user=mysql max_connections=1000 skip-name-resolve character-set-server=utf8 default_authentication_plugin=mysql_native_password [client] default-character-set=utf8 [mysql] default-character-set=utf8

之后按esc键退出编辑模式;再输入英文冒号和字母组合:wq保存并退出。

docker最简单安装(Docker系列一安装Docker)(7)

启动容器

dockerrun\ --namemysql5.7.30\ -p4306:3306\ -eMYSQL_ROOT_PASSWORD=123456\ -d\ --restart=always\ --privileged=true\ -v/home/keen/docker/mysql-5.7/conf/my.cnf:/etc/mysql/my.cnf\ -v/home/keen/docker/mysql-5.7/data/:/var/lib/mysql\ mysql:5.7.30

  • --name mysql5.7.30:容器名字为mysql5.7.30
  • -p 4306:3306 :映射宿主机的 4306 端口到容器服务的 3306 端口,本地就可以直接通过宿主机ip:4306访问到 MySQL 的服务。
  • -e MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
  • -d:后台运行
  • --restart=always:Docker 重启的时候容器也会重启
  • –privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
  • -v /home/keen/docker/mysql-5.7/conf/my.cnf:/etc/mysql/my.cnf映射配置文件
  • -v /home/keen/docker/mysql-5.7/data/:/var/lib/mysql:映射数据目录
  • 使用镜像mysql的5.7.30版本
使用容器

#进入容器 dockerexec-itmysql5.7.30/bin/bash #进入数据库 mysql-uroot-p 123456

docker最简单安装(Docker系列一安装Docker)(8)

新建用户

在远程服务器上面建立远程用户名为keenuser的用户 密码为123456。中间有踩过坑,新建的用户如果是localhost是无法远程登录的。

# 远程用户 create user keenuser@'%' identified by '123456'; #注意如果是localhost 则无法远程登录 create user keenlocaluser@localhost identified by '123456'; #删除本地用户 DROP USER 'keenuser'@'localhost';

docker最简单安装(Docker系列一安装Docker)(9)

新建数据库

建立一个数据库名字叫做nextcloud

# 新建数据库 create database nextcloud DEFAULT CHARSET utf8 COLLATE utf8_general_ci; #授权在数据库nextcloud上面的所有权力给名为keenuser的用户 grant all privileges on nextcloud.* to keenuser@'%'; #刷新 flush privileges; #退出Mysql exit;

docker最简单安装(Docker系列一安装Docker)(10)

退出容器

#退出容器 exit;

docker最简单安装(Docker系列一安装Docker)(11)

停止与删除容器

停止并且销毁容器。

#停止容器 dockerstopmysql5.7.30 #销毁容器 dockerrmmysql5.7.30 #强制销毁容器 dockerrm-fmysql5.7.30 #停止并且销毁自定义容器 exportTempName=mysql5.7.30 dockerstop$TempName&&dockerrm$TempName 本地连接数据库

在本地连接远程服务器的数据库。

navicat

新建一个链接,如图即可测试成功。

docker最简单安装(Docker系列一安装Docker)(12)

Dbeaver

新建一个链接,输入信息后点击测试链接即可。

docker最简单安装(Docker系列一安装Docker)(13)

修改容器配置修改端口

以上文的Mysql容器为例, 其中的8bb**是容器的ID值,。

#查看对应的ID dockerps-a #修改容器的配置文件 vim/var/lib/docker/containers/8bb0da5913626b58bca7335c446657c22ff09e309c85ae745d9fdbc4b5308f4c/hostconfig.json

docker最简单安装(Docker系列一安装Docker)(14)

打开文件后可以找到PortBindings字段,即可修改端口映射。

{ "Binds":[ "/home/keen/docker/mysql-5.7/data/:/var/lib/mysql" "/home/keen/docker/mysql-5.7/conf/my.cnf:/etc/mysql/my.cnf" ] "ContainerIDFile":"" "LogConfig":{ "Type":"json-file" "Config":{} } "NetworkMode":"default" //端口映射 "PortBindings":{ "3306/tcp":[ { "HostIp":"" "HostPort":"4306" } ] } //重启策略 "RestartPolicy":{ "Name":"always" "MaximumRetryCount":0 } "AutoRemove":false "VolumeDriver":"" "VolumesFrom":null "CapAdd":null "CapDrop":null "CgroupnsMode":"host" "Dns":[] "DnsOptions":[] "DnsSearch":[] "ExtraHosts":null "GroupAdd":null "IpcMode":"private" "Cgroup":"" "Links":null "OomScoreAdj":0 "PidMode":"" "Privileged":true "PublishAllPorts":false "ReadonlyRootfs":false "SecurityOpt":[ "label=disable" ] "UTSMode":"" "UsernsMode":"" "ShmSize":67108864 "Runtime":"runc" "ConsoleSize":[ 0 0 ] "Isolation":"" "CpuShares":0 "Memory":0 "NanoCpus":0 "CgroupParent":"" "BlkioWeight":0 "BlkioWeightDevice":[] "BlkioDeviceReadBps":null "BlkioDeviceWriteBps":null "BlkioDeviceReadIOps":null "BlkioDeviceWriteIOps":null "CpuPeriod":0 "CpuQuota":0 "CpuRealtimePeriod":0 "CpuRealtimeRuntime":0 "CpusetCpus":"" "CpusetMems":"" "Devices":[] "DeviceCgroupRules":null "DeviceRequests":null "KernelMemory":0 "KernelMemoryTCP":0 "MemoryReservation":0 "MemorySwap":0 "MemorySwappiness":null "OomKillDisable":false "PidsLimit":null "Ulimits":null "CpuCount":0 "CpuPercent":0 "IOMaximumIOps":0 "IOMaximumBandwidth":0 "MaskedPaths":null "ReadonlyPaths":null }

注意:重启docker服务,可能会影响到其他在运行的容器!

systemctlrestartdocker 修改容器的名称

dockerrenamemysql5.7.30mysql5.7.30_New 修改重启策略

如果你创建了某个容器,但是忘记配置随Docker服务重启而重启容器,那么除了像上文一样修改hostconfig配置文件,还可以使用命令。

dockerupdate--restart=alwaysmysql5.7.30 快照容器生成镜像

使用命令将容器8bb0da591362保存为新的镜像 并添加提交人信息和说明信息。

#查看容器情况 dockerps-a #用容器生成镜像快照 exportCONTAINERID=8bb0da591362 exportCONTAINERNAME=mysql:5.7.30 dockercommit\ -ajunkuang\ -m"migrationtoanother"\ -p\ $CONTAINERID\ $CONTAINERNAME-back-`date %Y%m%d` #查看镜像列表 dockerimages

docker最简单安装(Docker系列一安装Docker)(15)

  • -a junkuang:提交人是君匡
  • -m "my first commit" :修改提交内容备注
  • -p:在打包容器为镜像时暂停运行
  • 8bb0da591362:用容器ID选择指定容器,没有办法用容器名称
  • mysql:5.7.30-back:备份镜像名
镜像保存

将镜像保存到指定目录的tar压缩包文件

#查看镜像 dockerimages #镜像保存到压缩包 exportIMAGEID=ec7c9fe9057f exportIMAGENAME=mysql-5.7.30-back-20220722 dockersave\ -o/home/keen/$IMAGENAME.tar\ $IMAGEID

docker最简单安装(Docker系列一安装Docker)(16)

  • -o:指定压缩包文件名和路径
  • IMAGEID:指定镜像ID

之后便可以用工具或者命令复制出来备份文件保存起来了。

#格式:scp 用户名@IP地址:文件所在路径本地路径 #复制到本地下载目录 scproot@39.96.12.167:/home/keen/mysql-5.7.30-back-20220722.tar/Users/keen/Downloads 镜像恢复

复制备份镜像文件到新的服务器中,使用命令将tar包导成镜像。

#复制文件 scp/Users/keen/Downloads/mysql-5.7.30-back-20220722.tarroot@43.138.47.149:/home/keen/mysql-5.7.30-back-20220722.tar #加载备份镜像,尖括号与文件名间无空格 dockerload</home/keen/mysql-5.7.30-back-20220722.tar #查看景象列表 dockerimages #重命名导入的仓库和镜像 dockertag90c277453e59mysql:5.7.30-back-20220722

然后用这个镜像创建新的容器即可。

dockerrun\ --namemysql5.7.30back\ -p4306:3306\ -eMYSQL_ROOT_PASSWORD=123456\ -d\ --restart=always\ --privileged=true\ -v/home/keen/docker/mysql-5.7/conf/my.cnf:/etc/mysql/my.cnf\ -v/home/keen/docker/mysql-5.7/data/:/var/lib/mysql\ mysql:5.7.30-back-20220722 感谢

感谢现在的好奇,为了能成为更好的自己。

  1. 如何修改运行中的docker容器的端口映射
  2. linux 安装docker,离线安装docker

猜您喜欢: