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 要求 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这里以安装MySQL为例,进行讲解。
拉取镜像到本地用root账户搜寻想要的镜像,一般是选择标星最多的。
#登陆root账户
sudo-i
#搜寻镜像
dockersearchmysql
#拉取镜像
sudodockerpullmysql
当然,如果不想要最新版本的,你也可以选择列出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
然后你选择删除已经下载的镜像,重新拉取指定版本的镜像。
#拉取指定版本的镜像
dockerpullmysql:5.7.30
#查看镜像
dockerimages
得到结果为:
REPOSITORYTAGIMAGEIDCREATEDSIZE
mysqllatest3218b38490ce7monthsago516MB
mysql5.7.309cfcce23593a2yearsago448MB
于是删除镜像
dockerrmi3218b38490ce
在用镜像创建容器之前,建议创建存储目录,来保存容器中的数据和配置信息,免得未来重启容器后就丢失数据了。
#自定义新建的目录名
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"的文字。
复制内容如下,到命令行里粘贴。
[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保存并退出。
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
在远程服务器上面建立远程用户名为keenuser的用户 密码为123456。中间有踩过坑,新建的用户如果是localhost是无法远程登录的。
# 远程用户
create user keenuser@'%' identified by '123456';
#注意如果是localhost 则无法远程登录
create user keenlocaluser@localhost identified by '123456';
#删除本地用户
DROP USER 'keenuser'@'localhost';
建立一个数据库名字叫做nextcloud。
# 新建数据库
create database nextcloud DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#授权在数据库nextcloud上面的所有权力给名为keenuser的用户
grant all privileges on nextcloud.* to keenuser@'%';
#刷新
flush privileges;
#退出Mysql
exit;
退出容器
#退出容器
exit;
停止并且销毁容器。
#停止容器
dockerstopmysql5.7.30
#销毁容器
dockerrmmysql5.7.30
#强制销毁容器
dockerrm-fmysql5.7.30
#停止并且销毁自定义容器
exportTempName=mysql5.7.30
dockerstop$TempName&&dockerrm$TempName
本地连接数据库
在本地连接远程服务器的数据库。
navicat新建一个链接,如图即可测试成功。
新建一个链接,输入信息后点击测试链接即可。
以上文的Mysql容器为例, 其中的8bb**是容器的ID值,。
#查看对应的ID
dockerps-a
#修改容器的配置文件
vim/var/lib/docker/containers/8bb0da5913626b58bca7335c446657c22ff09e309c85ae745d9fdbc4b5308f4c/hostconfig.json
打开文件后可以找到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
- -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
- -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
感谢
感谢现在的好奇,为了能成为更好的自己。
- 如何修改运行中的docker容器的端口映射
- linux 安装docker,离线安装docker