# 添加docker权限给当前用户(可以使docker命令免sudo)
1. 添加 docker group
1 | sunchang@sunchang-PC:~$ sudo groupadd docker |
2. 将用户添加到docker组
1 | sunchang@sunchang-PC:~$ sudo gpasswd -a ${USER} docker |
3. 重启docker服务
1 | sunchang@sunchang-PC:~$ sudo service docker restart |
4. 查看用户组及成员
1 | sunchang@sunchang-PC:~$ cat /etc/group | grep docker |
运行一个HelloWorld
1 | docker run ubuntu echo "Hello World" |
解释: 使用ubuntu 镜像创建一个容器,并在这个容器里运行命令: echo "Hello World"
让运行的容器实现对话能力
1 | docker run -i -t ubuntu /bin/bash |
- -t: 在新容器内指定一个伪终端或终端。
- -i: 允许你对容器内的标准输入 (STDIN) 进行交互。
可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。启动容器(后台模式)
使用以下命令创建一个以进程方式运行的容器1
2
3docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
这个时候,只是输出了一个id,这个是容器的id。
如何将本地目录映射到宿主机里?
docker run 参数后面添加 -v /path/to/local:/path/to/target,注意的是windows系统需要按如下格式写:1
docker run -p 80:80 -v /D/docker/web:/usr/share/nginx/html/web -d nginx
-p 映射端口号,如果要映射多个端口号,可以写多个 -p。如:1
docker run -p 80:80 -p:443:443 -d nginx
-d 在后台运行
vim编辑文件
不是所有的容器都自带vim,像nginx的容器默认是没有vim的。这个时候需要手动安装:1
2apt-get update
apt-get install vim
这样就可以啦~
查看正在运行的容器
1 | docker ps |
输出详情介绍:
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:
- created(已创建)
- restarting(重启中)
- running 或 Up(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
查看容器日志
1 | docker logs 2b1b7a428627 |
停止容器
1 | docker stop amazing_cori |
重启容器
1 | docker stop amazing_cori |
进入容器
1 | docker attach 1e560fca3906 |
1 | Microsoft Windows [版本 10.0.19042.804] |
注意: 如果从这个容器退出,会导致这个容器停止(Ctl + D)
exec 命令
使用容器执行命令1
docker exec -it 243c32535da7 bash
注意: 如果从这个容器退出,容器不会停止。所以进入容器的时候要使用exec
而不是 attach
。
删除容器
1 | docker rm -f 1e560fca3906 |
-f: --force
的缩写,强制删除。
清理掉所有处于终止状态的容器
1 | docker container prune |
1 | C:\Users\hz21087108>docker container prune |
查看web容器信息
1 | docker ps |
-a
是显示全部容器,包括不在运行中的
查看指定容器的端口映射
1 | docker port bf08b7f2cd89 |
查看web应用程序的日志
docker logs [容器ID或者名字]
可以查看容器的标准输出, -f
参数可以让容器log标准输出。