#image的端口与本机端口映射方法
docker run -p 主机端口号:容器内端口号 username/repo:tag
#demo
docker run --name redis-test -p 6379:6379 -d --restart=always redis:latest redis-server --appendonly yes --requirepass "your passwd"
#这里运行的时候,两个端口之间使用的是vpnkit框架,docker为在windows和mac上面运行专门开发的docker网络通信框架
#查看那些容器正在运行
docker ps
#关闭某个容器
docker stop ContainerId
#启动某个容器
docker start Container
打开关闭的容器可以使用docker start。容器之间相互可以进行链接
docker run -it --rm --link my_zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper
启动一个 zookeeper 镜像, 并运行这个镜像内的 zkCli.sh 命令, 命令参数是 “-server zookeeper”
将我们先前启动的名为 my_zookeeper 的容器连接(link) 到我们新建的这个容器上, 并将其主机名命名为 zookeeper
使用docker-compose:
到你的任意docker工作目录下,创建docker-compose.yml。然后使用docker-compose up就可以进行运行了。
version: '2'
services:
zoo1:
image: zookeeper
restart: always
container_name: zoo1
ports:
- "20001:2181"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper
restart: always
container_name: zoo2
ports:
- "20002:2181"
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper
restart: always
container_name: zoo3
ports:
- "20003:2181"
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
这是抄的一个例子,在每次用compose打开的时候,前面可以加一个工程名。
COMPOSE_PROJECT_NAME=zk_test docker-compose up
使用 docker exec -it containerId /bin/bash 进入容器,可以把containerId换成你run docker的时候的名字。建议使用名字,这样方便一些。
DockerFile文件就是在容器外面操作docker内部的指令,预定义指令,就不用到容器内部去乱搞了,面得破坏了容器本身的环境。
使用 docker run 的时候,可以在后面加一个需要到容器内部执行的指令,这样容器就不会真正的打开,而是执行那个命令
当使用docker for windows时,如果需要宿主机和docker容器进行网络通信,通常有两种方法,第一种是docker 容器与宿主机端口进行映射,第二种方式是在宿主机加入一条路由信息,使得从宿主机到docker中的数据包,都由 10.0.75.1 进行转发即可。