su域名注册,如何做360网站优化,78建筑网官网,wordpress下载远程图片大小写在前面这篇博客适合谁#xff1f;对于Docker并不了解#xff0c;只是有一点模糊的感觉#xff0c;觉得Docker可以当成虚拟机用之类的只是下载了Docker软件#xff0c;对于怎么配置#xff0c;怎么玩#xff0c;第一步干什么#xff0c;完全一无所知其二#xff0c;我… 写在前面这篇博客适合谁对于Docker并不了解只是有一点模糊的感觉觉得Docker可以当成虚拟机用之类的只是下载了Docker软件对于怎么配置怎么玩第一步干什么完全一无所知其二我从对Docker只有及其模糊(真的是模糊我除了知道Docker是跟虚拟系统有关其他啥都不知道)到现在起码一问一不知(对应一问三不知)的状态大概花了8个小时。这期间全靠我从网络上搜索到的资料。现在用我的话写出来我觉得对于跟我相同开始情况的小白用户能省不少时间所以我要写。其次确实现在Docker相关的文章真的太多了那我为什么还要写呢这篇文章主要是哪方面的Docker文章纯入门你做了哪些工作首先我一直都很好奇Docker这个东西但从来没有机会去使用它。但是这学期OS课的lab纯Linux系统编程虽然使用双系统或者虚拟机都是纯小学生的难易程度了也不麻烦但我想为什么不用Docker呢用双系统或者虚拟机也太过小儿科所以我就这样接触了Docker那么我使用Docker实现了什么在lab中我们需要用到的是纯终端下的gcc工具链还有vim等那么这就是我需要的全部软件了于是我在Docker中实现了「gccgdbvim」环境并push到了hub中。首先对于Docker的概念作出我的解释尽量通俗易懂接着针对我用Docker的目的从最开始的软件下载到最后push一个自己的镜像到hub整个过程以白话的形式描述出来降低入门门槛节省你的学习时间很高兴你问了我这个问题。本文主要入门Docker你要下载什么注册什么Docker for mac这个你肯定要下载点我下载Docker for mac and Windows的社区免费版本(https://www.docker.com/products/docker-desktop)注册Docker官方账号你需要它像github一样你可以使用git把项目上传到上面注册一个Docker的官方账号有利而无害相信我点我注册Docker Cloud官方账号Docker安装好账号也注册后点击桌面顶栏的Docker图标点击sign in登陆你的Docker账号。注册DaoCloud账号获取加速服务不可否认有时直接从Docker官方往本地pull镜像会十分缓慢。。。这时我们可以通过国内的Docker服务提供商免费获取加速pull镜像服务阿里网易好像都有这种服务我选择的是DaoCloud点我注册DaoCloud账号注册后登陆DaoCloud找到这个按钮Docker加服务记得自行注册Docker的理解Docker可以说是一个终端命令行的虚拟机但更准确的说法其实应该是一个虚拟环境。比如你想要在PC上无缝使用Linux么那么虚拟机并不是你唯一的出路你还有Docker我更愿意称Docker为一个容器当然这只是Docker的一个狭义解释Docker不止是一个容器Docker包含3个重要概念镜像(Image)镜像是静态的、可以被用户互相分享的文件。我们玩过双系统和虚拟机的人都知道首先你需要一个.iso镜像才能安装系统。Docker中的镜像也是这个东西镜像是静态的你不能对他操作只能pull别人的镜像或者push自己的镜像。容器(Container)前面说过镜像是静态不可操作的只能被分享和下载那什么是能被操作的呢就是容器里容器可以理解为镜像的动态状态也就是我们虚拟机中系统装好后的状态其实这么说是不对的容器最符合的描述应该是Linux的iso文件的Live CD模式比如我们玩双系统时都进入过Live CD模式不安装系统而直接进入系统很神奇是吧Docker的容器就是这个概念只不过更加轻量更加迅速便捷。但是Live CD的害处就是你关机后作出的修改安装的软件全部gg容器也是一样一旦被直接推出之前安装的gcc啊vim啊啥的就会全部gg掉。如果要保存修改就需要将当前容器封装成一个新的镜像这样下次启动这个新的镜像后之前作出的修改还都在。仓库(Repository)各位在前面看到我写的pull和push什么的有没有晕不知道各位对于git熟悉不熟悉Docker中的仓库很像git的代码仓库你可以pull自己之前push到自己仓库的镜像到本地也可以pull别人push到公共仓库的镜像到自己本地。说白了就是百度云盘你可以上传(push)自己做好环境的Docker上去也可以下载(pull)自己云端的镜像到本地。同时我们知道百度云最大的特点就是分享(你懂的嘿嘿嘿)类比Docker如果你得到百度云分享链接(别人的镜像名字、标签和别人的用户名)你还可以下载(pull)别人分享的镜像到自己的本地别人也可以下载(pull)你的镜像因为Docker仓库都是公共的。当然每个免费用户有一个名额把自己的一个镜像设为私有。这些概念如果你使用Github就超级好理解了实际操作下查看Docker版本信息终端输入docker version显示的我的版本信息 ~$ docker versionClient: Version: 17.06.2-ce API version: 1.30 Go version: go1.8.3 Git commit: cec0b72 Built: Tue Sep 5 20:12:06 2017 OS/Arch: darwin/amd64当然如果你需要简单的信息可以使用docker -v如何Pull你的第一个镜像Docker安装好后是不会自带镜像的你需要从仓库自己pull一个镜像下来自己制作自己的镜像也是一个道理你可以通过在已有的镜像基础上生成自己的镜像或者随便百度的如何创建自己Docker镜像得到的教程Docker镜像官方好像只提供Linux搜索ubuntu的Docker镜像docker search ubuntu或者你想要的任何一个版本号的linux~$ docker search ubuntuNAME DESCRIPTION STARS OFFICIAL AUTOMATEDubuntu Ubuntu is a Debian-based Linux operating s... 6636 [OK]dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 131 [OK]rastasheep/ubuntu-sshd Dockerized SSH service, built on top of of... 105 [OK]ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 86 [OK]ubuntu-upstart Upstart is an event-based replacement for ... 80 [OK]neurodebian NeuroDebian provides neuroscience research... 40 [OK]ubuntu-debootstrap debootstrap --variantminbase --components... 31 [OK]拉取官方最新版的ubuntu镜像docker pull ubuntu:latest其中的latest是一个标签(tag)表示是当前最新版本。你应该得到的信息类似这样的$ docker pull ubuntu:latestTrying to pull repository docker.io/library/ubuntu ...latest: Pulling from docker.io/library/ubuntuaed158d74952: Pull complete773ae8273d14: Pull completed1d487w88782: Pull completecd3d6cd6c0cf: Pull complete8d73bu79120c: Pull completeDigest: sha256:35bc48a1ca97c3f74rhf378hj92hd82j29i4hf4hf84nf0dhnsid232de8d8Status: Downloaded newer image for docker.io/ubuntu:latest你输入的命令实际上相当于docker pull registry.hub.docker.com/ubuntu:latest命令即从注册服务器registry.hub.docker.com中的名为ubuntu的仓库中下载标签为latest的镜像。由于我的lab统一要求ubuntu需要14.04版本所以我在hub里面搜了搜找到了一个用户分享的14.04 64位纯净镜像(base image)下面将他的镜像扒下来~$ docker pull chug/ubuntu14.04x64这个用户还有很多其他版本的ubuntu系统12 13 14的32位64位都有全是纯净镜像。查看你本地的镜像仓库把初始镜像拉下来后就可以启动它了不过可以先使用docker images命令查看你自己的本地镜像我随便找了个例子你的也应该是类似这样的$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/ubuntu 16.04 e4415b714b62 11 days ago 128.1 MBdocker.io/ubuntu latest e4415b714b62 11 days ago 128.1 MBdocker.io/ubuntu 12.04 aefa163f7a7e 11 days ago 103.5 MBdocker.io/centos latest 0584b3d2cf6d 3 weeks ago 196.5 MB在列出信息中可以看到几个字段信息:来自于哪个仓库比如 ubuntu镜像的标记比如 16.04它的 ID 号(唯一)比如e4415b714b62创建时间镜像大小其中镜像的 ID 唯一标识了镜像注意到 ubuntu:16.04 和 ubuntu:latest具有相同的镜像 ID 说明它们实际上是同一镜像。TAG 信息用来标记来自同一个仓库的不同镜像。例如 ubuntu 仓库中有多个镜像通过 TAG 信息来区分发行版本例如10.04 、 12.04 、 12.10 、 13.04 、 14.04 等。例如可以使用docker run -t -i ubuntu:16.04 /bin/bash命令指定使用镜像ubuntu:16.04来启动一个容器。如果不指定具体的标记则默认使用latest标记信息。启动镜像并且安装软件比如现在你已经有一个初始的镜像了注意这个里面是什么都没有的连vim都没装是精简到不能再精简的镜像了。1.首先启动它$ docker run -it chug/ubuntu14.04x64 /bin/bashrootaa97ba3292ce:/#-it 表示运行在交互模式是-i -t的缩写也可以两个连在一起写-it是两个参数-i和-t。前者表示打开并保持stdout后者表示分配一个终端(pseudo-tty)一般这个模式就是可以启动bash然后和容器有命令行的交互可以看到我们终端的字头变成rootaa97ba3292ce:/#了这就意味着我们的镜像已经创建了一个容器实例。现在我们可以对这个“ubuntu系统”进行操作了比如安装vimrootaa97ba3292ce:/# apt-get install vimReading package lists... DoneBuilding dependency tree... DoneThe following extra packages will be installed: file libexpat1 libffi6 libgpm2 libmagic1 libpython2.7 libpython2.7-minimal libpython2.7-stdlib libsqlite3-0 libssl1.0.0 mime-support vim-common vim-runtimeSuggested packages: gpm ctags vim-doc vim-scriptsThe following NEW packages will be installed: file libexpat1 libffi6 libgpm2 libmagic1 libpython2.7 libpython2.7-minimal libpython2.7-stdlib libsqlite3-0 libssl1.0.0 mime-support vim vim-common vim-runtime0 upgraded, 14 newly installed, 0 to remove and 0 not upgraded.Need to get 10.7 MB of archives.After this operation, 50.7 MB of additional disk space will be used.Do you want to continue? [Y/n]看到我没有用sudo是因为本来就已经是超级用户(root)状态了可以看#代表超级用户$代表普通用户这个是Linux的基础知识不要忘了。同理也可以更具自己的需求安装更多的软件。想退出容器很简单如果使用exit命令退出则容器的状态处于Exit而不是后台运行。如果想让容器一直运行而不是停止可以使用快捷键 ctrlp或者 ctrlq 退出。此时容器的状态为Up。查看当前正在运行的容器~$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESaa97ba3292ce chug/ubuntu14.04x64 /bin/bash 7 minutes ago Up 7 minutes relaxed_hoover这里我们可以看到当前有一个ID为aa97ba3292ce的容器那麽如何控制它呢启动、停止、重启容器aa97ba3292ce的命令分别是~$ docker start aa97ba3292ce~$ docker stop aa97ba3292ce~$ docker restart aa97ba3292ce后台启动一个容器后如果想进入到这个容器可以使用attach命令~$ docker attach aa97ba3292ce软件装完想保存环境commit帮你你这会是不是想起了gitcommit -m“”没错类似。将容器转化为一个镜像即执行commit操作完成后可使用docker images查看rootaa97ba3292ce:/#exit //先退出容器~$ docker commit -m ubuntu with vim -a sgy aa97ba3292ce sgy/ubuntu:vim~$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEsgy/ubuntu vim 52166e4475ed 5 seconds ago 358.1 MBchug/ubuntu14.04x64 latest 0584b3d2cf6d 9 days ago其中-m指定说明信息-a指定用户信息aa97ba3292ce代表容器的idsgy/ubuntu:vim指定目标镜像的用户名、仓库名和 tag 信息。我这里都是为了瞎编的用户名我自己的用户名也不是sgy。你运行命令的时候使用自己注册Docker时的用户名。此时Docker中就有了我们新建的镜像sgy/ubuntu:vim此镜像和原有的ubuntu镜像区别在于多了个vim工具。此时我们利用新镜像创建的容器本身就自带vim了。启动新创建的镜像可以看到vim已经自带了。~$ docker run -it sgy/ubuntu:vim /bin/bashroot520afc596c51:/# vim --versionVIM - Vi IMproved 7.4 (2013 Aug 10, compiled Apr 4 2017 18:14:54)利用exit退出容器。此时Docker引擎中就有了两个容器可使用docker ps -a查看。如果你想要删除镜像如果想删除容器或者镜像可以使用rm命令。注意删除镜像前必须先删除以此镜像为基础的容器(哪怕是已经停止的容器)否则无法删除该镜像会报错Failed to remove image (e4415b714b62): Error response from daemon: conflict: unable to delete e4415b714b62 (cannot be forced) - image has dependent child images类似这种。~$ docker rm container_id~$ docker rmi image_id你要选择删除镜像的ID有的时候尽管删除了全部容器镜像还是无法删除这时点击mac顶栏中的docker logo选择restart然后再试一次rmi应该就没问题了。docker命令图官网流传一次配置到处使用这个就相当于我们做系统首先我们下载一个正版系统然后在里面安装上我们需要的程序然后再把它刻录成iso文件放在u盘上面等电脑坏了再插上u盘做系统。如何到处使用呢“那我们把镜像放在U盘(docker库)上面”那就push到hub上吧因为之前已经在Docker.app中登陆了Docker账号所以现在直接~$ docker push sgy/ubuntu:vim就可以了下次到了机房在ubuntu系统中安装Docker配置好加速器启动Dockerdocker login登陆自己的账号然后直接~$ docker pull sgy/ubuntu:vim就可以把你push到hub的已经配置好的环境的镜像给扒下来。做完实验再push上去就ok了方便大家记忆我这里举个例子docker就相当于给电脑做系统下载系统-》装应用软件-》做成镜像文件-》上传到U盘-》需要的话随时下载重装系统 最后Docker目前来说是一个软件工程师必备的基础技术现在参加一些编程大赛都是要求参赛选手把自己的配置打包成一个docker文件与作品一起提交保证作品的可运行那麽在企业开发过程中我们也尝试用docker k8s进行企业项目的部署应用作为扩展内容的话还是希望大家了解完docker再了解下docker k8s,因为我所在的不论是电网易车等上市公司世界20强企业都是使用docker k8s进行部署。