Docker的容器使用与链接-Window

启动容器

启动容器以前须要先拉取镜像,而后经过 run 命令启动容器,同一个镜像能够启动多个容器,只要执行屡次 run 命令就好了。咱们这边启动 centos 的镜像。redis

PS D:\> docker run -it centos /bin/bash
[root@6c7369854385 /]#

参数说明:docker

-i: 交互式操做centos

-t: 终端缓存

centos : centos 镜像bash

/bin/bash:放在镜像名后的是命令,这里咱们但愿有个交互式 Shell,所以用的是 /bin/bash。网络

要退出终端,直接输入 exit。run 命令至关于执行了 create 和 start 命令。tcp

上面的命令是前台运行的,运行后直接进入容器内,若是退出了容器就变为已退出状态,能够经过增长 -d 参数表示后台运行,这样不会在执行 run 命令后进入容器内操做。测试

对于中止的容器可使用 start 命令启动。spa

PS D:\> docker start 5bdc26bb5efa

或者经过 restart 命令重启容器3d

PS D:\> docker restart 5bdc26bb5efa

查看容器

经过 ps 命令能够查看容器列表

PS D:\> docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
6c7369854385        centos              "/bin/bash"         3 minutes ago       Exited (0) 53 seconds ago                       angry_lichterman

-a 表示显示全部的容器,无论任何状态。若是不加 -a 默认显示运行中的。

容器总过有7种状态 created(已建立)、restarting(重启中)、running(运行中)、removing(删除中)、paused(已暂停)、exited(已中止 )和dead(已死亡)。

中止容器

中止容器使用 stop 命令,加上容器 id

PS D:\> docker stop 5bdc26bb5efa

删除容器

删除容器用 rm 命令

PS D:\> docker rm 5bdc26bb5efa

或者经过如下命令删除全部的已中止的容器

PS D:\> docker container prune

进入容器

经过 run 命令咱们建立了容器,咱们能够经过 exec 或 attach 命令进入容器,在容器内部指定操做。二者有个区别,就是经过 attach 命令进入容器后经过 exit 退出,容器将会变为 exited 状态,exec 不会。

PS D:\> docker exec -it 5bdc26bb5efa /bin/bash
PS D:\> docker attach 5bdc26bb5efa

经过上面用法也能够看出,attach 不会在容器中建立进程执行额外的命令,只是附着到容器上。exec会在运行的容器上建立进程执行新的命令。

容器的导出和导入

若是要导出本地某个容器,可使用 export 命令都出容器快照

PS D:\> docker export 5bdc26bb5efa > exportCentos.tar

默认导出到当前位置,上述命令表示导出到 D 盘。

 

 导入快照能够用 import 命令从容器快照文件中再导入为镜像,如下实例将快照文件exportCentos.tar 导入到镜像 xu/centos:v1

PS D:\> cat exportCentos.tar | docker import - xu/centos:v1

导入容器快照能够是一个路径,也能够是一个 URL

容器链接-端口映射

前面咱们用 run 命令启动了容器,好比咱们启动了一个 redis 的容器,那么咱们须要访问这个容器来存储咱们的缓存,能够经过 -P 或 -p 参数来指定端口映射。

-P :是容器内部端口随机映射到主机的高端口。

-p : 是容器内部端口绑定到指定的主机端口和主机的网络地址。

使用 -P :

PS D:\> docker run -d -P redis

查看容器能够看到容器的6379端口绑定了主机的32770端口

PS D:\> docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                            PORTS                     NAMES
01b6077295ac        redis               "docker-entrypoint.s…"   3 seconds ago        Up 3 seconds                      0.0.0.0:32770->6379/tcp   modest_golick

使用 -p,指定了主机端口为6666,ip为127.0.0.1,容器端口为 tcp ,后面的 tcp 表示绑定 tcp 端口,默认就是 tcp ,还能够设置为 udp :

PS D:\> docker run -d -p 127.0.0.1:6666:6379/tcp redis

经过 port 命令能够查看端口绑定状况

PS D:\> docker port 8b7db8c10c85
6379/tcp -> 127.0.0.1:6666

 咱们能够用 Redis Desktop Manager 测试链接下,能够看到以下链接成功啦。

容器链接-局域网链接

除了端口映射,咱们还能够创建一个网络,将容器加入到这个网络中,这样容器之间能够在这个网络中相互访问,咱们先创建这个网络

PS D:\> docker network create -d bridge test-net
5cb11e23cb3ad1bfea61452f1448dd3a67b34680dc1c5655203211fbe4c777ce

参数说明:

-d:参数指定 Docker 网络类型,有 bridge、overlay。其中 overlay 网络类型用于 Swarm mode,此处忽略。

而后经过 network 命令查看网络

PS D:\> docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
c594c3f53367        bridge              bridge              local
a98ee54f88d4        host                host                local
3d3d4b7c007a        none                null                local
5cb11e23cb3a        test-net            bridge              local

 咱们能够经过以下语句删除网络

PS D:\> docker network rm test-net

咱们在运行容器的时候能够链接到指定的网络,创建两个 redis 容器

PS D:\> docker run -itd --name redis_1 --network test-net redis
PS D:\> docker run -itd --name redis_2 --network test-net redis

咱们进入 redis_1 容器添加一个键值对,而后经过 redis_2 容器链接 redis_1 容器上的 redis 获取值,以下:

PS D:\> docker exec -it redis_1 /bin/bash
root@6bd2da3b7854:/data# redis-cli -h redis_1
redis_1:6379> set mykey myvalue
OK
redis_1:6379> get mykey
"myvalue"
PS D:\> docker exec -it redis_2 /bin/bash
root@6bd2da3b7854:/data# redis-cli -h redis_1
redis_1:6379> get mykey

能够看到 redis_1 和 redis_2 是相互连通的

容器信息

经过 inspect 命令能够看到容器的信息

相关文章
相关标签/搜索