Docker学习笔记

Published: by Creative Commons Licence

  • Tags:

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

参考资料