一、Docker基础环境的安装

1. 环境说明

本机采用操作系统如下: CentOS-7.3-X86-64,内核3.10 x64位,docker 1.12.x版本。
建议采用CentOS7版本或ubuntu版本,本文采用CentOS7即CentOS-7-x86_64-DVD-1611.iso版本最小化安装。
Docker可以在虚拟机环境中运行进行使用测试。本文出自:http://koumm.blog.51cto.com/

2. 主机网络

1)关闭firewalld防火墙和SELinux
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux

systemctl disable firewalld
systemctl stop firewalld

docker是必须要防火墙功能模块的,个人目前用iptables

systemctl disable iptables.service
systemctl stop iptables.service

注意最小化需要补充安装的软件包:
yum install vim net-tools iptables-config


2)配置hosts文件(主机名称)
echo "192.168.1.90 docker1" >> /etc/hosts

3. 安装Docker软件包

1)可以直接安装包yum源
# yum install -y docker

2)配置docker开机自启动以及启动服务
# systemctl start docker.service
# systemctl enable docker.service

3)查看docker服务器,表示docker已安装成功

查看版本:docker version
帮助信息:docker --help
概要信息:docker info
镜像查看:docker images
进程查看:docker ps -a
搜索镜像:docker search centos #搜索可用docker镜像

示例: 表示docker已安装成功。

[root@docker1~]#dockerinfo

Containers:4
Running:0
Paused:0
Stopped:4
Images:3
ServerVersion:1.12.6
StorageDriver:devicemapper
PoolName:docker-253:0-16798063-pool
PoolBlocksize:65.54kB
BaseDeviceSize:10.74GB
backingFilesystem:xfs
Datafile:/dev/loop0
Metadatafile:/dev/loop1
DataSpaceUsed:849.3MB
DataSpacetotal:107.4GB
DataSpaceAvailable:15.27GB
MetadataSpaceUsed:1.937MB
MetadataSpacetotal:2.147GB
MetadataSpaceAvailable:2.146GB
ThinPoolMinimumFreeSpace:10.74GB
UdevSyncSupported:true
DeferredRemovalEnabled:false
DeferredDeletionEnabled:false
DeferredDeletedDeviceCount:0
Dataloopfile:/var/lib/docker/devicemapper/devicemapper/data
WARNING:Usageofloopbackdevicesisstronglydiscouragedforproductionuse.Use`--storage-optdm.thinpooldev`tospecifyacustomblockstoragedevice.
Metadataloopfile:/var/lib/docker/devicemapper/devicemapper/Metadata
LibraryVersion:1.02.135-RHEL7(2016-09-28)
LoggingDriver:journald
CgroupDriver:systemd
Plugins:
Volume:local
Network:bridgehostnulloverlay
Swarm:inactive
Runtimes:docker-runcrunc
DefaultRuntime:docker-runc
SecurityOptions:seccomp
KernelVersion:3.10.0-514.el7.x86_64
OperatingSystem:CentOSLinux7(Core)
OSType:linux
Architecture:x86_64
NumberofDockerHooks:2
cpus:2
TotalMemory:984.8MiB
Name:docker1
ID:YZZ7:NRHH:WJM7:PYUR:DGRH:4MLD:4GT4:UR2I:5PUZ:EAGS:P4Z2:JSL4
DockerRootDir:/var/lib/docker
DebugMode(client):false
DebugMode(server):false
Registry:https://index.docker.io/v1/
InsecureRegistries:
127.0.0.0/8
Registries:docker.io(secure)


二、Docker使用基础

1. 下载docker基础镜像

1)搜索centos基础镜像

[root@docker1~]#dockersearchcentos
INDEXNAMEDESCRIPTIONSTARSOFFICIALAUTOMATED
docker.iodocker.io/centosTheofficialbuildofCentOS.3362[OK]
docker.iodocker.io/jdeathe/centos-sshCentOS-66.9x86_64/CentOS-77.3.1611x8...69[OK]
docker.iodocker.io/nimmis/java-centosThisisdockerimagesofCentOS7withdif...26[OK]
docker.iodocker.io/gluster/gluster-centosOfficialglusterFSImage[CentOS-7+glu...19[OK]
docker.iodocker.io/million12/centos-supervisorBaseCentOS-7withsupervisordlauncher,h...16[OK]
docker.iodocker.io/kinogmt/centos-sshCentOSwithSSH13[OK]
docker.iodocker.io/egyptianbman/docker-centos-Nginx-PHPAsimpleandhighlyconfigurabledockerco...9[OK]
docker.iodocker.io/torusware/speedus-centosAlwaysupdatedofficialCentOSdockerimag...8[OK]
docker.iodocker.io/centos/mariadb55-centos75[OK]
docker.iodocker.io/nathonfowlie/centos-jreLatestCentOSimagewiththeJREpre-insta...5[OK]
docker.iodocker.io/darksheer/centosBaseCentosImage--Updatedhourly3[OK]
docker.iodocker.io/harisekhon/centos-javaJavaonCentOS(OpenJDK,tagsjre/jdk7-8)2[OK]
docker.iodocker.io/harisekhon/centos-scalaScala+CentOS(OpenJDKtags2.10-jre7-2...2[OK]
docker.iodocker.io/blacklabelops/centosCentOSBaseImage!BuiltandUpdatesDaily!1[OK]
docker.iodocker.io/freenas/centosSimpleCentOSLinuxinteractivecontainer1[OK]
docker.iodocker.io/sgfinans/docker-centosCentOSwitharunningsshdandDocker1[OK]
docker.iodocker.io/timhughes/centosCentoswithsystemdinstalledandrunning1[OK]
docker.iodocker.io/vorakl/centosCentOS7,EPEL,tools.Updated/Testeddaily!1[OK]
docker.iodocker.io/grossws/centosCentOS6and7baseimageswithgosuandl...0[OK]
docker.iodocker.io/januswel/centosyumupdate-edCentOSimage0[OK]
docker.iodocker.io/kz8s/centosOfficialCentOSplusepel-release0[OK]
docker.iodocker.io/labengine/centosCentosimagebase0[OK]
docker.iodocker.io/repositoryjp/centosDockerImageforCentOS.0[OK]
docker.iodocker.io/vcatechnology/centosACentOSImagewhichisupdateddaily0[OK]
docker.iodocker.io/wenjianzhou/centoscentos0[OK]
[root@docker1~]#


2)下载centos基础镜像

本文采用官方默认镜像仓库下载。

[root@docker1 ~]# docker pull centos

Using default tag: latest
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
343b09361036: Pull complete
Digest: sha256:bba1de7c9d900a898e3cadbae040dfe8a633c06bc104a0df76ae24483e03c077

下载其它示例:下载支持ssh服务器的centos镜像

[root@docker1~]#dockerpulljdeathe/centos-ssh
Usingdefaulttag:latest
Tryingtopullrepositorydocker.io/jdeathe/centos-ssh...
latest:Pullingfromdocker.io/jdeathe/centos-ssh
45a2e645736c:Pullcomplete
f0d571ff94cf:Pullcomplete
ea228e12ac20:Pullcomplete
edd63eef0a83:Pullcomplete
27c3eb39991d:Pullcomplete
4bf26ef9f3dd:Pullcomplete
4e572750aff7:Pullcomplete
b94a26882ae9:Pullcomplete
91ee52de11b1:Pullcomplete
e89f8a480c42:Pullcomplete
bd26710715b3:Pullcomplete
75c421c47829:Pullcomplete
f6eabaf37913:Pullcomplete
Digest:sha256:c80d3b79c853ce41a993cfa76f1b5983dffeb08aceefaaf04d64c9dc2e177d8e


2. 通过导出、导入的方式部署基础镜像

#官方镜像的下载很慢,有时多次尝试才能下载。

方法一:

#一台已经下载的好的镜像的服务器上操作。

docker save centos > /opt/centos.tar #Docker导出镜像
docker load < /opt/centos.tar #Docker导入镜像

方法二:

docker export id > /opt/centos.tar #Docker导出镜像
cat /opt/centos.tar | docker import centos #Docker导入镜像


*注1:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。
*注2:容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。
此外,从容器快照文件导入时可以重新指定标签等元数据信息。


3. 查看下载的基础镜像

[root@docker1~]#dockerimages
-----------------------------------------------------------------------------------------------------
REPOSITORYTAGIMAGEIDCREATEDSIZE
docker.io/jdeathe/centos-sshlatest1d551d635e994daysago214MB
docker.io/centoslatest8140d0c643102weeksago192.5MB

说明 :
REPOSITORY:来自于哪个仓库,比如 centos
TAG : 镜像的标记,一般修改版本号,latest为最后版本
IMAGE ID : 镜像的id号
CREATED : 创建镜像的时间
SIZE : 镜像的大小

4. 通过基础镜像创建一个容器

1)通过基础镜像centos创建一个容器名为centos_v1,并在后台执行

[root@docker1 ~]# docker run -it -d --name centos_v1 centos /bin/bash
0c1841e5d1115d35b80177ed5ea4fc5782e8a3ffc5f5c801979fb90ac5f26423

常用参数说明:
-i: 开启交互式shell
-t: 为容器分配一个伪tty终端
centos: 指定镜像的名字
/bin/bash: 运行/bin/bash


2) 查看容器

[root@docker1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c1841e5d111 centos "/bin/bash" 7 seconds ago Up 4 seconds centos_v1

查看docker镜像的状态,-a表示列出所有的容器,STATUS如果为Exited为退出,UP为运行。


3)进入容器

[root@docker1 ~]# docker exec -it centos_v1 /bin/bash

提示符变成了0c1841e5d111,也是该容器的ID,也是该容器的主机名。

[root@0c1841e5d111 /]# ls
anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var

[root@0c1841e5d111 /]# hostname
0c1841e5d111


4)退出容器

[root@0c1841e5d111 /]# exit
exit
[root@docker1 ~]#


5. 查看容器状态

[root@docker1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c1841e5d111 centos "/bin/bash" About an hour ago Up About an hour centos_v1


6. 关闭与启动容器

关闭容器

[root@docker1 ~]# docker stop centos_v1
centos_v1

[root@docker1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c1841e5d111 centos "/bin/bash" About an hour ago Exited (137) 3 seconds ago centos_v1

说明:STATUS状态为EXIT表示容器是退出状态。


启动容器

[root@docker1 ~]# docker start centos_v1
centos_v1

[root@docker1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c1841e5d111 centos "/bin/bash" About an hour ago Up 3 seconds centos_v1
[root@docker1 ~]#
[root@docker1 ~]#


7. 删除容器

1)删除容器(通过镜像ID与镜像名称均可)

[root@docker1 ~]# docker rm centos_v1 或 docker rm 0c1841e5d111

2)对于正在运行的容器,可以加-f参数强制进行删除。

[root@docker1 ~]# docker rm -f centos_v1


8. 通过一个容器创建镜像

说明:只能对运行中的容器提交本地镜像,关闭状态的容器无法提交本地镜像。

1)通过容器提交镜像

[root@docker1 ~]# docker commit centos_v1 centos:v1
sha256:66d2dc12144a87def3c16080553cca41d2a2965d9332f2a085dc23cc30366afa

[root@docker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos v1 66d2dc12144a 6 seconds ago 192.5 MB
docker.io/jdeathe/centos-ssh latest 1d551d635e99 4 days ago 214 MB
docker.io/centos latest 8140d0c64310 2 weeks ago 192.5 MB


2)删除镜像(通过镜像ID与镜像名称均可)

[root@docker1 ~]# docker rmi centos:v1

[root@docker1 ~]# docker rmi 66d2dc12144a

Untagged: centos:v1
Deleted: sha256:66d2dc12144a87def3c16080553cca41d2a2965d9332f2a085dc23cc30366afa
Deleted: sha256:9c6100b12798ef72aeb16c13d3d8da8bef0a060d3162f068ea8730025e3508ea


9. 示例:创建一个提供apache服务器的容器

1)通过最基础镜像创建一个容器,用于制做

[root@docker1 ~]# docker run -it -d --name abc centos /bin/bash
[root@docker1 ~]# docker exec -it httpd-80 /bin/bash

# yum install net-tools httpd -y


2) 通过httpd-80容器制一个http本地镜像

[root@docker1 ~]# docker commit httpd-80 centos:apache


3) 通过centos:apache镜像可以创建很多个容器

参数说明:-p 80:80 映射本地端口到容器的对应端口上,可以配置多个端口。

[root@docker1~]#dockerrun-it-d-p8082:80--nameapache-8082centos:apache/usr/sbin/apachectl-DFOREGROUND
1fb934170108b66fcdfa7c77f6673d33aca44fac63ca0b61b35f06519c3ef242
[root@docker1~]#dockerrun-it-d-p8081:80--nameapache-8081centos:apache/usr/sbin/apachectl-DFOREGROUND
cc4e7689db7bd5674f131782c470cf640594d298dbc88b680fc3caeb77bce256
[root@docker1~]#dockerrun-it-d-p8080:80--nameapache-8080centos:apache/usr/sbin/apachectl-DFOREGROUND
da494401dd34f843dac50e67a1a1c3077b44f9faeadff3403e50196fe4ce5318
[root@docker1~]#dockerps-a
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
da494401dd34centos:apache"/usr/sbin/apachectl"5secondsagoUp4seconds0.0.0.0:8080->80/tcpapache-8080
cc4e7689db7bcentos:apache"/usr/sbin/apachectl"17secondsagoUp15seconds0.0.0.0:8081->80/tcpapache-8081
1fb934170108centos:apache"/usr/sbin/apachectl"26secondsagoUp25seconds0.0.0.0:8082->80/tcpapache-8082
f4b6bffcca1bcentos"/bin/bash"8minutesagoUp8minuteshttpd-80
[root@docker1~]#

Centos7.3 Docker安装部署学习记录1的更多相关文章

  1. HTML5页面无缝闪开的问题及解决方案

    这篇文章主要介绍了HTML5页面无缝闪开方案,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. ios – 将容器带到视图前方

    我怎样才能解决这个问题?

  3. ios – 如何使用XCode 6.4下载和替换AppGroup容器

    我知道如何使用XCode6的Devices窗口下载和替换特定iOS应用程序的文件系统容器.但是对于我正在开发的应用程序,我需要能够下载和替换共享的AppGroup容器以进行调试.这将使我能够模拟AppGroup文件夹内容中的情况以进行测试.任何人都可以告诉我如何做到这一点?

  4. ios – 在UITableView上移动UIView – 触摸顶部UIView仍然选择表行

    =======用一些代码编辑:这是我在容器B中所做的代码.这是B帧的一个非常直接的动画.self.view是ContainerB的UIView.所有视图都在屏幕上通过故事板.其他容器是B的子视图.请让我知道你想看到的其他代码.解决方法嗯……不确定这是否适用于您的情况,但尝试在容纳所有其他容器的更大容器中管理您的动画.我的意思是,创建一个包含A,B,O及其子视图的ContainerZ,并尝试从Z中设置B的位置动画,检查B是否在A前面.

  5. 在两个屏幕上运行的iOS应用程序(无镜像)

    我创建了一个包含幻灯片的iPad应用程序,当用户点击此幻灯片时,他/她可以输入一些信息.我现在要做的是在通过AirPlay连接电视和iPad时在电视上显示幻灯片显示内容可以这样做吗?如何在iOS中完成?所以不要反映整个应用程序.解决方法您可以使用Airplay和AppleTV编写应用程序以处理2个UIScreens,然后为电视UIScreen和iPadUIScreen设置单独的根视图控制器.然后在电视的视图控制器上显示图像或幻灯片,并从iPad视图控制器的事件中运行该图像或幻灯片!

  6. ios – 与容器视图通信的最佳实践是什么?

    我最近经常使用容器VC,我一直想知道主Vc和容器VC之间的最佳通信方式是什么.现在我正在使用通知,但我宁愿使用更好的东西.如何获取指向容器VC的指针,以便至少可以使用委托?

  7. ios – 如何镜像UIBezierPath?

    我有一个UIBezierPath,我想得到它的镜像.我该如何做到这一点?

  8. ios – 编程嵌入UIViewController?

    我有一个带有一个容器视图的UIViewController的Storyboard设置,以便我可以在其中嵌入另一个UIViewController.在某种情况下,我需要更改嵌入式视图控制器.在我的故事板中,我的容器视图不能有两个区段.这导致我以编程方式进行.我的容器视图在我的故事板,没有连接的嵌入.现在从这一点开始,我如何以编程方式嵌入我所选择的UIViewController对象?

  9. ios – 使用Swift访问非默认的Cloudkit容器

    我有一个IOS8应用程序,它成功地将记录写入其默认的Cloudkit容器.现在我希望在OSX下的不同应用程序中读取和处理这些记录.我已经设置了具有iCloud访问权限的新应用程序,并选中了“指定自定义容器”选项.这已成功找到原始应用程序和我的容器没有错误要在Capabilities界面上修复.我的所有搜索都告诉我“同一个开发人员签署的两个应用程序可能共享同一个容器”但我找不到的任何教程文档都告诉我

  10. ios – Airplay:外部窗口镜像子视图

    米解决方法称为AirPlay镜像的技术命名不佳.它实际上以两种模式运行,一种是将整个iOS设备镜像到AirPlay设备,另一种模式下,一旦连接了镜像AirPlay设备,开发人员就可以使用两个UIWindow/UIScreen.您正在使用后一种模式,通常被称为“镜像”,但是您真的有一个完全独立的窗口/屏幕进行管理,应该有更好的术语来指代这种操作模式.上面所描述的内容基本上是将UIView从设备窗口移动到AirPlay窗口,它的工作原理与之一致!

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部