Docker学习笔记
docker
运行镜像
$ docker run <image>
你也可以通过交互模式运行。
$ docker run -it <image>
也可以以后台进程的方式运行。
$ docker run -d <image>
启动容器后执行特定的命令。
$ docker run <image> [command]
如果想启动一个空容器,但是什么都不做,就保持存活。
docker run -d <image> tail -f /dev/null
在某个启动的容器中执行一些命令。
$ docker exec <container> <command>
构建自定义镜像
$ docker run centos -it
之后做一些修改。通过exit
退出shell后,查看关闭的容器:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cdc0a62b586f centos "/bin/bash" 6 minutes ago Exited (0) 48 seconds ago suspicious_allen
根据修改的container创建新的镜像:
$ docker commit -m "add customized tool" cdc0a62b586f taodaling/centos-base
暴露端口
有时候容器会提供一些服务,我们需要能暴露端口给外部。
$ docker run -d -p 79:80 nginx:alpine
上面命令将容器的80端口绑定到本地79端口上,这样你就可以通过localhost:79
访问容器的80端口。
容器互联
要让容器相互调用,需要先创建一个虚拟网络。
$ docker network create -d bridge my-net
之后运行多个带名字的容器:
$ docker run -it --rm --name busybox1 --network my-net busybox sh
$ docker run -it --rm --name busybox2 --network my-net busybox sh
这样我们就能在busybox1中通过名字访问busybox2了,反之亦然。
卷挂载
要在宿主机和容器之间共享数据,有两种方案。最简单的是直接挂载本地路径:
$ docker run --mount type=bind,source=<LOCAL_DIR>,target=<TARGET_DIR>
还有一种方式是声明一个卷,并手动挂载卷。docker会负责管理这些卷。
#创建卷
$ docker volumn create <VOLUMN NAME>
#挂载卷
$ docker run --mount type=volumn,source=<VOLUMN NAME>,target=<TARGET_DIR>
#删除卷
$ docker volumn rm <VOLUMN NAME>
#清除所有不被使用的卷
$ docker volume prune
swarm
docker swarm是docker的集群管理工具。
要使用docker swarm,需要先做初始化。
$ docker swarm init
Swarm initialized: current node (okc8k4x9jfsdxg0vv0ofhz6e2) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-57f6tvjat3zhclbfndtsrb3jsdbpl2fhzauk4jarm37r0xql2t-2ulnvwgdoiw0uh4ba3cwbjoes 192.168.65.3:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
我们可以将别的docker节点通过上面输出命令的加入到集群中
$ docker swarm join --token SWMTKN-1-57f6tvjat3zhclbfndtsrb3jsdbpl2fhzauk4jarm37r0xql2t-2ulnvwgdoiw0uh4ba3cwbjoes 192.168.65.3:2377