docker_cmd

docker 基本命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -a :提交的镜像作者;
# -c :使用Dockerfile指令来创建镜像;
# -m :提交时的说明文字;
# -p :在commit时,将容器暂停。
docker commit -a "author" -m "commit msg" {commitId} {name}:{tag}
#docker commit -a "author" -m "commit msg" {commitId} author/myubuntu:v1

docker login

docker push author/myubuntu:v1

docker tag {imageId} {name}:{tag}

docker run --name nginx-text -p 9090:90 -d nginx

create network

1
docker network create --subnet 172.72.72.0/24 redisnet

设置docker开机启动

1
systemctl enable docker

容器使用

启动容器

以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

1
$ docker run -it ubuntu /bin/bash

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • ubuntu: ubuntu 镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
    要退出终端,直接输入 exit:
    1
    root@ed09e4490c57:/# exit

启动已停止运行的容器

查看所有的容器命令如下:

1
2
$ docker ps -a

使用 docker start 启动一个已停止的容器:

1
$ docker start b750bbbcfd88

后台运行

在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

1
$ docker run -itd --name ubuntu-test ubuntu /bin/bash

注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)。

停止一个容器

停止容器的命令如下:

1
$ docker stop <容器 ID>

停止的容器可以通过 docker restart 重启:
$ docker restart <容器 ID>

进入容器

  • exec 命令
    1
    docker exec -it 243c32535da7 /bin/bash  # container id or name
    ###导出和导入容器
  • 导出容器

如果要导出本地某个容器,可以使用 docker export 命令。

1
$ docker export 1e560fca3906 > ubuntu.tar
  • 导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

1
$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

此外,也可以通过指定 URL 或者某个目录来导入,例如:

1
$ docker import http://example.com/exampleimage.tgz example/imagerepo

删除容器

删除容器使用 docker rm 命令:

1
2
3
4
$ docker rm -f 1e560fca3906

# delete all containers
docker rm -vf $(docker ps -aq)

删除 image

1
2
3
4
docker rmi {imagename or imageId}

# delete all the images
docker rmi -f $(docker images -aq)

docker Dockerfile build and run

1
2
docker build --tag=spring-metrics .
docker run -p8887:8888 message-server:latest

常见问题

ps命令在docker容器不存在

1
apt-get update && apt-get install procps -y

容器 下查看redis的安装目录的方法是什么

1
ps -ef|grep redis

得到了进程号 xxxx,
然后 ls -l /proc/xxxx/cwd

Redis集群Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式

1
2
redis-cli --cluster check  192.168.171.134:6379
redis-cli --cluster fix 192.168.171.134:6379
1
redis-cli -c -h 192.168.171.134

ref

评论