docker top #查看进程数
docker attach 进入容器,exit会退出容器,ctrl+pq 不会导致容器退出,会把容器放在后台运行 (exit只是停止运行,可以重新起来,如果启容器时候,只是运行临时命令,容器不能起来)
docker exec 不会使容器退出,ps 不能显示上帝进程 1(只会退出当前bash)
docker images #查看当前镜像
docker ps #查看当前运行的容器
docker load < xx.tar #导入镜像
docker save image_name > xx.tar #导出镜像
docker run -it centos bash #it是可交互的tty(终端)
docker history image_name #可以docker层数
docker rmi #删除镜像 如果有以此来运行的需要先stop 再 rm掉,方可以删除镜像
docker tag #可以镜像定义标签
注意,如果docker run - it nginx 没有tty端,用 /bash/bin可以看到 是用ubantu做的
nginx容器的网页根目录是/usr/share/nginx/html
docker commit IDs name:label # IDs是容器的编号,后面是标签 这个可以提交新镜像,放入底层,但commit做出来的可能是黑箱镜像,层数很多,可以由此查看制作的思路,不建议用commit做
dockerfile 用作自动镜像编排 类似应答文件
Dockerfile语法格式:
– FROM:基础镜像
– MAINTAINER:镜像创建者信息(说明) ##说明活是谁干的
– EXPOSE:开放的端口 ##只是声明端口
– ENV:设置环境变量 ##查看 服务的配置文件 如http cat /usr/lib/systemd/system/httpd.service
– ADD:复制文件到镜像 ##add 必须是当前目录,相对路径,不可以写绝对路径,提交的是context的东西,会报错,制作Dockerfile时候,新建一个文件夹来写Dokcerfile。
– RUN:制作镜像时执行的命令,可以有多个 ###shell命令,多个RUN命令可以用 \ && (前面正确执行下面一条)来写,写成一条,避免层数过来,显得很臃肿
– WORKDIR:定义容器默认工作目录 ##相当于cd
– CMD:容器启动时执行的命令,仅可以有一条CMD ##用此镜像来启动容器时候,容器会首先执行此命令 启动命令在 cat /usr/lib/systemd/system/httpd.service 查看
本案例要求创建私有的镜像仓库:
- Docker主机:192.168.1.20
- 镜像仓库服务器:192.168.1.10
实现此案例需要按照如下步骤进行。
步骤一:自定义私有仓库
1)定义一个私有仓库
[root@docker1 oo]# vim /etc/docker/daemon.json //不写这个文件会报错
{
"insecure-registries" : ["192.168.1.10:5000"] //使用私有仓库运行容器
}
[root@docker1 oo]# systemctl restart docker
[root@docker1 oo]# docker run -d -p 5000:5000 registry //启动registry容器
273be3d1f3280b392cf382f4b74fea53aed58968122eff69fd016f638505ee0e
[root@docker1 oo]# curl 192.168.1.10:5000/v2/
{} //出现括号
[root@docker1 oo]# docker tag busybox:latest 192.168.1.10:5000/busybox:latest
//打标签
[root@docker1 oo]# docker push 192.168.1.10:5000/busybox:latest //上传
[root@docker1 oo]# docker tag myos:http 192.168.1.10:5000/myos:http
[root@docker1 oo]# docker push 192.168.1.10:5000/myos:http
在docker2上面启动
[root@docker2 ~]# scp 192.168.1.10:/etc/docker/daemon.json /etc/docker/
[root@docker2 ~]# systemctl restart docker
[root@docker2 ~]# docker images
[root@docker2 ~]# docker run -it 192.168.1.10:5000/myos:http /bin/bash
//直接启动
步骤二:查看私有仓库
1)查看里面有什么镜像
[root@docker1 oo]# curl http://192.168.1.10:5000/v2/_catalog
{"repositories":["busybox","myos"]}
2)查看里面的镜像标签
2)查看里面的镜像标签
[root@docker1 oo]# curl http://192.168.1.10:5000/v2/busybox/tags/list
{"name":"busybox","tags":["latest"]}
[root@docker1 oo]# curl http://192.168.1.10:5000/v2/myos/tags/list
{"name":"myos","tags":["http"]}
docker run -d -p 80:80 -v /mnt/qq:/var/www/html -it myos:http ##-v是容器卷的概念 把真机目录映射到
##注意,当一个容器,因为重启,或其他原因停止时,不要急着重新启动一个容器,可以试着先启动这个容器东西不会丢
##制作容器时候,可以以一个基础容器为模版,然后做成自己公司所需要的环境,再封装成一个容器,用Dockerfile做,尽量减少层数。
自定义网桥 略。。。。