启动容器

启动容器之前需要先拉取镜像,然后通过 run 命令启动容器,同一个镜像可以启动多个容器,只要执行多次 run 命令就行了。我们这边启动 centos 的镜像。

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

参数说明:

-i: 交互式操作

-t: 终端

centos : centos 镜像

/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

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

上面的命令是前台运行的,运行后直接进入容器内,如果退出了容器就变为已退出状态,可以通过增加 -d 参数表示后台运行,这样不会在执行 run 命令后进入容器内操作。

对于停止的容器可以使用 start 命令启动。

PS D:\> docker start 5bdc26bb5efa

或者通过 restart 命令重启容器

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 命令可以看到容器的信息

Docker的容器使用与连接-Window的更多相关文章

  1. docker 查看容器的网络连接

    #! /bin/bash echo $1 PID=$(docker inspect -f '{{.State.Pid}}' $1) nsenter -t $PID -n netstat |grep E ...

  2. Docker容器的网络连接

    Docker容器的网络连接 Docker容器的网络连接 我们用ifconfig命令来查看网络设备 我们可以看到上面有个叫docker0的网络设备,docker守护进程就是通过docker0为docke ...

  3. Docker基本命令与使用 —— Docker容器的网络连接(四)

    一.Docker容器的网络基础 通过ifconfig查看docker0的网络设备,docker守护进程就是通过docker0为docker的容器提供网络连接的各种服务. docker0是Linux虚拟 ...

  4. 以Tomcat+Mysql为例,实现Docker多容器连接

    Docker提供了多个容器直接访问的方法,最简单的方式是直接使用端口映射-p参数指定映射的端口或者-P映射所有端口,多个容器直接通过网络端口进行访问. 但网络端口映射方式并不是Docker中连接多个容 ...

  5. Docker & ASP.NET Core (4):容器间的连接

    第一篇:把代码连接到容器 第二篇:定制Docker镜像 第三篇:发布镜像 Docker容器间的连接 Docker提供了两种方式可以用来做容器间的连接/通信: Legacy Linking:这种方式使用 ...

  6. Docker使用Link与newwork在容器之间建立连接

    一,使用 --link容器互联 docker 默认使允许container 互通的(通过-icc=false 关闭互通)同一个宿主机上的多个docker容器之间如果想进行通信,可以通过使用容器的ip地 ...

  7. docker之容器访问和网络连接(三)

    前言 当一台服务器上部署了多个应用容器,它们直接可能需要相互通信,比如web应用容器需要访问mysql数据库容器. 主机访问容器 通过映射端口的形式我们可以在外部访问容器内的服务 # 将主机的127. ...

  8. Docker 容器的网络连接 & 容器互联

    1. Docker 容器网络基础架构 Docker0 ifconfig查看到的 docker0 是linux的虚拟网桥(OSI数据链路层) docker0 地址划分: 172.17.42.1 255. ...

  9. Docker容器的网络连接:

    yw1989@ubuntu:~$ ifconfig docker0 Link encap:Ethernet HWaddr 02:42:97:61:42:9f inet addr:172.17.0.1 ...

随机推荐

  1. mac 快键键图标对应

    Mac 键盘快捷键 您可以按下某些组合键来实现通常需要鼠标.触控板或其他输入设备才能完成的操作.   要使用键盘快捷键,请按住一个或多个修饰键,然后按快捷键的最后一个键.例如,要使用 Command- ...

  2. 仅需几步,EasyRecovery就能恢复RAID数据

    RAID是什么?RAID是具有冗余能力的磁盘阵列,简单的来说就是把相同的数据存储在多个硬盘的不同的地方. 在了解了RAID之后就会知道,RAID中的数据也是有可能丢失的,虽然RAID数据丢失会引发一系 ...

  3. FL Studio中有关Sub Bass的一些制作与混音技巧

    1.Sub Bass是什么? Sub Bass是一种低沉的低音,其频率大约低于60赫兹,并向下延伸,包括人类所能听到的最低频率,约为20赫兹.在这个范围内,人类的听觉不是很灵敏,所以在这个范围内的声音 ...

  4. HTML常用标签总结 [建议收藏]

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star 1. 标题标签 <h1> </h1> ...

  5. leetcode 108 和leetcode 109 II

    //感想:没啥上篇写完了 //思路:对于这道题109来说,就是数组变成了链表,其他没有变,我觉得非常不解,因为我想到的依旧是找中点,用快慢指针来找, 找到以后将链表分成两半,继续递归的去找,我就觉得这 ...

  6. yii2-imagine的使用

    <?php /** * 图片常用处理 * * 需要 yii/yii2-imagine 的支持 * php composer.phar require --prefer-dist yiisoft/ ...

  7. Windows下创建指定大小的文件

    前言 因为需要测试存储容量,所以需要能生成指定大小的文件. 执行 #语法:fsutil file createnew 路径和文件名 文件大小 fsutil file createnew D:\test ...

  8. 蓝桥杯-RP大冒险-未解决

    RP大冒险 问题描述 请尽情使用各种各样的函数来测试你的RP吧~~~ 输入格式 一个数N表示测点编号. 输出格式 一个0~9的数. 样例输入 0 样例输出 X {当且仅当输出仅有一个数X且X为0~9的 ...

  9. CodeBlocks相关配置

    因为我平时CodeBlocks的使用频率不高,但考试时需要用到,担心忘记相关配置在哪里调整,在此记录下. 打开调试模式 首先一定是创建项目. 项目创建完成后,配置调试器\(GDB\)路径 打开调试窗口 ...

  10. Forethought Future Cup - Final Round (Onsite Finalists Only) C. Thanos Nim 题解(博弈+思维)

    题目链接 题目大意 给你n堆石子(n为偶数),两个人玩游戏,每次选取n/2堆不为0的石子,然后从这n/2堆石子中丢掉一些石子(每一堆丢弃的石子数量可以不一样,但不能为0),若这次操作中没有n/2堆不为 ...