# 添加docker权限给当前用户(可以使docker命令免sudo)

1. 添加 docker group

1
2
sunchang@sunchang-PC:~$ sudo groupadd docker
groupadd:“docker”组已存在

2. 将用户添加到docker组

1
2
sunchang@sunchang-PC:~$ sudo gpasswd -a ${USER} docker
正在将用户“sunchang”加入到“docker”组中

3. 重启docker服务

1
sunchang@sunchang-PC:~$ sudo service docker restart

4. 查看用户组及成员

1
2
sunchang@sunchang-PC:~$ cat /etc/group | grep docker
docker:x:997:sunchang

运行一个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
    3
    docker 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
2
apt-get update
apt-get install vim

这样就可以啦~

查看正在运行的容器

1
2
3
4
docker ps

CONTAINER ID IMAGE COMMAND ...
5917eac21c36 ubuntu:15.10 "/bin/sh -c 'while t…" ...

输出详情介绍:

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

  • created(已创建)
  • restarting(重启中)
  • running 或 Up(运行中)
  • removing(迁移中)
  • paused(暂停)
  • exited(停止)
  • dead(死亡)

PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配的容器名称。

查看容器日志

1
docker logs 2b1b7a428627

image.png

停止容器

1
docker stop amazing_cori

重启容器

1
docker stop amazing_cori

进入容器

1
docker attach 1e560fca3906
1
2
3
4
5
6
7
8
9
10
11
Microsoft Windows [版本 10.0.19042.804]
(c) 2020 Microsoft Corporation. 保留所有权利。

C:\Users\hz21087108>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b07524256a1 ubuntu "bash" 22 hours ago Up 22 hours vigorous_banach

C:\Users\hz21087108>docker attach 8b07524256a1
root@8b07524256a1:/# ls
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
root@8b07524256a1:/#

注意: 如果从这个容器退出,会导致这个容器停止(Ctl + D)

exec 命令

使用容器执行命令

1
docker exec -it 243c32535da7 bash

注意: 如果从这个容器退出,容器不会停止。所以进入容器的时候要使用exec 而不是 attach

删除容器

1
docker rm -f 1e560fca3906

-f: --force的缩写,强制删除。

清理掉所有处于终止状态的容器

1
docker container prune
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
C:\Users\hz21087108>docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
8b07524256a17d161e34d3c4577c3d59513e1d45028ac942e763170140b72867
a61ede1df2433c977135f84fb5f5616040c8be1d1666958f8fe61164e38764ab
c866412441ac925395e7a874d28b0e7ff1578b13ca905b657b7dc2f71b120330
cc2bf6cb885b24df037e3022a8e27bd7682cdcd38a5b8d62f5b0b7bc06064a64
c0e18126807e507b9a46107cdebbcf851795c2a2a32016d1a37bbfac0f31ee8b
c75514cf5a47ac346de4e912151b761daf50f5494c5412d63a748c94cbf47128
f34c9768ab1721aa297f3917280b6b9646cfe1655145c6a54bcf6684ae80ef0d

Total reclaimed space: 2.906kB

C:\Users\hz21087108>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

C:\Users\hz21087108>

查看web容器信息

1
2
docker ps
docker ps -a

-a 是显示全部容器,包括不在运行中的

查看指定容器的端口映射

1
2
docker port bf08b7f2cd89
5000/tcp -> 0.0.0.0:5000

查看web应用程序的日志

docker logs [容器ID或者名字] 可以查看容器的标准输出, -f 参数可以让容器log标准输出。