1安装和使用

docker本质上是一个虚拟机?(凑合理解吧,类似一种JVM的东西,虽然官方说不是虚拟机,但也没说是其他啥)一般用的linux内核的系统做基础系统,当然你乐意也能在上面装个windows(还敢说不是虚拟机?)
注:跑windows系统的要把docker的container改成windows的,默认是linux的

官网下docker
www.docker.com

然后把镜像改到阿里
https://dev.aliyun.com

镜像地址:
https://ws68c0jo.mirror.aliyuncs.com

修改镜像教程:
https://cr.console.aliyun.com/?spm=5176.1971733.0.2.yCXnBq#/accelerator

弄完后就是
Docker pull nginx   先装上nginx的镜像

Docker run -p 81:80 -d nginx   运行nginx 本机端口81,映射docker端口80   这里的-d是放到线程里跑,这样本机的命令行不会被占用。装B比较有用,而且这是docker的意义所在,不然你一台机跑几十个服务,满窗都是命令行可不大专业。
Docker images  查看所有镜像
Docker ps 查看运行中的镜像(这命令会看到镜像ID号,下面命令这一串就是ID号)如:
 docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
5d9387469d5c        nginx               "/bin/bash"              2 hours ago         Up 2 hours          80/tcp               compassionate_boyd
20ea42591be0        nginx               "nginx -g 'daemon of…"   2 hours ago         Up 2 hours          0.0.0.0:81->80/tcp   vibrant_fermat




 docker cp .\index.html 20ea42591be0://usr/share/nginx/html
 docker cp .\images 20ea42591be0://usr/share/nginx/html
把我做的一些文件copy到nginx的网页根目录下,这样就能看了。
注:
如果新弄的镜像不大熟悉或者需要做些其他设置,是可以直接进到镜像系统里操作的,如:
 docker run -t -i nginx /bin/bash
这是指nginx镜像执行 /bin/bash命令,  bash是linux的命令行,这里也可以直接写bash,不需要带路径(这个命令需要系统直接能用的)这个时候就进到镜像系统里了,可以做其他操作。当然,也只能操作镜像里的东西。
Docker run -t -i 镜像名 powershell 当然这里的-t -i 可以统一写成-ti 或 -it


当然不想进到镜像里,只想在外面用一下命令也是可以的
Docker run -d nginx ipconfig    这里的-d 是放到背后线程跑
Docker logs ContainerID   看镜像里的命令情况,就现在的案例,显示的是ip。ps.这个ContainerID不一定要打全,弄个前三位就行,反正只要你库里不重名就可以。 






> docker commit -m 'nginx_rank' 20ea42591be0 nginx_rank
上面这句是把镜像保存,注意,如果不保存,下次打开nginx镜像仍然是空的。保存后会生成新的镜像(就像git的一个新版本一样的意思),然后成功的话会给出下面一串字符,这个就是新镜像的ID号全称。
sha256:2826bacfa8ce935819ba8d982f0010d795849edb32718bc4e5bbd59cffc20db8
这时再用docker images查看,就会发现多了一个nginx_rank
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]Create a new image from a container's changes
-a, --author=""     Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-m, --message=""    Commit message
-p, --pause=true    Pause container during commit
这里注意一下,后面:[TAG]记得要用上,不然在tag那是空的,而且操作的时候非常不方便,一定要有tag!

好了,到现在为止学会了启动,接下来就是停下来。其实就是docker stop ContainerID  
 docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
5d9387469d5c        nginx               "/bin/bash"              2 hours ago         Up 2 hours          80/tcp               compassionate_boyd
20ea42591be0        nginx               "nginx -g 'daemon of…"   2 hours ago         Up 2 hours          0.0.0.0:81->80/tcp   vibrant_fermat
> docker stop 5d9387469d5c
5d9387469d5c
> docker stop 20ea42591be0
20ea42591be0


这样就全停下来了
Docker ps 
已经没这两个进程了(同理,可以用restart 或者 start)


特殊情况处理:
有些进程死活关不掉的,可以用docker kill ContainerID  强行关
注意:有时为了container看着干净,需要用docker rm ContainerID  清除掉运行清单上的image,用
Docker rm ContainerID    当然,这个命令只能对已经stop的镜像有效。


 docker rm $(docker ps -aq)  这是全部删干净, -q是只列出Container ID, 这里$后面是docker命令,相当于是多重命令一起用,这个非常好使,以后其他命令也可以结合这个用的。


当然,在docker镜像太多时,可以删掉几个(在停掉镜像容器后才可以删除)
Docker rmi 镜像名称:镜像tag


如:
TORY                                                                                TAG                                   IMAGE ID            CREATED             SIZE
paddlepaddle/paddle                                                      latest                           3e124db4c351        12 days ago         1.44GB
jupyterhub/singleuser                                                     latest                            5e83410f6568        2 weeks ago         697MB
nginx_rank                                                                       latest                            2826bacfa8ce        2 weeks ago         109MB
registry.cn-shenzhen.aliyuncs.com/cattei/cattei_local   20180413                      2826bacfa8ce        2 weeks ago         109MB
registry.cn-shenzhen.aliyuncs.com/cattei/cattei_local   nginx_rank_20180413   2826bacfa8ce        2 weeks ago         109MB


docker rmi registry.cn-shenzhen.aliyuncs.com/cattei/cattei_local:20180413
执行完会显示以下的信息,这是多个版本,就是同个镜像多个版本时会显示的,如果只有一个版本,那就显示delete什么的。不要在意这些细节。
Untagged: registry.cn-shenzhen.aliyuncs.com/cattei/cattei_local:20180413


执行完后对应的镜像就删除了。


当然,有时候系统会抽搐,说一堆理由不让删除,那么请加上-f  进行强制删除。世界就清净了。
docker rmi -f registry.cn-shenzhen.aliyuncs.com/cattei/cattei_local:20180413
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐