CentOS系统下docker的安装配置及使用详解
docker
一、安装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时的异常报错与解决方法
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容器的部署过程也非常简单,只需要几个命令即可完成整个部署过程。
本文将介绍如何使用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则是一种非常流行的容器化技术。
结合起来使用,可以让服务器管理更加高效、灵活。
以下是宝塔面板Docker用法的介绍:
1. 安装Docker
在宝塔面板上安装Docker非常方便,只需要进入宝塔面板后台,选择“软件商店”,找到Docker并点击安装即可。
2. 创建容器
在宝塔面板中创建Docker容器也非常简单,只需要进入Docker 管理页面,点击“新建容器”,填写相关信息即可,例如容器名称、镜像版本等。
3. 配置容器
创建容器后,需要进行一些配置工作,例如设置端口映射、创建挂载目录等。
这些工作可以在容器管理页面中完成。
4. 启动容器
容器配置完成后,就可以启动它了。
在容器管理页面中,点击“启动”按钮即可。
同时,也可以在该页面中查看容器的状态和日志信息。
5. 使用容器
启动容器后,就可以在里面运行各种应用程序了,例如网站、数据库等。
可以通过SSH连接到容器内部进行操作,也可以使用宝塔面板提供的Web SSH功能进行远程操作。
总之,宝塔面板和Docker的结合使用,可以让服务器管理更加
灵活、高效,值得大家尝试。
如何在Docker容器中安装和配置Java环境
如何在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 安装配置
实验一: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安装及部署镜像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已经成为现代软件开发和部署的标准工具之一。
它的便携性和轻量级的特点,使得开发人员可以更轻松地配置和运行各种不同的应用程序。
而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 是⼀个能够把开发应⽤程序⾃动部署到容器的开源引擎。
它由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。
一、网络模式的选择Docker提供了多种网络模式供用户选择,包括桥接模式、主机模式、容器模式和无网络模式。
每种模式都有不同的特点和适用场景。
1. 桥接模式桥接模式是Docker默认的网络模式,它将容器连接到一个桥接网络,使得容器之间可以相互通信。
在这种模式下,Docker会为每个容器分配一个IP地址,并进行网络隔离。
这种模式适用于需要单独管理每个容器网络的场景。
2. 主机模式主机模式将容器直接连接到主机网络,容器和主机共享同一组IP地址。
在这种模式下,容器可以直接访问主机上的网络资源,但容器之间无法直接通信。
主机模式适用于需要容器与主机无隔离的场景。
3. 容器模式容器模式将多个容器连接到同一个网络命名空间,使得它们可以共享同一个网络配置。
在这种模式下,Docker会为每个容器分配一个自己的IP地址,并实现容器之间的通信。
容器模式适用于需要将多个容器部署在同一个网络环境的场景。
4. 无网络模式无网络模式是一种完全隔离的网络模式,容器内部无法访问外部网络,也无法与其他容器进行通信。
这种模式适用于需要高度隔离的场景,如安全测试等。
二、网络驱动的选择Docker还提供了多种网络驱动供用户选择,包括bridge驱动、host驱动、overlay驱动等。
不同的网络驱动提供了不同的网络功能和性能。
1. bridge驱动bridge驱动是Docker默认使用的网络驱动,它使用了Linux的bridge技术创建一个虚拟的网络桥接设备,并将容器连接到该设备上。
这种驱动较为简单,适用于大部分应用场景。
2. host驱动host驱动将容器直接绑定到主机网络,容器与主机共享同一个网络栈和网络接口。
Docker容器网络配置及使用方法详解
Docker容器网络配置及使用方法详解Docker是一种流行的容器化平台,其强大的网络功能为开发和部署应用程序提供了便捷和灵活的解决方案。
在本文中,我们将详细介绍Docker容器的网络配置和使用方法。
一、Docker网络模式Docker提供了多种网络模式,以满足各种不同的需求。
常见的网络模式包括:1. 桥接网络(Bridge):这是默认网络模式,它通过在Docker主机上创建一个网络桥接接口来实现容器之间的通信。
每个容器都可以分配一个唯一的IP地址,并使用容器名称进行互相访问。
2. 主机网络(Host):使用主机网络模式,容器将直接使用宿主机的网络接口,与宿主机共享相同的IP地址。
这样可以避免网络层次化结构带来的性能损失,但容器之间的端口号必须唯一。
3. 网络代理(Overlay):通过在多个Docker主机之间创建网络隧道,容器可以在不同的主机上实现互联互通。
这种模式适用于分布式系统和集群环境。
二、容器网络配置1. 创建容器要创建一个容器,可以使用以下命令:```docker run --name mycontainer -d nginx```此命令将在后台运行一个名为mycontainer的容器,并使用nginx镜像。
2. 连接容器要连接到容器中的特定网络,可以使用以下命令:```docker exec -it mycontainer bash```这将以交互模式进入正在运行的容器,并启动一个bash终端。
3. 查看容器网络信息要查看容器的网络信息,可以使用以下命令:```docker inspect mycontainer```该命令将返回一些关于容器网络配置的详细信息,包括IP地址、网关、DNS 等。
三、容器之间的通信1. 使用容器名称进行通信在桥接网络中,容器可以使用其名称进行通信。
例如,如果有两个容器分别为container1和container2,可以在container1中使用以下命令来访问container2:```ping container2```这将通过容器名称解析container2的IP地址,并进行ping测试。
详解docker镜像centos7配置Java运行环境
详解docker镜像centos7配置Java运⾏环境1.拉取centos镜像docker pull centos:72.基于拉取到的镜像运⾏⼀个容器docker run -it --name mycentos docker.io/centos:7 /bin/bash运⾏起来就直接进⼊了容器的交互界⾯3.容器中安装jdk⾸先查询可⽤的jdk版本yum search java|grep jdk根据搜索到jdk进⾏安装yum install java-1.7.0-openjdk安装完成之后可以不⽤配置环境变量,因为安装完成之后貌似是⾃动配置好了使⽤命令测试jdk是否安装成功java -version如果正常显⽰jdk的版本号说明安装成功,然后使⽤ exit直接退出容器到宿主机4.安装tomcat从官⽹⼿动下载tomcat的tar包;下载完成的⽂件如: apache-tomcat-7.0.78.tar.gz 将该⽂件⾸先上传到宿主机;可以⽤FTP 等⽅式,上传完成后将tomcat包拷贝到docker容器;拷贝命令:docker cp /apache-tomcat-7.0.78.tar.gz mycentos:/usr上⾯的命令是将tomcat包拷贝到名为mycentos容器的usr⽬录下5.在容器中制作tomcat启动脚本进⼊已经运⾏的容器docker exec -it mycentos /bin/bash创建⽂件touch /root/run.sh编辑⽂件vi /root/run.sh输⼊⽂件内容,保存退出#!/bin/bashexprot JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.141-2.6.10.1.el7_3.x86_64/export PATH=$JAVA_HOME/bin:$PATHsh /usr/tomcat/bin/catalina.sh runJAVA_HOME:jdk的存放⽬录,默认为上⾯命令中的PATH:不⽤解释了sh:指定tomcat真实启动的catalina.sh脚本给run.sh添加权限chmod u+x /root/run.sh授权完成之后退出容器;使⽤exit命令退出到宿主机6.制作tomcat镜像docker commit mycentos mytomcat:7将mycentos容器提交的镜像仓库,镜像名称为mytomcat,版本号为:77.⽤制作好的tomcat镜像启动⼀个tomcat容器docker run -d --name tomcat1 -p 5001:8080 mytomcat:7 /root/run.sh使⽤docker ps可以查看容器是否启动成功 -d:表⽰以守护进程⽅式启动 --name:指定容器的名称 -p:将tomcat 8080端⼝映射到宿主机的5001端⼝ mytomcat:7:上⼀步制作好的tomcat镜像8.浏览器访问http://宿主机ip:5001问题1:如何进⼊⼀个正在运⾏的容器docker exec -it tomcat1 /bin/bash问题2:如何部署项⽬到tomcatdocker cp /ROOT.war tomcat1:/usr/tomcat/webapps直接在宿主机拷贝Jar包到容器中的tomcat webapps⽬录下问题3:怎么设置docker容器的时区cp /usr/share/zoneinfo/PRC /etc/localtime直接在容器中执⾏上⾯的命令,执⾏完成后⽤date命令查看容器时间是否和当前时间⼀样问题4:怎么设置tomcat的时区export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"在tomcat/bin/catalina.sh⽂件中的第⼀⾏添加上⾯的代码;因为容器中的tomcat与真实的时间差8⼩时,是时区不⼀致导致的问题;设置完成后保存退出,然后重启容器就可以看到时间⼀样了问题5:怎么重启容器停⽌容器docker stop tomcat1启动容器docker start tomcat1感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!。
Docker Registry的搭建与配置步骤详解
Docker Registry的搭建与配置步骤详解随着云计算和容器技术的快速发展,越来越多的开发者开始使用Docker来进行应用程序的部署和管理。
而在使用Docker时,我们经常需要用到Docker Registry来保存和分享镜像。
本文将详细介绍Docker Registry的搭建与配置步骤,以帮助读者快速上手。
## 1. 安装和配置Docker RegistryDocker Registry是一个开源的应用程序,旨在帮助用户管理Docker镜像,并提供进行镜像上传、下载和搜索的功能。
安装Docker Registry非常简单,只需要在命令行中运行以下命令:```docker run -d -p 5000:5000 --restart=always --name registry registry:2```以上命令会从Docker Hub上下载最新的Registry镜像,并在本地运行一个Registry容器。
同时,该命令还会将主机的5000端口映射到容器的5000端口,以便我们可以通过主机访问Registry。
运行完以上命令后,我们可以通过访问`http://localhost:5000/v2/_catalog`来验证Registry是否已经成功搭建。
如果返回一个空的JSON对象,说明Registry已经可以正常工作了。
## 2. 配置Registry的认证与访问控制默认情况下,Docker Registry是公开的,任何人都可以访问和下载镜像。
但在实际应用中,我们往往需要对Registry进行认证和访问控制,以保护镜像的安全性。
下面是一个示例的配置文件,包含了如何对Registry进行基本的认证和访问控制:```yamlversion: 0.1log:level: debugfields:service: registryenvironment: developmentstorage:filesystem:rootdirectory: /var/lib/registryhttp:addr: localhost:5000headers:X-Content-Type-Options: [nosniff]auth:htpasswd:realm: basic-realmpath: /etc/docker/registry/htpasswd# Uncomment the following lines to enable TLS # tls:# certificate: /path/to/cert.pem# key: /path/to/key.pem```在上述配置文件中,我们通过htpasswd文件来存储用户信息,用于认证访问Registry。
Docker容器技术与应用实训指导书(1)
《Docker容器技术与应用项目教程》项目实训参考指导实训一安装虚拟机与CentOS 七.六操作系统一,实训目地(一)掌握安装虚拟机地方法。
(二)掌握安装CentOS 七.六操作系统地方法。
二,实训内容安装虚拟机与CentOS 七.六操作系统。
三,实训练在Windows 一零操作系统上安装虚拟机,并在虚拟上安装CentOS 七.六操作系统,要求如下。
(一)安装CentOS 七.六操作系统。
(二)将虚拟机硬盘空间设置为二零GB,内存设置为八GB。
(三)要安装"带GUI地服务器"。
(四)为系统设置四个分区,/boot,/,/home与swap,分区容量分别为二G,一零GB,六GB与二GB。
前三个分区地文件系统类型设置为xfs,swap换分区地文件系统类型需要使用swap。
(五)为root用户设置密码"admin@零一";创建"admin"用户,将其密码设置为"admin@零二"。
实训二系统克隆与快照管理一,实训目地(一)掌握系统克隆地使用方法。
(二)掌握系统快照地使用方法。
二,实训内容练系统克隆与快照管理功能,达到熟练应用地目地。
三,实训练(一)打开VMware虚拟机主界面,关闭虚拟机地系统,选择妳要克隆地系统,选择菜单栏虚拟机→管理(M)→克隆(C)。
(二)打开VMware虚拟机主界面,启动虚拟机地系统,选择妳要快照保存备份地系统,选择菜单栏虚拟机→快照(N)→拍摄快照(T)。
实训三 SecureCRT与SecureFX远程连接管理Linux系统一,实训目地(一)掌握SecureCRT远程连接管理Linux系统地使用方法。
(二)掌握SecureFX远程连接管理Linux系统地使用方法。
二,实训内容练SecureCRT与SecureFX远程连接管理Linux系统,达到熟练应用地目地。
三,实训练(一)行有关配置,使用SecureCRT远程连接管理Linux系统,行相应操作。
使用Docker容器进行开发和调试的方法
使用Docker容器进行开发和调试的方法近年来,Docker技术在软件开发领域备受瞩目。
它提供了一种轻量级的虚拟化解决方案,使得开发人员能够更加高效地进行应用程序的开发和调试。
本文将介绍一些使用Docker容器进行开发和调试的方法,帮助读者更好地利用这一工具。
1. 安装Docker首先,我们需要在本地计算机上安装Docker。
Docker的安装过程相对简单,在官方网站上提供了详细的安装指南。
根据自己的操作系统选择合适版本的Docker,并按照指南进行安装。
2. 编写Dockerfile在使用Docker容器进行开发和调试时,我们需要编写一个Dockerfile文件来定义容器的构建过程。
Dockerfile是一个文本文件,通过一系列的指令来描述如何构建一个镜像。
下面是一个简单的示例:```FROM python:3.9.5WORKDIR /appCOPY . /appRUN pip install -r requirements.txtCMD ["python", "app.py"]```上述Dockerfile文件的含义是使用Python 3.9.5作为基础镜像,将当前目录下的文件复制到容器的/app目录下,然后安装requirements.txt文件中指定的依赖库,最后运行app.py文件。
3. 构建Docker镜像在编写完Dockerfile文件后,我们可以使用以下命令来构建一个Docker镜像:```docker build -t myapp .```其中,-t参数用来指定镜像的标签,myapp是我们自己定义的标签,.表示当前目录。
4. 运行Docker容器构建完Docker镜像后,我们就可以使用以下命令来运行一个Docker容器:```docker run -it --rm myapp```其中,-it参数用于分配一个交互式终端并绑定到容器的标准输入、输出和错误流。
docker使用工作流程是怎么样的
Docker使用工作流程是怎么样的1. 简介Docker是一个开源的容器化平台,能够将应用程序和其依赖的库打包成一个独立的容器,让应用程序可以在任何地方都能够以相同的方式运行。
Docker的使用工作流程如下:2. 安装Docker•在Linux上,可以使用apt-get或yum等包管理器直接安装Docker。
•在Windows上,可以下载Docker Desktop并安装。
•在Mac上,可以下载Docker Desktop并安装。
3. 创建Docker镜像•使用Dockerfile定义Docker镜像的配置信息,如基础镜像、依赖项、环境变量等。
•使用docker build命令根据Dockerfile创建镜像,命令格式如下:docker build -t <image_name>:<tag> <path_to_Dockerfile>•等待镜像创建完成。
4. 运行Docker容器•使用docker run命令运行Docker容器,命令格式如下:docker run -d --name <container_name> -p <host_port>:<conta iner_port> <image_name>:<tag>•-d选项表示在后台运行容器。
•--name选项指定容器的名称。
•-p选项表示将容器的端口映射到主机的端口。
•等待容器启动完成。
5. 进入Docker容器•使用docker exec命令进入正在运行的容器,命令格式如下:docker exec -it <container_name> /bin/bash•-it选项表示交互式进入容器。
•/bin/bash表示要进入容器的bash shell。
6. 将文件复制到Docker容器中•使用docker cp命令将文件复制到正在运行的容器,命令格式如下:docker cp <host_path> <container_name>:<container_path>•<host_path>表示要复制的文件在主机上的路径。
dockercentos7安装ssh具体步骤
dockercentos7安装ssh具体步骤 docker centos7 安装ssh具体步骤,这⾥记录下,也⾏能帮助到正在读⽂章的朋友。
⼀. 从docker hub 下载centos 官⽅镜像hr:centos7 hr$ docker pull centos:7下载完后,查看本地资源库:hr:centos7 hr$ docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEcentos 7 ce20c473cd8a 7 weeks ago 172.3 MB运⾏容器hr:centos7 hr$ docker run -i -t centos:7 /bin/bash⼆. 安装passwd,openssl,openssh-server[root@b5926410fe60 /]# yum install passwd openssl openssh-server -y启动sshd:# /usr/sbin/sshd -D这时报以下错误:[root@ b5926410fe60 /]# /usr/sbin/sshdCould not load host key: /etc/ssh/ssh_host_rsa_keyCould not load host key: /etc/ssh/ssh_host_ecdsa_keyCould not load host key: /etc/ssh/ssh_host_ed25519_key执⾏以下命令解决:[root@b5926410fe60 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''[root@b5926410fe60 /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''[root@b5926410fe60 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''然后,修改 /etc/ssh/sshd_config 配置信息:UsePAM yes 改为 UsePAM noUsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no[root@b5926410fe60 /]# sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config [root@b5926410fe60 /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config修改完后,重新启动sshd[root@b5926410fe60 /]# /usr/sbin/sshd -D三. 修改root 密码[root@b5926410fe60 /]# passwd root四. 查看容器ip地址(如果宿主机是linux操作系统则跳过这⼀步)[root@b5926410fe60 /]# ip addr ls eth084: eth0@if85: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UPlink/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ffinet 172.17.0.2/16 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::42:acff:fe11:2/64 scope linkvalid_lft forever preferred_lft forever五. 将当前容器保存为镜像hr:centos7 hr$ docker ps -allCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb5926410fe60 centos:7 "/bin/bash" 4 minutes ago Exited (0) 4 seconds ago centos7sshhr:centos7 hr$ docker commit b5926410fe60 herong/centos7-ssh六. 在宿主机上基于新创建的镜像启动新的容器--先删除之前的容器hr:centos7 hr$ docker ps -allCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES4122f818a741 herong/centos7-ssh:latest "/usr/sbin/sshd" 13 seconds ago Exited (0) 13 seconds ago happy_mcleanhr:centos7 hr$ docker rm -f 4122f818a741--基于新镜像运⾏容器hr:centos7 hr$ docker run -d -p 10022:22 herong/centos7-ssh:latest /usr/sbin/sshd -D--查看映射端⼝是否成功hr:centos7 hr$ docker ps -allCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES4966d35fe0a3 herong/centos7-ssh:latest "/usr/sbin/sshd -D" 3 seconds ago Up 3 seconds 0.0.0.0:10022->22/tcp compassionate_kowalevski hr:centos7 hr$ docker port 4966d35fe0a322/tcp -> 0.0.0.0:10022七. 从宿主机连接到容器w 如果宿主机是⾮linux操作系统,则需要通过docker-machine ip连到容器-- 查看docker-machine Ip地址hr:centos7 hr$ docker-machine ip default192.168.99.100--通过docker-machine ip 连接到容器,输⼊之前设置的密码即可登录成功hr:centos7 hr$ ssh root@192.168.99.100 -p 10022The authenticity of host '[192.168.99.100]:10022 ([192.168.99.100]:10022)' can't be established.ECDSA key fingerprint is SHA256:d3JNckcTVv1ASJlwv+IT/bJwlzMC4U1T/PmsKYIHMhQ.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '[192.168.99.100]:10022' (ECDSA) to the list of known hosts.root@192.168.99.100's password:[root@4966d35fe0a3 ~]# pwd/rootw 如果宿主机是linux操作系统,则通过第4步查看到的ip地址连接hr:centos7 hr$ ssh root@172.17.0.2 -p 10022感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!。
Centos8无法安装docker问题的解决方法
Centos8⽆法安装docker问题的解决⽅法出现问题[root@zh ~]#[root@zh ~]#[root@zh ~]# yum -y install docker上次元数据过期检查:0:08:25 前,执⾏于 2020年08⽉05⽇星期三 20时28分10秒。
未找到匹配的参数: docker错误:没有任何匹配: docker[root@zh ~]#解决办法⾸先测试⼀下是否能ping通外⽹:[root@zh ~]#[root@zh ~]#[root@zh ~]#[root@zh ~]# ping PING (115.29.223.128) 56(84) bytes of data.64 bytes from 115.29.223.128 (115.29.223.128): icmp_seq=1 ttl=55 time=23.7 ms64 bytes from 115.29.223.128 (115.29.223.128): icmp_seq=2 ttl=55 time=23.6 ms64 bytes from 115.29.223.128 (115.29.223.128): icmp_seq=3 ttl=55 time=23.7 ms64 bytes from 115.29.223.128 (115.29.223.128): icmp_seq=4 ttl=55 time=23.6 ms^C--- ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 8msrtt min/avg/max/mdev = 23.637/23.660/23.700/0.024 ms[root@zh ~]#是可以的。
安装源:yum install https:///linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm重新测试:是可以的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 映射到一个动态端口。