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 <[email protected]>")
-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
热门工具 换一换