一些笔记
安装
yum install -y docker-io
卸载
1
$ yum list installed | grep docker
docker-engine.x86_64 1.7.1-1.el7 @/docker-engine-1.7.1-1.el7.x86_64.rpm
2
yum -y remove docker-engine.x86_64
查看docker程序是否正常工作
docker info
启动关闭docker
/etc/init.d/docker start|stop
帮助
man docker
man docker-run
docker help run
容器
docker run命令
创建容器
docker run -i -t centos /bin/bash
当前系统中容器的列表
docker ps -a
给容器命名
docker run --name bob_the_container -i -t ubuntu
启动已经停止运行的容器
docker start bob_the_container
创建一个容器, 但是并不运行它。
docker create
如果退出容器的shell, 容器会再次停止运行。
docker attach bob_the_container
创建长期运行的容器
docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
docker run命令使用了-d参数, 因此Docker会将容器放
到后台运行。
删除容器
docker rm 容器
删除所有容器
sudo docker rm `sudo docker ps -a -q
docker run -i -t -d centos /bin/bash 启动一个守护式容器,不进入shell,attach后退出容器就会停止
docker run -i -t centos /bin/bash 启动一个交互式容器,进入shell,attach后退出容器就会停止
获取守护式容器的日志
docker logs 11397afe83a8
docker logs -f 11397afe83a8
查看守护式容器的进程
docker top 11397afe83a8
显示一个或多个容器的统计信息
docker stats 11397afe83a8
在容器中运行后台任务
docker exec -d daemon_dave touch /etc/new_config_fil
-d好像没用
在容器内运行交互命令
docker exec -t -i daemon_dave /bin/bash
停止正在运行的Docker容器
docker stop daemon_dave
docker kill daemon_dave
自动重启容器
docker run --restart=always --name daemon_dave -d ubuntu /
bin/sh -c "while true; do echo hello world; sleep 1; done
docker run --name restart --restart=always -i -t -d centos /bin/bash
--restart=always
--restart=on-failure:5
通过docker ps命令获取容器的信息, 还可以使用docker
inspect来获得更多的容器信息,
docker inspect daemon
卷
-v这个选项允许我们将宿主机的目录作为卷, 挂载到容器里。
docker run -i -t -v $PWD:/home centos /bin/bash
$PWD本机目录,/home 容器目录,进入容器发现容易/home目录与本机目录同步
镜像
列出Docker镜像
docker images
拉取Ubuntu镜像
docker pull ubuntu:12.04
拉取带标签的fedora镜像
sudo docker pull fedora:21
该命令只会拉取fedora:21镜像。
运行一个带标签的Docker镜像
docker run -t -i --name new_container ubuntu:12.04
冒号和标签名来指定该仓库中的某一镜像
查找镜像-docker search命令来查找所有Docker Hub上公共的可用镜像
docker search puppet
Docker镜像有以下两种方法。
1.使用docker commit命令。
(docker commit 7a22777d0cc8 lqy/comit_test:1.0)
7a22777d0cc8 容器id,lqy/comit_test:名字(用户名/仓库命),1.0 TAG
从新镜像启动容器
docker run -t -i lqy/comit_test:1.0
2.使用docker build命令和Dockerfile文件
登录到Docker Hub
docker login
docker logout
从新镜像启动容器
docker run -d -p 80 --name static_web jamtur01/static_web nginx -g "daemon off;"
使用docker run命令, 启动名为static_web的新容器。-d选项, 告诉
在后台运行。 这种方式非常适合运行类似Nginx守护进程这样的需要长时间运行的进程。 我们也指定了需要在容器中运行的命令: nginx -g "daemon
新的-p标志, 该标志用来控制Docker在运行时应
该公开哪些网络端口给外部( 宿主机)
查看Docker端口映射情况
docker ps -l
查看容器的端口映射情况
docker port 6751b94bb5c0 80
通过-p选项映射到特定端口
docker run -d -p 80:80 --name static_web jamtur01/static_we
nginx -g "daemon off;"
将容器内的80端口绑定到本地宿主机的80端口上
绑定不同的端口
docker run -d- p 8080:80 --name static_web jamtur01/static_
nginx -g "daemon off;"
这条命令会将容器中的80端口绑定到宿主机的8080端口上。
绑定到特定的网络接口
docker run -d -p 127.0.0.1:80:80 --name static_web jamtur01
nginx -g "daemon off;"
绑定到特定的网络接口的随机端口
docker run -d -p 127.0.0.1::80 --name static_web jamtur01/s
nginx -g "daemon off;
-P参数
$ sudo docker run -d -P --name static_web jamtur01/static_web \
nginx -g "daemon off;
该命令会将容器内的80端口对本地宿主机公开, 并且绑定到宿主机的一
个随机端口上。
如:
代码清单5-34 启动Redis容器 $ sudo docker run -d -p 6379 --name redis jamtur01/redis 0a206261f079 可以看到, 我们从jamtur01/redis镜像启动了一个新的容器, 名字 是redis。 注意, 我们指定了-p标志来公开6379端口。 看看这个端口映 射到宿主机的哪个端口, 如代码清单5-35所示。 代码清单5-35 检查Redis端口 $ sudo docker port redis 6379 0.0.0.0:49161 Redis的端口映射到了49161端口。 |
推送Docker镜像(Docker Hub)
docker push jamtur01/static_web
推送Docker镜像(私库)
使用新的Registry给该镜像打上标签。 为了指定新的Registry目的地址, 需要在镜像名前加上主机名和端口前缀使用新Registry为镜像打标签
docker tag 414e329a078f localhost.localdomain:5000/tag1
414e329a078f 是镜像id,localhost.localdomain主机名字,tag1随便
docker push localhost.localdomain:5000/tag1
删除Docker镜像
docker rmi jamtur01/static_web
删除所有镜像
sudo docker rmi `docker images -a -q`
v2版本的私库查看
curl -X GET http://localhost.localdomain:5000/v2/_catalog
从私库下载
docker pull localhost.localdomain:5000/tag1
秒下载
网络
docker network
docker network create app创建
docker network inspect查看
docker network ls 命令列出当前系统中的所有网络
docker network rm命令删除一个Docker网络
docker network connect将正在运行的容器通过命令添加到已有的网络中
docker network disconnect命令断开一个容器与指定网络的链接