一,镜像管理指令
案例:
docker image save nginx:1.11 > nginx1.11.tar #导出镜像为tar包 docker load < nginx1.11.tar #导入镜像 docker ps #查看运行中容器 docker run -itd busybox #运行镜像,就变成一个运行中的容器 docker export 6hidudiiwdudw > bug.tar #导出容器文件系统到tar归档文件 docker image import bug.tar name:tag #导入容器文件系统归档tar文件创建镜像
二,创建容器常用指令
案例:
docker [container] run -itd --name bs busybox #用busybox这个镜像创建一个交互式+伪终端+后台运行名字叫做bs的容器; 【】里面这个指令可以省略 docker ps #可以查看到映射关系 ,运行中的 加-a 查看所有
docker [container] attach bs #进入容器,类似一个linux系统,正常退出终端后这个容器也同时退出了,如果不想这样就按Ctrl+p+q退出 docker start bs #启动停止了的容器
docker container run -itd -e a=113 --name bs1 bug #用bug这个镜像创建一个容器,同时传递一个变量进去 docker exec -it bs1 sh #进入容器的另一种方法,这种方法可以直接退出,不会关闭容器 /#ls bin dev etc .... /#echo $a 123 #变量已经传递进来了
docker [container] run -itd -p 8080:80 --name nginx01 nginx #启动容器,并把容器的80端口映射给主机的8080端口 docker ps #可以查看到映射关系 ,运行中的 加-a 查看所有 docker logs nginx01 #查看容器内部日志 ls /var/lib/docker/containers/ehduihdbdw(容器ID命名目录)/ #主机上容器日志地址,里面会有个日志,内存大的时候要主要清理
docker [container] run -itd -p 8080:80 --name nginx02 --restart=always nginx #这个断了后可以自动重启容器
-p重要扩展
-p(小写)可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。支持的格式有 hostPort:containerPort、ip:hostPort:containerPort、 ip::containerPort。
#将本地的 6000 端口映射到容器的 5000 端口;hostPort:containerPort(映射所有接口地址) $ sudo docker run -itd -p 6000:5000 --name nginx01 nginx
#指定映射使用一个特定地址
比如 localhost 地址 127.0.0.1;ip:hostPort:containerPort (映射指定地址的指定端口) $ sudo docker run -itd -p 127.0.0.1:5000:5000 --name nginx01 nginx #绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口;ip::containerPort (映射指定地址的任意端口) $ sudo docker run -itd -p 127.0.0.1::5000 --name nginx01 nginx #还可以使用 udp 标记来指定 udp 端口 $ sudo docker run -itd -p 127.0.0.1:5000:5000/udp --name nginx01 nginx #使用 docker port 来查看当前映射的端口配置,也可以查看到绑定的地址 $ docker port nostalgic_morse 5000 127.0.0.1:49155. #-p 标记可以多次使用来绑定多个端口 $ sudo docker run -itd -p 5000:5000 -p 3000:80 --name nginx01 nginx
资源限制
$ docker [container] run -itd --cpus 1 --name nginx04 nginx #指定容器可以使用的 CPU 个数就可以了,并且还可以指定如 1.5 之类的小数 $ docker [container] run -itd --memory 512m --name nginx04 nginx #指定容器内存,并且swap默认是memory的2倍 $ docker [container] stats nginx04 #查看容器的资源利用率
DOCKER 给运行中的容器添加映射端口
方法1 #获取容器IP docker inspect container_name | grep IPAddress #iptable转发端口 iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000 方法2 #提交一个运行中的容器为镜像 docker commit containerid foo/live #运行镜像并添加端口 docker run -d -p 8000:80 foo/live /bin/bash
三,管理容器常用指令
$ docker [container] ls $ docker [container] inspect 容器ID #查看容器的详细信息 $ docker [container] attach nginx03 #用这种方式进入容器会卡死, $ docker [container] top nginx03 #查看这个容器里面运行的进程,发现前端有个进程占用阻塞了 $ docker [container] exec -it nginx03 bash #可以用伪终端的方式进入容器 $ docker [container] commit bs1 busybox:v2 #bs1是有个运行中的容器,这个命令会提交一个叫做busbox,tag为v2的镜像
$ docker [container] exec bs1 ls /root #bs1是个运行中的容器,查看这个容器root目录详情 $ docker [container] cp index.html bs1:/root #拷贝文件到bs1容器中, $ docker cp 96f7f14e99ab:/www /tmp/ #将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中
$ docker port nginx01 #查看端口映射关系 $ docker stats nginx01 #查看容器实时资源的利用率情况 $ docker update --help #实时修改容器的资源限制,具体命令看help
$docker ps -q -a #列出所有容器ID $ docker rm -f $(docker ps -q -a) #技巧,删除所有容器
四,管理应用程序数据
volume
$ docker volume ls #查看数据卷 $ docker volume create nginx-vol #创建数据卷 $ docker volume inspect nginx-vol #查看数据卷详情 #用卷创建一个容器 $docker run -itd --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx # --mount src= 指定数据卷,dst 挂载的容器目录,如果没指定卷会自动创建 $docker run -itd --name=nginx-test -v nginx-vol:/usr/share/nginx/html nginx # 这种写法更简洁,推荐 $docker exec -it nginx-test bash ... cd /usr/share/nginx/html #容器的目录 ... ls 50x.html index.html 退出 cd /var/lib/docker/volumes/nginx-vol/_data/ #进入宿主机的数据券目录中 ... ls 50x.html index.html #在这里是同步的,2边增删改查都是一样的,类似软链接 #清理 docker [container] stop nginx-test docker [container] rm nginx-test docker volume rm nginx-vol
bind
#用bind卷创建一个容器 $docker run -itd --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html nginx # 绑定卷,如果宿主机的/app/wwwroot不存在就会报错,挂载的时候如果/usr/share/nginx/html 里面有文件,则现有内容会隐藏 $docker run -itd --name=nginx-test -v /app/wwwroot:/usr/share/nginx/html nginx # 这种写法更简洁,推荐 $docker inspect nginx-test #验证绑定 #清理 $docker container stop nginx-test $docker container rm nginx-test
作者:陈耿聪 —— 夕狱
出处:https://www.cnblogs.com/CGCong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。