docker命令整理

在Linux上启动Docker
启动
1
2
service docker start #旧语法
systemctl start docker.service #新语法
设置开启启动
1
2
chkconfig docker on #旧
systemctl enable docker.service #新
问题整理
1
2
$ docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
1
2
3
4
$ ps aux | grep docker
root 17210 0.0 2.4 499624 24928 ? Ssl Sep06 0:26 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --selinux-enabled --log-driver=journald --signature-verification=false
root 17214 0.0 0.6 262960 6948 ? Ssl Sep06 0:02 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runc --runtime-args --systemd-cgroup=true
zeno 21958 0.0 0.0 112648 964 pts/0 R+ 14:35 0:00 grep --color=auto docker

查看进程,其实docker已经运行了。其实是权限不够,需要在加上sudo.还有很多类似的命令,按照理解查看应该是不要root权限的,其实不然。docker info,docker ps,docker images都会没有权限

Docker镜像命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
docker rmi [镜像] #删除镜像
docker search #搜索镜像
docker images # 列出镜像
docker run 镜像名:标签 # 运行镜像 REPOSTITORY:TAG docker run --name web2 -d -p 81:80 nginx:v2
exit # 退出镜像
docker pull 镜像名 # 获取镜像
-i # 交互式操作
-t # 终端
-d # 让容器在后台运行。
-P [主机端口]:[容器端口] # 将容器内部使用的网络端口映射到我们使用的主机上。
-v [主机目录]:[容器目录]
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
-m:提交的描述信息
-a:指定镜像作者
e218edb10161:容器ID
2runoob/ubuntu:v2:指定要创建的目标镜像名
docker commit #慎用,黑箱操作 容易使镜像变得臃肿
docker diff #比较改动
docker build [选项] <上下文路径/URL/->
Docker容器命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker rm [name/id] #删除docker容器 ,容器必须是停止的否则报错
docker start [name/id] #重新启动docker
docker ps #查看正在运行的docker进程
docker ps -a #查看所有已创建的容器
docker rm $(docker ps -a -q) #删除所有的终止容器 Mac
docker port [name/id] #查看进程端口映射
docker stop [name/id] #停止进程
docker logs [name/id] #查看容器内的标准输出
-f #实时日志
docker top [name/id] #查看容器内的的进程
docker inspect [name/id] #来查看Docker的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
docker inspect container_name | grep Mounts -A 20 #查看容器挂载目录
docker attach [name/id] #进入正在运行的docker进程中 NOTE: 这个链接终止后,容器会退出后台运行
docker exec -it [name/id] /bin/sh # 进入正在运行的docker进程中 常加参数 -it
1
2
sudo docker run -ti --rm --entrypoint="/bin/bash" jenkins -c "whoami && id" #查看容器拥有者
docker run -ti --rm --entrypoint="/bin/bash" jenkins -c "ls -la /var/jenkins_home" #查看容器内/var/jenkins_home拥有者