run 启动
-i 让终端保持打开状态
-t 启动一个tty
-name 起一个容器名
-h 指定主机名
-v 数据卷
查正在运行的容器 docker ps
查所有容器 docker ps -a
查上一次运行的容器 docker ps -l
删除一个或多个容器 docker rm ContainerName 删除一个或多个镜像 docker rmi imagesname
查已经下载的镜像 docker images
启动一个镜像 docker run -it docker.io/centos 即 docker run -it imagesname:TAG 默认TAG是latest 制定一个名字docker run -it --name zzx centos 一定要加--name不然认不出
-d后台启动一个容器 docker run -d -it --name zzx centos
停止正在运行的容器docker stop 600db9c1e60b(ContainerID下同)
启动一个已经停止的容器 docker start bc3a516241b2(start
不能够再指定容器启动时运行的指令,如果没有前台进程start可能失败 一启动就退出)
进入一个在后台运行的容器 docker attach bc3a516241b2 (docker exec -it ContainerName /bin/sh) 括号里的用exit也不会真正退出容器继续后台运行, 用attach进入的用exit会退出容器必须用ctrl P Q退出才能继续后台运行
启动一个容器就会在/var/run/docker/libcontainerd下生成相应的文件 pid和sock文件也在这个目录
看一个容器的ps docker top e06fbdd8e829
新建的容器先 yum -y install epel-release tar
查看容器ip docker inspect --format='{{.NetworkSettings.IPAddress}}' my_ng (或者docker inspect 'name'|grep -w IPAddress) 查端口映射 docker port my_ng
已有的容器commit成images (只能提交正在运行的container,即通过docker ps
可以看见的容器) docker commit -m "installed nginx" -a "zzx" bc3a516241b2 nginx/centos
获取容器PID
[root@nmserver-7 ~]# docker inspect --format "{{.State.Pid}}" mydk
3864
[root@nmserver-7 ~]# nsenter --target 3864 --mount --uts --ipc --net --pid #根据pid进入容器 可根据这两行写一个脚本进入容器
-v
映射目录到属主机中
[root@nmserver-7 _data]# docker run --name volumetest -h zzxv -it -v /zzxtest zzxng /bin/bash #启动一个容器并映射 /zzxtest 到属主机中
[root@nmserver-7 _data]# docker inspect volumetest | grep -A 1 Source # 查看映射的map
"Source": "/var/lib/docker/volumes/49925f2e0adf592f4336c85e737a17265c2ad11a3e333c50ea81fef1aa764543/_data",
"Destination": "/zzxtest",
docker inspect {{.Volumes}} volumetest 这句报错 没法用
指定目录映射
[root@nmserver-7 zzx]# docker run --name ysdir -it -p 1234:80 -v /root/zzx:/ngdir zzxng:001 /bin/bash #映射属主机 /root/zzx到/ngdir
[root@nmserver-7 zzx]# docker run --name urCONTAINER -it --volumes-from CONTAINERname imageName #创建一个容器cpcp 共享ysdir的映射目录
DOCKER 给运行中的容器添加映射端口
方法1
1、获得容器IP
将
container_name
换成实际环境中的容器名
docker inspect `container_name` | grep IPAddress
- 1
2、 iptable转发端口
将容器的8000端口映射到docker主机的8001端口
iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
- 1
- 2
方法2
1.提交一个运行中的容器为镜像
docker commit containerid foo/live
- 1
2.运行镜像并添加端口
docker run -d -p 8000:80 foo/live /bin/bash