CentOS系统下docker的安装配置及使用详解
- 格式:docx
- 大小:21.36 KB
- 文档页数:10
一、安装docker对于CentOS6,可以使用EPEL 库安装Docker,命令如下$ sudo yum install /epel/6/i386/epel-release-6-8.noarch.rpm$ sudo yum install docker-io安装之后启动Docker 服务,并让它随系统启动自动加载。
$ sudo service docker start$ sudo chkconfig docker on二、常用操作命令修改并提交镜像docker run -t -i training/sinatra /bin/bashroot@0b2616b0e5a8:/#注意:记住容器的ID,稍后还会用到。
sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2 4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c其中,-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;-a 可以指定更新的用户信息;之后是用来创建镜像的容器的ID;最后指定目标镜像的仓库名和tag 信息。
创建成功后会返回这个镜像的ID 信息。
使用docker images 来查看新创建的镜像。
$ sudo docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE training/sinatra latest 5bc342fa0b91 10 hours ago 446.7 MBouruser/sinatra v2 3c59e02ddd1a 10 hours ago 446.7 MBouruser/sinatra latest 5db5f8471261 10 hours ago 446.7 MB创建、启动容器docker run -t -i ubuntu /bin/bash-t:让docker分配一个伪终端并绑定到容器的标准输入-i:让容器的标准输入保持打开docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"返回一个id,可通过docker ps查看-d:让容器以后台守护态运行启动已经停止的容器docker ps -a查找到已经停止的容器docker -ai ubuntu使用-a 参数将容器的输出导出到终端,同时使用-i 参数进行交互式的操作当以后台形式启动容易,如何进入容器wget ~ https:///yeasy/docker_practice/raw/master/_local/.bashrc_docker;echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrcdocker psCONTAINER ID IMAGE COMMAND CREATED STA TUS PORTS NAMES243c32535da7 ubuntu:latest "/bin/bash" 18 seconds ago Up 17 seconds nostalgic_hypatiadocker-pid 243c32535da7nsenter --target 10981 --mount --uts --ipc --net --pidDocker exec -ti name /bin/bash导出容器:sudo docker ps -aCONTAINER ID IMAGE COMMAND CREATED STA TUS PORTS NAMES7691a814370e ubuntu:14.04 "/bin/bash" 36 hours ago Exited (0) 21 hours ago testsudo docker export 7691a814370e > ubuntu.tar导入容器cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0删除容器docker rm trusting_newton如果要删除一个运行中的容器,可以添加-f 参数。
CentOS7安装Docker时的异常报错与解决⽅法重要:有些⼈在vmware中安装了新的centos⽤于使⽤docker,但是往往会忽略了更换源与进⾏系统update,这样会导致安装过程中出现诸多如下类问题,为了避免不必要的⿇烦在安装docker前最好最到⼀下⼏点:1.替换centos源为163或其他更适合的源,具体操作可以查看我另⼀篇⽂章《》2.清空缓存(yum clean\ yum makecache)3.系统更新(yum update)确认环境[root@localhost ~]# cat /etc/redhat-releaseCentOS Linux release 7.0.1406 (Core)docker安装-> 报错[root@localhost ~]# yum install dockerLoaded plugins: fastestmirror, langpacksRepodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fastExisting lock /var/run/yum.pid: another copy is running as pid 11946.Another app is currently holding the yum lock; waiting for it to exit...The other application is: PackageKitMemory : 39 M RSS (444 MB VSZ)Started: Thu Jul 722:42:132016 - 08:57 agoState : Sleeping, pid: 11946解决⽅法rm -rf /run/yum.pid[root@localhost run]# rm -rf /run/yum.pid继续docker安装-> 报错[root@localhost run]# yum install dockerLoaded plugins: fastestmirror, langpacksRepodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fastbase | 3.6 kB 00:00:00extras | 3.4 kB 00:00:00updates | 3.4 kB 00:00:00(1/2): extras/7/x86_64/primary_db | 149 kB 00:00:00(2/2): updates/7/x86_64/primary_db | 5.7 MB 00:00:47Determining fastest mirrors* base: * extras: * updates: Resolving Dependencies--> Running transaction check---> Package docker.x86_64 0:1.10.3-44.el7.centos will be installed--> Processing Dependency: oci-systemd-hook = 1.10.3-44.el7.centos for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: oci-register-machine = 1.10.3-44.el7.centos for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: docker-forward-journald = 1.10.3-44.el7.centos for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: docker-common = 1.10.3-44.el7.centos for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: selinux-policy >= 3.13.1-23for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: docker-selinux >= 1.10.3-44.el7.centos for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: device-mapper-libs >= 7:1.02.97for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: libsystemd.so.0(LIBSYSTEMD_209)(64bit) for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: libdevmapper.so.1.02(DM_1_02_97)(64bit) for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: libsystemd.so.0()(64bit) for package: docker-1.10.3-44.el7.centos.x86_64--> Running transaction check---> Package device-mapper-libs.x86_64 7:1.02.84-14.el7 will be updated--> Processing Dependency: device-mapper-libs = 7:1.02.84-14.el7 for package: 7:device-mapper-1.02.84-14.el7.x86_64---> Package device-mapper-libs.x86_64 7:1.02.107-5.el7_2.5 will be an update---> Package docker-common.x86_64 0:1.10.3-44.el7.centos will be installed---> Package docker-forward-journald.x86_64 0:1.10.3-44.el7.centos will be installed---> Package docker-selinux.x86_64 0:1.10.3-44.el7.centos will be installed--> Processing Dependency: selinux-policy-targeted >= 3.13.1-23for package: docker-selinux-1.10.3-44.el7.centos.x86_64--> Processing Dependency: selinux-policy-base >= 3.13.1-23for package: docker-selinux-1.10.3-44.el7.centos.x86_64---> Package oci-register-machine.x86_64 0:1.10.3-44.el7.centos will be installed---> Package oci-systemd-hook.x86_64 0:1.10.3-44.el7.centos will be installed---> Package selinux-policy.noarch 0:3.12.1-153.el7 will be updated---> Package selinux-policy.noarch 0:3.13.1-60.el7_2.7 will be an update---> Package systemd-libs.x86_64 0:208-11.el7 will be updated--> Processing Dependency: systemd-libs = 208-11.el7 for package: systemd-208-11.el7.x86_64---> Package systemd-libs.x86_64 0:219-19.el7_2.11 will be an update--> Running transaction check---> Package device-mapper.x86_64 7:1.02.84-14.el7 will be updated--> Processing Dependency: device-mapper = 7:1.02.84-14.el7 for package: 7:device-mapper-event-1.02.84-14.el7.x86_64---> Package device-mapper.x86_64 7:1.02.107-5.el7_2.5 will be an update---> Package selinux-policy-targeted.noarch 0:3.12.1-153.el7 will be updated---> Package selinux-policy-targeted.noarch 0:3.13.1-60.el7_2.7 will be an update---> Package systemd.x86_64 0:208-11.el7 will be updated--> Processing Dependency: systemd = 208-11.el7 for package: libgudev1-208-11.el7.x86_64--> Processing Dependency: systemd = 208-11.el7 for package: systemd-sysv-208-11.el7.x86_64--> Processing Dependency: systemd = 208-11.el7 for package: systemd-python-208-11.el7.x86_64---> Package systemd.x86_64 0:219-19.el7_2.11 will be an update--> Processing Dependency: kmod >= 18-4for package: systemd-219-19.el7_2.11.x86_64--> Running transaction check---> Package device-mapper-event.x86_64 7:1.02.84-14.el7 will be updated---> Package device-mapper-event.x86_64 7:1.02.107-5.el7_2.5 will be an update--> Processing Dependency: device-mapper-event-libs = 7:1.02.107-5.el7_2.5for package: 7:device-mapper-event-1.02.107-5.el7_2.5.x86_64---> Package kmod.x86_64 0:14-9.el7 will be updated---> Package kmod.x86_64 0:20-5.el7 will be an update---> Package libgudev1.x86_64 0:208-11.el7 will be updated---> Package libgudev1.x86_64 0:219-19.el7_2.11 will be an update---> Package systemd-python.x86_64 0:208-11.el7 will be updated---> Package systemd-python.x86_64 0:219-19.el7_2.11 will be an update---> Package systemd-sysv.x86_64 0:208-11.el7 will be updated---> Package systemd-sysv.x86_64 0:219-19.el7_2.11 will be an update--> Running transaction check---> Package device-mapper-event-libs.x86_64 7:1.02.84-14.el7 will be updated---> Package device-mapper-event-libs.x86_64 7:1.02.107-5.el7_2.5 will be an update--> Processing Conflict: systemd-219-19.el7_2.11.x86_64 conflicts initscripts < 9.49.28-1--> Restarting Dependency Resolution with new changes.--> Running transaction check---> Package initscripts.x86_64 0:9.49.17-1.el7 will be updated---> Package initscripts.x86_64 0:9.49.30-1.el7_2.2 will be an update--> Processing Conflict: systemd-219-19.el7_2.11.x86_64 conflicts dracut < 033-243--> Restarting Dependency Resolution with new changes.--> Running transaction check---> Package dracut.x86_64 0:033-161.el7 will be updated--> Processing Dependency: dracut = 033-161.el7 for package: dracut-config-rescue-033-161.el7.x86_64--> Processing Dependency: dracut = 033-161.el7 for package: dracut-network-033-161.el7.x86_64---> Package dracut.x86_64 0:033-360.el7_2.1 will be an update--> Running transaction check---> Package dracut-config-rescue.x86_64 0:033-161.el7 will be updated---> Package dracut-config-rescue.x86_64 0:033-360.el7_2.1 will be an update---> Package dracut-network.x86_64 0:033-161.el7 will be updated---> Package dracut-network.x86_64 0:033-360.el7_2.1 will be an update--> Finished Dependency ResolutionDependencies Resolved============================================================================================================================================ Package Arch Version Repository Size============================================================================================================================================ Installing:docker x86_64 1.10.3-44.el7.centos extras 8.6 MUpdating:dracut x86_64 033-360.el7_2.1 updates 311 kinitscripts x86_64 9.49.30-1.el7_2.2 updates 429 kInstalling for dependencies:docker-common x86_64 1.10.3-44.el7.centos extras 59 kdocker-forward-journald x86_64 1.10.3-44.el7.centos extras 831 kdocker-selinux x86_64 1.10.3-44.el7.centos extras 77 koci-register-machine x86_64 1.10.3-44.el7.centos extras 1.0 Moci-systemd-hook x86_64 1.10.3-44.el7.centos extras 96 kUpdating for dependencies:device-mapper x86_64 7:1.02.107-5.el7_2.5 updates 252 kdevice-mapper-event x86_64 7:1.02.107-5.el7_2.5 updates 167 kdevice-mapper-event-libs x86_64 7:1.02.107-5.el7_2.5 updates 169 kdevice-mapper-libs x86_64 7:1.02.107-5.el7_2.5 updates 305 kdracut-config-rescue x86_64 033-360.el7_2.1 updates 50 kdracut-network x86_64 033-360.el7_2.1 updates 90 kkmod x86_64 20-5.el7 base114 klibgudev1 x86_64 219-19.el7_2.11 updates 66 kselinux-policy noarch 3.13.1-60.el7_2.7 updates 376 kselinux-policy-targeted noarch 3.13.1-60.el7_2.7 updates 3.9 Msystemd x86_64 219-19.el7_2.11 updates 5.1 Msystemd-libs x86_64 219-19.el7_2.11 updates 358 ksystemd-python x86_64 219-19.el7_2.11 updates 99 ksystemd-sysv x86_64 219-19.el7_2.11 updates 53 kTransaction Summary============================================================================================================================================ Install 1 Package (+ 5 Dependent packages)Upgrade 2 Packages (+14 Dependent packages)Total download size: 23 MIs this ok [y/d/N]: yDownloading packages:No Presto metadata available for baseupdates/7/x86_64/prestodelta | 603 kB 00:00:00warning: /var/cache/yum/x86_64/7/updates/packages/device-mapper-1.02.107-5.el7_2.5.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEYPublic key for device-mapper-1.02.107-5.el7_2.5.x86_64.rpm is not installed(1/22): device-mapper-1.02.107-5.el7_2.5.x86_64.rpm | 252 kB 00:00:00(2/22): device-mapper-event-libs-1.02.107-5.el7_2.5.x86_64.rpm | 169 kB 00:00:00Public key for docker-forward-journald-1.10.3-44.el7.centos.x86_64.rpm is not installed ] 0.0 B/s | 1.2 MB --:--:-- ETA(3/22): docker-forward-journald-1.10.3-44.el7.centos.x86_64.rpm | 831 kB 00:00:00(4/22): docker-selinux-1.10.3-44.el7.centos.x86_64.rpm | 77 kB 00:00:00(5/22): docker-common-1.10.3-44.el7.centos.x86_64.rpm | 59 kB 00:00:00(6/22): dracut-033-360.el7_2.1.x86_64.rpm | 311 kB 00:00:00(7/22): dracut-network-033-360.el7_2.1.x86_64.rpm | 90 kB 00:00:00(8/22): device-mapper-event-1.02.107-5.el7_2.5.x86_64.rpm | 167 kB 00:00:01(9/22): initscripts-9.49.30-1.el7_2.2.x86_64.rpm | 429 kB 00:00:00Public key for kmod-20-5.el7.x86_64.rpm is not installed(10/22): kmod-20-5.el7.x86_64.rpm | 114 kB 00:00:00(11/22): libgudev1-219-19.el7_2.11.x86_64.rpm | 66 kB 00:00:00(12/22): oci-systemd-hook-1.10.3-44.el7.centos.x86_64.rpm | 96 kB 00:00:00(13/22): device-mapper-libs-1.02.107-5.el7_2.5.x86_64.rpm | 305 kB 00:00:01(14/22): selinux-policy-3.13.1-60.el7_2.7.noarch.rpm | 376 kB 00:00:00(15/22): dracut-config-rescue-033-360.el7_2.1.x86_64.rpm | 50 kB 00:00:00(16/22): systemd-libs-219-19.el7_2.11.x86_64.rpm | 358 kB 00:00:02(17/22): docker-1.10.3-44.el7.centos.x86_64.rpm | 8.6 MB 00:00:03(18/22): systemd-python-219-19.el7_2.11.x86_64.rpm | 99 kB 00:00:00(19/22): systemd-sysv-219-19.el7_2.11.x86_64.rpm | 53 kB 00:00:00(20/22): oci-register-machine-1.10.3-44.el7.centos.x86_64.rpm | 1.0 MB 00:00:03(21/22): selinux-policy-targeted-3.13.1-60.el7_2.7.noarch.rpm | 3.9 MB 00:00:03(22/22): systemd-219-19.el7_2.11.x86_64.rpm | 5.1 MB 00:00:05--------------------------------------------------------------------------------------------------------------------------------------------Total 3.1 MB/s | 23 MB 00:00:07Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7Importing GPG key 0xF4A80EB5:Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@>"Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5Package : centos-release-7-0.1406.el7.centos.2.3.x86_64 (@anaconda)From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7Is this ok [y/N]: yRunning transaction checkRunning transaction testTransaction check error:file /usr/lib/systemd/system/blk-availability.service from install of device-mapper-7:1.02.107-5.el7_2.5.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64file /usr/sbin/blkdeactivate from install of device-mapper-7:1.02.107-5.el7_2.5.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64file /usr/share/man/man8/blkdeactivate.8.gz from install of device-mapper-7:1.02.107-5.el7_2.5.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64Error Summary-------------解决⽅法yum install libdevmapper* -y[root@localhost run]# yum install libdevmapper* -yLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile* base: * extras: * updates: Resolving Dependencies--> Running transaction check---> Package device-mapper-event-libs.x86_64 7:1.02.84-14.el7 will be updated--> Processing Dependency: device-mapper-event-libs = 7:1.02.84-14.el7 for package: 7:device-mapper-event-1.02.84-14.el7.x86_64---> Package device-mapper-event-libs.x86_64 7:1.02.107-5.el7_2.5 will be an update---> Package device-mapper-libs.x86_64 7:1.02.84-14.el7 will be updated--> Processing Dependency: device-mapper-libs = 7:1.02.84-14.el7 for package: 7:device-mapper-1.02.84-14.el7.x86_64---> Package device-mapper-libs.x86_64 7:1.02.107-5.el7_2.5 will be an update---> Package lvm2-libs.x86_64 7:2.02.105-14.el7 will be updated--> Processing Dependency: lvm2-libs = 7:2.02.105-14.el7 for package: 7:lvm2-2.02.105-14.el7.x86_64---> Package lvm2-libs.x86_64 7:2.02.130-5.el7_2.5 will be an update--> Running transaction check---> Package device-mapper.x86_64 7:1.02.84-14.el7 will be updated---> Package device-mapper.x86_64 7:1.02.107-5.el7_2.5 will be an update---> Package device-mapper-event.x86_64 7:1.02.84-14.el7 will be updated---> Package device-mapper-event.x86_64 7:1.02.107-5.el7_2.5 will be an update---> Package lvm2.x86_64 7:2.02.105-14.el7 will be updated---> Package lvm2.x86_64 7:2.02.130-5.el7_2.5 will be an update--> Processing Dependency: device-mapper-persistent-data >= 0.5.5-1for package: 7:lvm2-2.02.130-5.el7_2.5.x86_64--> Running transaction check---> Package device-mapper-persistent-data.x86_64 0:0.3.2-1.el7 will be updated---> Package device-mapper-persistent-data.x86_64 0:0.5.5-1.el7 will be an update--> Finished Dependency ResolutionDependencies Resolved============================================================================================================================================ Package Arch Version Repository Size============================================================================================================================================ Updating:device-mapper-event-libs x86_64 7:1.02.107-5.el7_2.5 updates 169 kdevice-mapper-libs x86_64 7:1.02.107-5.el7_2.5 updates 305 klvm2-libs x86_64 7:2.02.130-5.el7_2.5 updates 873 kUpdating for dependencies:device-mapper x86_64 7:1.02.107-5.el7_2.5 updates 252 kdevice-mapper-event x86_64 7:1.02.107-5.el7_2.5 updates 167 kdevice-mapper-persistent-data x86_64 0.5.5-1.el7 base350 klvm2 x86_64 7:2.02.130-5.el7_2.5 updates 1.0 MTransaction Summary============================================================================================================================================ Upgrade 3 Packages (+4 Dependent packages)Total size: 3.0 MTotal download size: 2.2 MDownloading packages:No Presto metadata available for base(1/3): device-mapper-persistent-data-0.5.5-1.el7.x86_64.rpm | 350 kB 00:00:00(2/3): lvm2-2.02.130-5.el7_2.5.x86_64.rpm | 1.0 MB 00:00:00(3/3): lvm2-libs-2.02.130-5.el7_2.5.x86_64.rpm | 873 kB 00:00:11--------------------------------------------------------------------------------------------------------------------------------------------Total 195 kB/s | 2.2 MB 00:00:11Running transaction checkRunning transaction testTransaction test succeededRunning transactionUpdating : 7:device-mapper-1.02.107-5.el7_2.5.x86_64 1/14Updating : 7:device-mapper-libs-1.02.107-5.el7_2.5.x86_64 2/14Updating : 7:device-mapper-event-libs-1.02.107-5.el7_2.5.x86_64 3/14Updating : 7:device-mapper-event-1.02.107-5.el7_2.5.x86_64 4/14Updating : 7:lvm2-libs-2.02.130-5.el7_2.5.x86_64 5/14Updating : device-mapper-persistent-data-0.5.5-1.el7.x86_64 6/14Updating : 7:lvm2-2.02.130-5.el7_2.5.x86_64 7/14ln -s '/usr/lib/systemd/system/lvm2-lvmetad.socket''/etc/systemd/system/sysinit.target.wants/lvm2-lvmetad.socket'ln -s '/usr/lib/systemd/system/lvm2-lvmpolld.socket''/etc/systemd/system/sysinit.target.wants/lvm2-lvmpolld.socket'Cleanup : 7:lvm2-2.02.105-14.el7.x86_64 8/14Cleanup : 7:lvm2-libs-2.02.105-14.el7.x86_64 9/14Cleanup : 7:device-mapper-event-1.02.84-14.el7.x86_64 10/14Cleanup : 7:device-mapper-event-libs-1.02.84-14.el7.x86_64 11/14Cleanup : 7:device-mapper-1.02.84-14.el7.x86_64 12/14Cleanup : 7:device-mapper-libs-1.02.84-14.el7.x86_64 13/14Cleanup : device-mapper-persistent-data-0.3.2-1.el7.x86_64 14/14Verifying : 7:device-mapper-libs-1.02.107-5.el7_2.5.x86_64 1/14Verifying : 7:device-mapper-1.02.107-5.el7_2.5.x86_64 2/14Verifying : 7:lvm2-2.02.130-5.el7_2.5.x86_64 3/14Verifying : device-mapper-persistent-data-0.5.5-1.el7.x86_64 4/14Verifying : 7:lvm2-libs-2.02.130-5.el7_2.5.x86_64 5/14Verifying : 7:device-mapper-event-libs-1.02.107-5.el7_2.5.x86_64 6/14Verifying : 7:device-mapper-event-1.02.107-5.el7_2.5.x86_64 7/14Verifying : 7:lvm2-2.02.105-14.el7.x86_64 8/14Verifying : device-mapper-persistent-data-0.3.2-1.el7.x86_64 9/14Verifying : 7:lvm2-libs-2.02.105-14.el7.x86_64 10/14Verifying : 7:device-mapper-event-libs-1.02.84-14.el7.x86_64 11/14Verifying : 7:device-mapper-libs-1.02.84-14.el7.x86_64 12/14Verifying : 7:device-mapper-event-1.02.84-14.el7.x86_64 13/14Verifying : 7:device-mapper-1.02.84-14.el7.x86_64 14/14Updated:device-mapper-event-libs.x86_64 7:1.02.107-5.el7_2.5 device-mapper-libs.x86_64 7:1.02.107-5.el7_2.5 lvm2-libs.x86_64 7:2.02.130-5.el7_2.5 Dependency Updated:device-mapper.x86_64 7:1.02.107-5.el7_2.5 device-mapper-event.x86_64 7:1.02.107-5.el7_2.5device-mapper-persistent-data.x86_64 0:0.5.5-1.el7 lvm2.x86_64 7:2.02.130-5.el7_2.5Complete!继续docker安装-> 成功[root@localhost run]# yum install dockerLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile* base: * extras: * updates: Resolving Dependencies--> Running transaction check---> Package docker.x86_64 0:1.10.3-44.el7.centos will be installed--> Processing Dependency: oci-systemd-hook = 1.10.3-44.el7.centos for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: oci-register-machine = 1.10.3-44.el7.centos for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: docker-forward-journald = 1.10.3-44.el7.centos for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: docker-common = 1.10.3-44.el7.centos for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: selinux-policy >= 3.13.1-23for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: docker-selinux >= 1.10.3-44.el7.centos for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: libsystemd.so.0(LIBSYSTEMD_209)(64bit) for package: docker-1.10.3-44.el7.centos.x86_64--> Processing Dependency: libsystemd.so.0()(64bit) for package: docker-1.10.3-44.el7.centos.x86_64--> Running transaction check---> Package docker-common.x86_64 0:1.10.3-44.el7.centos will be installed---> Package docker-forward-journald.x86_64 0:1.10.3-44.el7.centos will be installed---> Package docker-selinux.x86_64 0:1.10.3-44.el7.centos will be installed--> Processing Dependency: selinux-policy-targeted >= 3.13.1-23for package: docker-selinux-1.10.3-44.el7.centos.x86_64--> Processing Dependency: selinux-policy-base >= 3.13.1-23for package: docker-selinux-1.10.3-44.el7.centos.x86_64---> Package oci-register-machine.x86_64 0:1.10.3-44.el7.centos will be installed---> Package oci-systemd-hook.x86_64 0:1.10.3-44.el7.centos will be installed---> Package selinux-policy.noarch 0:3.12.1-153.el7 will be updated---> Package selinux-policy.noarch 0:3.13.1-60.el7_2.7 will be an update---> Package systemd-libs.x86_64 0:208-11.el7 will be updated--> Processing Dependency: systemd-libs = 208-11.el7 for package: systemd-208-11.el7.x86_64---> Package systemd-libs.x86_64 0:219-19.el7_2.11 will be an update--> Running transaction check---> Package selinux-policy-targeted.noarch 0:3.12.1-153.el7 will be updated---> Package selinux-policy-targeted.noarch 0:3.13.1-60.el7_2.7 will be an update---> Package systemd.x86_64 0:208-11.el7 will be updated--> Processing Dependency: systemd = 208-11.el7 for package: libgudev1-208-11.el7.x86_64--> Processing Dependency: systemd = 208-11.el7 for package: systemd-python-208-11.el7.x86_64--> Processing Dependency: systemd = 208-11.el7 for package: systemd-sysv-208-11.el7.x86_64---> Package systemd.x86_64 0:219-19.el7_2.11 will be an update--> Processing Dependency: kmod >= 18-4for package: systemd-219-19.el7_2.11.x86_64--> Running transaction check---> Package kmod.x86_64 0:14-9.el7 will be updated---> Package kmod.x86_64 0:20-5.el7 will be an update---> Package libgudev1.x86_64 0:208-11.el7 will be updated---> Package libgudev1.x86_64 0:219-19.el7_2.11 will be an update---> Package systemd-python.x86_64 0:208-11.el7 will be updated---> Package systemd-python.x86_64 0:219-19.el7_2.11 will be an update---> Package systemd-sysv.x86_64 0:208-11.el7 will be updated---> Package systemd-sysv.x86_64 0:219-19.el7_2.11 will be an update--> Processing Conflict: systemd-219-19.el7_2.11.x86_64 conflicts initscripts < 9.49.28-1--> Restarting Dependency Resolution with new changes.--> Running transaction check---> Package initscripts.x86_64 0:9.49.17-1.el7 will be updated---> Package initscripts.x86_64 0:9.49.30-1.el7_2.2 will be an update--> Processing Conflict: systemd-219-19.el7_2.11.x86_64 conflicts dracut < 033-243--> Restarting Dependency Resolution with new changes.--> Running transaction check---> Package dracut.x86_64 0:033-161.el7 will be updated--> Processing Dependency: dracut = 033-161.el7 for package: dracut-config-rescue-033-161.el7.x86_64--> Processing Dependency: dracut = 033-161.el7 for package: dracut-network-033-161.el7.x86_64---> Package dracut.x86_64 0:033-360.el7_2.1 will be an update--> Running transaction check---> Package dracut-config-rescue.x86_64 0:033-161.el7 will be updated---> Package dracut-config-rescue.x86_64 0:033-360.el7_2.1 will be an update---> Package dracut-network.x86_64 0:033-161.el7 will be updated---> Package dracut-network.x86_64 0:033-360.el7_2.1 will be an update--> Finished Dependency ResolutionDependencies Resolved============================================================================================================================================ Package Arch Version Repository Size============================================================================================================================================ Installing:docker x86_64 1.10.3-44.el7.centos extras 8.6 MUpdating:dracut x86_64 033-360.el7_2.1 updates 311 kinitscripts x86_64 9.49.30-1.el7_2.2 updates 429 kInstalling for dependencies:docker-common x86_64 1.10.3-44.el7.centos extras 59 kdocker-forward-journald x86_64 1.10.3-44.el7.centos extras 831 kdocker-selinux x86_64 1.10.3-44.el7.centos extras 77 koci-register-machine x86_64 1.10.3-44.el7.centos extras 1.0 Moci-systemd-hook x86_64 1.10.3-44.el7.centos extras 96 kUpdating for dependencies:dracut-config-rescue x86_64 033-360.el7_2.1 updates 50 kdracut-network x86_64 033-360.el7_2.1 updates 90 kkmod x86_64 20-5.el7 base114 klibgudev1 x86_64 219-19.el7_2.11 updates 66 kselinux-policy noarch 3.13.1-60.el7_2.7 updates 376 kselinux-policy-targeted noarch 3.13.1-60.el7_2.7 updates 3.9 Msystemd x86_64 219-19.el7_2.11 updates 5.1 Msystemd-libs x86_64 219-19.el7_2.11 updates 358 ksystemd-python x86_64 219-19.el7_2.11 updates 99 ksystemd-sysv x86_64 219-19.el7_2.11 updates 53 kTransaction Summary============================================================================================================================================ Install 1 Package (+ 5 Dependent packages)Upgrade 2 Packages (+10 Dependent packages)Total size: 22 MIs this ok [y/d/N]: yDownloading packages:Running transaction checkRunning transaction testTransaction test succeededRunning transactionUpdating : systemd-libs-219-19.el7_2.11.x86_64 1/30Updating : dracut-033-360.el7_2.1.x86_64 2/30Updating : kmod-20-5.el7.x86_64 3/30Updating : systemd-219-19.el7_2.11.x86_64 4/30Updating : selinux-policy-3.13.1-60.el7_2.7.noarch 5/30Updating : selinux-policy-targeted-3.13.1-60.el7_2.7.noarch 6/30140kInstalling : docker-selinux-1.10.3-44.el7.centos.x86_64 7/30Installing : oci-register-machine-1.10.3-44.el7.centos.x86_64 8/30Installing : docker-forward-journald-1.10.3-44.el7.centos.x86_64 9/30Installing : docker-common-1.10.3-44.el7.centos.x86_64 10/30Installing : oci-systemd-hook-1.10.3-44.el7.centos.x86_64 11/30Installing : docker-1.10.3-44.el7.centos.x86_64 12/30Updating : initscripts-9.49.30-1.el7_2.2.x86_64 13/30Updating : systemd-sysv-219-19.el7_2.11.x86_64 14/30Updating : systemd-python-219-19.el7_2.11.x86_64 15/30Updating : dracut-config-rescue-033-360.el7_2.1.x86_64 16/30Updating : dracut-network-033-360.el7_2.1.x86_64 17/30Updating : libgudev1-219-19.el7_2.11.x86_64 18/30Cleanup : selinux-policy-targeted-3.12.1-153.el7.noarch 19/30warning: file /etc/selinux/targeted/modules/active/modules/vbetool.pp: remove failed: No such file or directorywarning: file /etc/selinux/targeted/modules/active/modules/pkcsslotd.pp: remove failed: No such file or directoryCleanup : systemd-sysv-208-11.el7.x86_64 20/30Cleanup : dracut-network-033-161.el7.x86_64 21/30Cleanup : dracut-config-rescue-033-161.el7.x86_64 22/30Cleanup : dracut-033-161.el7.x86_64 23/30Cleanup : systemd-python-208-11.el7.x86_64 24/30Cleanup : libgudev1-208-11.el7.x86_64 25/30Cleanup : initscripts-9.49.17-1.el7.x86_64 26/30Cleanup : selinux-policy-3.12.1-153.el7.noarch 27/30Cleanup : systemd-208-11.el7.x86_64 28/30Cleanup : kmod-14-9.el7.x86_64 29/30Cleanup : systemd-libs-208-11.el7.x86_64 30/30Verifying : dracut-config-rescue-033-360.el7_2.1.x86_64 1/30Verifying : initscripts-9.49.30-1.el7_2.2.x86_64 2/30Verifying : dracut-network-033-360.el7_2.1.x86_64 3/30Verifying : oci-systemd-hook-1.10.3-44.el7.centos.x86_64 4/30Verifying : kmod-20-5.el7.x86_64 5/30Verifying : libgudev1-219-19.el7_2.11.x86_64 6/30Verifying : selinux-policy-3.13.1-60.el7_2.7.noarch 7/30Verifying : docker-selinux-1.10.3-44.el7.centos.x86_64 8/30Verifying : systemd-libs-219-19.el7_2.11.x86_64 9/30Verifying : dracut-033-360.el7_2.1.x86_64 10/30Verifying : systemd-219-19.el7_2.11.x86_64 11/30Verifying : docker-common-1.10.3-44.el7.centos.x86_64 12/30Verifying : docker-1.10.3-44.el7.centos.x86_64 13/30Verifying : systemd-sysv-219-19.el7_2.11.x86_64 14/30Verifying : docker-forward-journald-1.10.3-44.el7.centos.x86_64 15/30Verifying : systemd-python-219-19.el7_2.11.x86_64 16/30。
使用Docker容器实现应用程序部署近年来,Docker容器的应用越来越广泛,已经成为了现代应用程序部署的一种标准方案。
使用Docker容器可以在不同的运行环境中快速、可靠地部署应用程序,大大提高了应用程序的可移植性和可维护性。
而且,Docker容器的部署过程也非常简单,只需要几个命令即可完成整个部署过程。
本文将介绍如何使用Docker容器来部署应用程序,从而快速、可靠地完成应用程序的部署工作。
在本文中,我们将使用一个Web应用程序作为示例来演示如何使用Docker容器来进行部署。
我们将详细介绍每个步骤,从创建Docker容器,到构建、测试、发布应用程序。
一、创建Docker容器首先,我们需要创建一个Docker容器来承载我们的Web应用程序。
Docker容器本质上是一个封装了应用程序和所有依赖项的独立、可执行的单元。
通过使用Docker容器,我们可以确保应用程序在任何环境中都能够以相同的方式运行。
要创建Docker容器,我们需要编写一个Dockerfile文件,该文件描述了如何在容器中构建和运行应用程序所需的操作系统和软件环境。
在本文中,我们将使用Node.js作为Web应用程序运行环境,其他类似的语言和框架也可以使用类似的方法进行部署。
以下是一个简单的Dockerfile文件示例:```# 指定一个基础镜像FROM node:alpine# 在容器中创建一个工作目录WORKDIR /app# 将应用程序代码复制到容器中COPY . /app# 安装所有依赖项RUN npm install# 暴露容器上的端口EXPOSE 3000# 定义默认的启动命令CMD ["npm", "start"]```上面的Dockerfile文件包含了以下几个步骤:- 指定一个基础镜像,用于构建Docker容器。
- 创建一个工作目录,用于存放应用程序代码和所有依赖项。
- 复制应用程序代码到容器中。
宝塔面板docker用法
宝塔面板是一款非常好用的服务器管理工具,而Docker则是一种非常流行的容器化技术。
结合起来使用,可以让服务器管理更加高效、灵活。
以下是宝塔面板Docker用法的介绍:
1. 安装Docker
在宝塔面板上安装Docker非常方便,只需要进入宝塔面板后台,选择“软件商店”,找到Docker并点击安装即可。
2. 创建容器
在宝塔面板中创建Docker容器也非常简单,只需要进入Docker 管理页面,点击“新建容器”,填写相关信息即可,例如容器名称、镜像版本等。
3. 配置容器
创建容器后,需要进行一些配置工作,例如设置端口映射、创建挂载目录等。
这些工作可以在容器管理页面中完成。
4. 启动容器
容器配置完成后,就可以启动它了。
在容器管理页面中,点击“启动”按钮即可。
同时,也可以在该页面中查看容器的状态和日志信息。
5. 使用容器
启动容器后,就可以在里面运行各种应用程序了,例如网站、数据库等。
可以通过SSH连接到容器内部进行操作,也可以使用宝塔面板提供的Web SSH功能进行远程操作。
总之,宝塔面板和Docker的结合使用,可以让服务器管理更加
灵活、高效,值得大家尝试。
如何在Docker容器中安装和配置Java环境在当今的软件开发领域中,Java语言因其跨平台、可移植性和强大的生态系统而被广泛应用。
而Docker作为一种容器化技术,在应用的打包、分发和部署方面提供了极大的便利性。
本文将为您介绍如何在Docker容器中安装和配置Java环境。
一、为何选择Docker容器在传统的软件开发过程中,开发人员常常面临着“在不同的环境中部署应用”的难题。
尤其是Java应用,不同的操作系统和版本可能会导致运行时的兼容性问题。
而Docker容器技术提供了一种解决方案。
通过将应用与其所需的环境一同打包成一个容器,应用的部署过程变得简单、可靠且一致。
不再需要担心因为环境差异而导致应用无法正常运行的问题。
二、安装Docker在开始之前,首先需要在您的计算机上安装Docker。
具体的安装方法可以参考Docker的官方文档,并根据您所使用的操作系统选择对应的安装方式。
安装完成后,可以通过运行`docker version`命令来检查是否安装成功。
三、选择合适的Java版本Java有多个版本可供选择,您可以根据自己的需求选择合适的Java版本。
不同的Java版本可能会有略微不同的安装和配置方法。
本文将以Java 8为例,介绍在Docker容器中安装和配置Java环境的步骤。
四、创建DockerfileDockerfile是用于定义Docker镜像的文本文件。
在开始创建Docker镜像之前,我们需要先创建一个名为Dockerfile的文件,并在其中编写相关配置。
一般而言,一个常见的Dockerfile包含以下几个关键步骤:1.选择一个基础镜像:根据您的需求选择一个适合的基础镜像,比如Ubuntu、Alpine等。
2.更新镜像:运行`apt-get update`等命令来更新镜像内的软件包列表。
3.安装Java:根据您选择的Java版本,在Dockerfile中添加相应的安装命令。
比如,对于Java 8,可以使用如下命令:```RUN apt-get install -y openjdk-8-jdk```4.设置环境变量:为了方便使用Java,可以设置JAVA_HOME和PATH环境变量。
实验一:Docker 安装配置1. 简介本实验旨在帮助您了解如何安装和配置Docker,以便在您的计算机上运行化应用程序。
2. 安装Docker2.1 Windows系统- 在安装过程中,选择默认选项并接受许可协议。
- 安装完成后,您需要重启计算机以使Docker启动。
2.2 macOS系统- 在安装过程中,选择默认选项并接受许可协议。
- 安装完成后,您需要点击启动台中的Docker图标以启动Docker。
2.3 Linux系统- 访问网站上的"Docker安装指南"页面。
- 找到适合您Linux发行版的安装指南,并按照指南中的步骤操作。
3. 配置Docker安装完成后,您需要进行一些配置以确保Docker正常运行。
3.1 Windows系统和macOS系统- 打开命令行终端(Windows系统为PowerShell,macOS系统为终端)。
- 输入命令"docker version"并按下Enter键,确保Docker已成功安装。
- 输入命令"docker run hello-world"并按下Enter键,验证Docker是否能够正常运行。
3.2 Linux系统- 打开终端。
- 输入命令"sudo docker version"并按下Enter键,确保Docker已成功安装。
- 输入命令"sudo docker run hello-world"并按下Enter键,验证Docker是否能够正常运行。
4. 总结通过完成本实验,您应该已经成功安装和配置了Docker。
现在,您可以开始在您的计算机上运行化应用程序了。
请注意,本文档仅提供了安装和配置Docker的基本步骤,更详细的使用方法和命令请参考Docker官方文档。
docker安装及部署镜像Docker安装与启动使⽤yum命令在线安装yum install docker安装后查看Docker版本docker -v启动与停⽌Docker启动docker:systemctl start docker停⽌docker:systemctl stop docker重启docker:systemctl restart docker查看docker状态:systemctl status docker开机启动:systemctl enable docker查看docker概要信息:docker info查看docker帮助⽂档:docker --helpsystemctl可以换成server,如:server docker startDocker镜像操作列出docker下的所有镜像:docker imagesREPOSITORY:镜像所在的仓库名称TAG:镜像标签IMAGE ID:镜像IDCREATED:镜像的创建⽇期(不是获取该镜像的⽇期)SIZE:镜像⼤⼩这些镜像都是存储在Docker宿主机的/var/lib/docker⽬录下搜索镜像 :docker search 镜像名称NAME:仓库名称DESCRIPTION:镜像描述STARS:⽤户评价,反应⼀个镜像的受欢迎程度OFFICIAL:是否官⽅AUTOMATED:⾃动构建,表⽰该镜像由Docker Hub⾃动构建流程创建的拉取镜像:从Docker Hub拉取docker pull zookeeper 或者 docker pull centos:7从其他服务拉取删除镜像:1、docker rmi 镜像ID:删除指定镜像2、docker rmi `docker images -q`:删除所有镜像(注意这⾥的 ` 不是单引号,是Esc下的键)Docker容器操作查看容器查看正在运⾏容器:docker ps查看所有的容器(启动过的历史容器):docker ps –a查看最后⼀次运⾏的容器:docker ps –l查看停⽌的容器docker ps -f status=exited创建与启动容器创建容器常⽤的参数说明:创建容器命令:docker run– -i:表⽰运⾏容器– -t:表⽰容器启动后会进⼊其命令⾏。
在Docker中配置和使用CouchDB文档数据库Docker已经成为现代软件开发和部署的标准工具之一。
它的便携性和轻量级的特点,使得开发人员可以更轻松地配置和运行各种不同的应用程序。
而CouchDB则是一种流行的文档数据库,它可与Docker结合使用,为开发人员提供了更便捷的数据存储和管理方式。
1. 安装Docker在开始之前,我们首先需要安装Docker。
根据不同的操作系统,可以在Docker官方网站上找到相应的安装指南。
安装完成后,可以通过运行docker命令来验证是否成功。
2. 拉取CouchDB镜像Docker提供了一个镜像仓库(Docker Hub),可以从中拉取一系列预配置的镜像。
我们可以通过运行以下命令,从Docker Hub上拉取CouchDB镜像:```docker pull couchdb```3. 创建CouchDB容器在Docker中,容器是运行应用程序的实例。
我们需要使用CouchDB镜像创建一个容器,并根据我们的需求进行配置。
以下是创建一个CouchDB容器的示例命令:```docker run -d -p 5984:5984 --name my-couchdb -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=pass couchdb```以上命令将在后台创建一个CouchDB容器,并将容器内部的5984端口映射到主机的5984端口。
同时,我们指定了CouchDB的管理员用户名和密码。
4. 访问CouchDB控制台容器创建完成后,我们可以通过浏览器访问CouchDB的控制台。
在浏览器中输入"http://localhost:5984/_utils",将会看到登录页面。
输入刚才创建容器时指定的管理员用户名和密码,即可登录进入CouchDB的管理界面。
5. 创建数据库和文档在CouchDB的管理界面中,我们可以创建数据库,并在数据库中创建文档。
Docker使⽤指南——基本操作Docker 是⼀个能够把开发应⽤程序⾃动部署到容器的开源引擎。
它由Docker公司的团队编写,基于Apache 2.0开源协议授权。
它提供了⼀个简单、轻量的建模⽅式,使开发⽣命周期更⾼效快速,⿎励了⾯向服务的架构设计。
Docker 项⽬的⽬标是实现轻量级的操作系统虚拟化解决⽅案。
Docker 的基础是 Linux 容器(LXC)等技术。
在 LXC 的基础上 Docker 进⾏了进⼀步的封装,让⽤户不需要去关⼼容器的管理,使得操作更为简便。
⽤户操作 Docker 的容器就像操作⼀个快速轻量级的虚拟机⼀样简单。
Docker 的特点:1. 更快速的交付和部署2. 更⾼效的虚拟化3. 更轻松的迁移和扩展4. 更简单的管理容器技术与传统虚拟机性能对⽐Docker与虚拟机建构对⽐Docker 容器本质上是宿主机上的⼀个进程。
Docker 通过 namespace 实现了资源隔离,通过 cgroups 实现了资源的限制,通过写时复制机制(copy-on-write)实现了⾼效的⽂件操作。
Docker有五个命名空间:进程、⽹络、挂载、宿主和共享内存,为了隔离有问题的应⽤,Docker运⽤Namespace将进程隔离,为进程或进程组创建已隔离的运⾏空间,为进程提供不同的命名空间视图。
这样,每⼀个隔离出来的进程组,对外就表现为⼀个container(容器)。
需要注意的是,Docker让⽤户误以为⾃⼰占据了全部资源,但这并不是”虚拟机”。
Docker 中的三个概念:镜像,容器,仓库1. 镜像(image):Docker 镜像就是⼀个只读的模板,镜像可以⽤来创建 Docker 容器。
Docker 提供了⼀个很简单的机制来创建镜像或者更新现有的镜像,⽤户甚⾄可以直接从其他⼈那⾥下载⼀个已经做好的镜像来直接使⽤。
镜像是⼀种⽂件结构。
Dockerfile中的每条命令都会在⽂件系统中创建⼀个新的层次结构,⽂件系统在这些层次上构建起来,镜像就构建于这些联合的⽂件系统之上。
Docker容器网络的高级配置技巧Docker作为一种轻量级的虚拟化技术,迅速在软件部署领域崭露头角。
而其网络配置也成为了使用者经常遇到的问题。
本文将探讨一些Docker容器网络的高级配置技巧,帮助读者更好地理解和使用Docker。
一、网络模式的选择Docker提供了多种网络模式供用户选择,包括桥接模式、主机模式、容器模式和无网络模式。
每种模式都有不同的特点和适用场景。
1. 桥接模式桥接模式是Docker默认的网络模式,它将容器连接到一个桥接网络,使得容器之间可以相互通信。
在这种模式下,Docker会为每个容器分配一个IP地址,并进行网络隔离。
这种模式适用于需要单独管理每个容器网络的场景。
2. 主机模式主机模式将容器直接连接到主机网络,容器和主机共享同一组IP地址。
在这种模式下,容器可以直接访问主机上的网络资源,但容器之间无法直接通信。
主机模式适用于需要容器与主机无隔离的场景。
3. 容器模式容器模式将多个容器连接到同一个网络命名空间,使得它们可以共享同一个网络配置。
在这种模式下,Docker会为每个容器分配一个自己的IP地址,并实现容器之间的通信。
容器模式适用于需要将多个容器部署在同一个网络环境的场景。
4. 无网络模式无网络模式是一种完全隔离的网络模式,容器内部无法访问外部网络,也无法与其他容器进行通信。
这种模式适用于需要高度隔离的场景,如安全测试等。
二、网络驱动的选择Docker还提供了多种网络驱动供用户选择,包括bridge驱动、host驱动、overlay驱动等。
不同的网络驱动提供了不同的网络功能和性能。
1. bridge驱动bridge驱动是Docker默认使用的网络驱动,它使用了Linux的bridge技术创建一个虚拟的网络桥接设备,并将容器连接到该设备上。
这种驱动较为简单,适用于大部分应用场景。
2. host驱动host驱动将容器直接绑定到主机网络,容器与主机共享同一个网络栈和网络接口。
1 docker简介Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器。
它原本是 dotCloud 启动的一个业余项目,并在前些时候开源了。
它吸引了大量的关注和讨论,导致 dotCloud 把它重命名到 Docker Inc。
它最初是用 Go 语言编写的,它就相当于是加在 LXC(LinuX Containers,linux 容器)上的管道,允许开发者在更高层次的概念上工作。
Docker 扩展了 Linux 容器(Linux Containers),或着说 LXC,通过一个高层次的 API 为进程单独提供了一个轻量级的虚拟环境。
Docker 利用了 LXC, cgroups 和 Linux 自己的内核。
和传统的虚拟机不同的是,一个Docker 容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的。
Docker类似虚拟机的概念,但是与虚拟化技术的不同点在于下面几点:1.虚拟化技术依赖物理CPU和内存,是硬件级别的;而docker构建在操作系统上,利用操作系统的containerization技术,所以docker甚至可以在虚拟机上运行。
2.虚拟化系统一般都是指操作系统镜像,比较复杂,称为“系统”;而docker开源而且轻量,称为“容器”,单个容器适合部署少量应用,比如部署一个redis、一个memcached。
3.传统的虚拟化技术使用快照来保存状态;而docker在保存状态上不仅更为轻便和低成本,而且引入了类似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低。
4.传统的虚拟化技术在构建系统的时候较为复杂,需要大量的人力;而docker可以通过Dockfile来构建整个容器,重启和构建速度很快。
更重要的是Dockfile可以手动编写,这样应用程序开发人员可以通过发布Dockfile 来指导系统环境和依赖,这样对于持续交付十分有利。
5.Dockerfile可以基于已经构建好的容器镜像,创建新容器。
Dockerfile可以通过社区分享和下载,有利于该技术的推广。
Docker 会像一个可移植的容器引擎那样工作。
它把应用程序及所有程序的依赖环境打包到一个虚拟容器中,这个虚拟容器可以运行在任何一种 Linux 服务器上。
这大大地提高了程序运行的灵活性和可移植性,无论需不需要许可、是在公共云还是私密云、是不是裸机环境等等。
Docker也是一个云计算平台,它利用Linux的LXC、AUFU、Go语言、cgroup实现了资源的独立,可以很轻松的实现文件、资源、网络等隔离,其最终的目标是实现类似PaaS平台的应用隔离。
Docker 由下面这些组成:1. Docker 服务器守护程序(server daemon),用于管理所有的容器。
2. Docker 命令行客户端,用于控制服务器守护程序。
3. Docker 镜像:查找和浏览 docker 容器镜像。
2 docker特性文件系统隔离:每个进程容器运行在完全独立的根文件系统里。
资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。
网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。
写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。
日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。
无需使用模板或手动配置。
交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。
3 两个基础概念images与containerContainer和Image 在Docker的世界里,Image是指一个只读的层(Layer),这里的层是AUFS里的概念,最直观的方式就是看一下docker官方给出的图:Docker使用了一种叫AUFS的文件系统,这种文件系统可以让你一层一层地叠加修改你的文件,最底下的文件系统是只读的,如果需要修改文件,AUFS会增加一个可写的层(Layer),这样有很多好处,例如不同的Container可以共享底层的只读文件系统(同一个Kernel),使得你可以跑N多个Container而不至于你的硬盘被挤爆了!这个只读的层就是Image!而如你所看到的,一个可写的层就是Container。
那Image和Container的区别是什么?很简单,他们的区别仅仅是一个是只读的层,一个是可写的层,你可以使用docker commit 命令,将你的Container变成一个Image,也就是提交你所运行的Container的修改内容,变成一个新的只读的Image,这非常类似于git commit命令。
4 docker安装与启动安装docker[root@localhost /]# yum -y install docker-io更改配置文件[root@localhost /]# vi /etc/sysconfig/dockerother-args列更改为:other_args="--exec-driver=lxc --selinux-enabled"启动docker服务[root@localhost /]# service docker startStarting cgconfig service: [ OK ]Starting docker: [ OK ]将docker加入开机启动[root@localhost /]# chkconfig docker on基本信息查看docker version:查看docker的版本号,包括客户端、服务端、依赖的Go等[root@localhost /]# docker versionClient version: 1.0.0Client API version: 1.12Go version (client): go1.2.2Git commit (client): 63fe64c/1.0.0Server version: 1.0.0Server API version: 1.12Go version (server): go1.2.2Git commit (server): 63fe64c/1.0.0docker info :查看系统(docker)层面信息,包括管理的images, containers数等[root@localhost /]# docker infoContainers: 16Images: 40Storage Driver: devicemapperPool Name: docker-253:0-1183580-poolData file: /var/lib/docker/devicemapper/devicemapper/dataMetadata file: /var/lib/docker/devicemapper/devicemapper/metadataData Space Used: 2180.4 MbData Space Total: 102400.0 MbMetadata Space Used: 3.4 MbMetadata Space Total: 2048.0 MbExecution Driver: lxc-0.9.0Kernel Version: 2.6.32-431.el6.x86_645 镜像的获取与容器的使用镜像可以看作是包含有某些软件的容器系统,比如ubuntu就是一个官方的基础镜像,很多镜像都是基于这个镜像“衍生”,该镜像包含基本的ubuntu系统。
再比如,hipache是一个官方的镜像容器,运行后可以支持http 和websocket的代理服务,而这个镜像本身又基于ubuntu。
搜索镜像docker search <image>:在docker index中搜索image[root@localhost /]# docker search ubuntu12.10NAME DESCRIPTION STARS OFFICIAL AUTOMATEDmirolin/ubuntu12.10 0marcgibbons/ubuntu12.10 0mirolin/ubuntu12.10_redis 0chug/ubuntu12.10x32 Ubuntu Quantal Quetzal 12.10 32bit base i 0chug/ubuntu12.10x64 Ubuntu Quantal Quetzal 12.10 64bit base i 0下载镜像docker pull <image> :从docker registry server 中下拉image[root@localhost /]# docker pull chug/ubuntu12.10x64查看镜像docker images:列出imagesdocker images -a :列出所有的images(包含历史)docker images --tree :显示镜像的所有层(layer)docker rmi <image ID>:删除一个或多个image[root@localhost /]# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE chug/ubuntu12.10x64 latest 0b96c14dafcd 4 months ago 270.3 MB [root@localhost /]# docker images -aREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE chug/ubuntu12.10x64 latest 0b96c14dafcd 4 months ago 270.3 MB <none> <none> 31edfed3bb88 4 months ago 175.8 MB [root@localhost /]# docker images --treeWarning: '--tree' is deprecated, it will be removed soon. See usage.└─31edfed3bb88 Virtual Size: 175.8 MB└─0b96c14dafcd Virtual Size: 270.3 MB Tags: chug/ubuntu12.10x64:latest[root@localhost /]# docker rmi <image ID> ....使用镜像创建容器[root@localhost /]# docker run chug/ubuntu12.10x64 /bin/echo hello worldhello world交互式运行[root@localhost /]# docker run -i -t chug/ubuntu12.10x64 /bin/bashroot@2161509ff65e:/#查看容器docker ps :列出当前所有正在运行的containerdocker ps -l :列出最近一次启动的containerdocker ps -a :列出所有的container(包含历史,即运行过的container)docker ps -q :列出最近一次运行的container ID[root@localhost /]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESccf3de663dc9 chug/ubuntu12.10x64:latest /bin/bash 22 hours ago Up 22 hours sharp_hypatia[root@localhost /]# docker ps -lCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESf145f184647b chug/ubuntu12.10x64:latest /bin/bash 6 seconds ago Exited (0) 3 seconds ago compassionate_galileo[root@localhost /]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESf145f184647b chug/ubuntu12.10x64:latest /bin/bash 30 seconds ago Exited (0) 26 seconds ago compassionate_galileof4624b42fe7e chug/ubuntu12.10x64:latest /bin/bash 2 minutes ago Exited (0) 2 minutes ago sharp_wilsonccf3de663dc9 chug/ubuntu12.10x64:latest /bin/bash 22 hours ago Up 22 hours sharp_hypatia9cbaa79b9703 chug/ubuntu12.10x64:latest /bin/bash 22 hours ago Exited (127) 36 minutesago berserk_mcclintock2161509ff65e chug/ubuntu12.10x64:latest /bin/bash 22 hours ago Exited (0) 22 hours ago backstabbing_mcleanccf3de663dc9再次启动容器docker start/stop/restart <container> :开启/停止/重启containerdocker start [container_id] :再次运行某个container (包括历史container)docker attach [container_id] :连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)docker start -i <container> :启动一个container并进入交互模式(相当于先start,在attach)docker run -i -t <image> /bin/bash :使用image创建container并进入交互模式, login shell是/bin/bashdocker run -i -t -p <host_port:contain_port> :映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。