微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

docker常用命令

标题docker常用命令

systemctl start docker // 启动docker服务
systemctl stop docker // 停止docker服务
systemctl restart docker // 重启docker服务
systemctl status docker // 查看docker服务状态
systemctl enable docker // 开机启动docker服务
systemctl disable docker // 取消开机启动docker服务

1.docker 运行的容器实现"对话"的能力
docker run -i -t ubuntu:15.10 /bin/bash
-t: 在新容器内指定一个伪终端或终端。
-i: 允许你对容器内的标准输入 (STDIN) 进行交互

2.退出容器
exit 或者使用 CTRL+D

3.启动容器(后台模式):-d 指定容器的运行模式
docker run -d ubuntu:15.10 /bin/sh -c “while true; do echo hello world; sleep 1; done”

docker run -ti -v /share:/share centos:v0.1 --name centos7 /bin/bash 
此时在centos:v0.1镜像的基础上以交互的方式运行了一个name叫centos7的容器,并且挂载了一个主机目录/share作为数据卷,容器中对应的目录也是/share.

4.查看容器属性
docker ps

CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
	状态有7种:
	created(已创建)
	restarting(重启中)
	running(运行中)
	removing(迁移中)
	paused(暂停)
	exited(停止)
	dead(死亡)
	PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称

5.查看容器内容输出
docker logs 容器ID(或者容器名称)
eg : docker logs 123qwa

6.停止容器
docker stop 容器ID(或者容器名称)

7.启动已存在的容器
docker start 容器ID(或者容器名称)

8.进入容器
docker attach 容器ID(或者容器名称)
docker exec -it 容器ID(或者容器名称) /bin/bash
推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止

9.导出容器
docker export 容器ID(或者容器名称) > ubuntu.tar

10.导入容器
cat ubuntu.tar | docker import - test/ubuntu:v1

也可以通过指定 URL 或者某个目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo

11.删除容器
docker rm -f 容器ID(或者容器名称)

下面的命令可以清理掉所有处于终止状态的容器。
docker container prune

12.容器内运行应用
docker pull training/webapp # 载入镜像
docker run -d -P training/webapp python app.py
-d:让容器在后台运行。
-P:将容器内部使用的网络端口映射到我们使用的主机上。

docker ps
CONTAINER ID        IMAGE               COMMAND             ...        PORTS                 
d3d5e39ed9d3        training/webapp     "python app.py"     ...        0.0.0.0:32769->5000/tcp
Docker 开放了 5000 端口(认 Python Flask 端口)映射到主机端口 32769 上

docker run -d -p 5000:5000 training/webapp python app.py
容器内部的 5000 端口映射到我们本地主机的 5000 端口上

-P(大写) : 是容器内部端口随机映射到主机的高端口。
-p(小写) : 是容器内部端口绑定到指定的主机端口。

13.容器的端口映射
docker port 容器ID(或者容器名称)
5000/tcp -> 0.0.0.0:5000
容器的某个确定端口映射到宿主机的端口号

14.查看容器内部的标准输出
docker logs -f bf08b7f2cd89
-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出

15.启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:
docker run -it -v /test:/soft centos /bin/bash
冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。

16.基于本地模板载入docker镜像
docker load --input centos-7-86_64.tar.gz

17.查看容器内部运行的进程
docker top 容器ID(或者容器名称)

18.查看 Docker 的底层信息,记录着 Docker 容器的配置和状态信息。
docker inspect 容器ID(或者容器名称)

19.列出本地主机上的镜像
docker images
各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:
docker run -t -i ubuntu:15.10 /bin/bash

20.新建网络
docker network create -d bridge test-net
-d:参数指定 Docker 网络类型,有 bridge、overlay

连接容器
运行一个容器并连接到新建的 test-net 网络:
docker run -itd --name test1 --network test-net ubuntu /bin/bash
打开新的终端,再运行一个容器并加入到 my-net 网络:
docker run -itd --name test2 --network test-net ubuntu /bin/bash
在容器内执行以下命令安装 ping
apt-get update
apt install iputils-ping
在容器内互ping
docker exec -it test1 /bin/bash
ping test2

docker exec -it test2 /bin/bash
ping test1

21.配置 DNS
/etc/docker/daemon.json 文件增加以下内容来设置全部容器的 DNS
{
“dns” : [
“114.114.114.114”,
“8.8.8.8”
]
}

22.设置镜像标签
docker tag 860c279d2fec runoob/centos:dev

23.docker 给运行中的容器设置端口映射
方法1
a、获得容器IP
将container_name 换成实际环境中的容器名
docker inspect container_name | grep IPAddress
b、 iptable转发端口
将容器的8000端口映射到docker主机的8001端口
iptables -t nat -A DOCKER -p tcp –dport 8001 -j DNAT –to-destination 172.17.0.19:8000

方法2
a.提交一个运行中的容器为镜像
docker commit containerid foo/live
b.运行镜像并添加端口
docker run -d -p 8000:80 foo/live /bin/bash

★★★★★★如何备份当前容器的修改?备份是可靠性的一个保证! start★★★★★★

24.如何备份当前容器的修改?备份是可靠性的一个保证!
  a. 使用commit 命令保存到本地
docker commit -m “msg” abcommitid myimage:1.0
  其好处是操作方便,本机永久保存,方便下次快速操作。坏处,也不算,就是你如果想放到远程,你必须注册一个docker hub 账号,然后保存过去。而且这样的镜像,一般只适合自己使用,不适合团队传播!(不过也不是绝对的)
  b. 使用docker save 保存压缩包到本地
docker save -o myimage_save.tar abcontainerid
  这样备份好之后,就可以将改该容器到处分发到其他机器或者做备份了。这样做都好处是,传播方便,不会导致隐私泄露。坏处是都是本地包,没有存储在云端,必须到处携带该包。
  导入时使用 docker load 即可!
docker load -i myimage_save.tar
  然后就可以看到镜像了,使用docker run 运行。操作步骤稍微繁琐了点。注意: 只有 docker run 才能自定义各种参数哦。(docker run 聚合了 create 和 start 的功能
  在部署应用时可能存在需要将新应用部署好后,再删除原容器的操作,所以容器重命名就很有必要的, 使用 docker rename
docker rename 原容器名 新容器名
  c. 使用 docker export 保存到本地, 操作如同 docker save, 但是功能受限,个人不是很喜欢使用
docker export -o mycontainer_save.tar tmp_container

25.如何设置应用开机启动?只要启动容器就够了!
  应用场景可以说是刚需: 我把第一个镜像安装好后,希望下次创建容器之后就能自动运行,而不是还要操作N多繁杂步骤,从而降低移植性带来的方便性!
  a. 能想得最简单的是,使用系统的开机启动功能
    比如在 /etc/rc.d/rc.local 中添加相应的启动,但是这里有个前提,那就是你必须先把容器启起来; (启不启得来另说)
  b. 使用docker的开机自动运行功能,使用简单;
    这里说的简单是指使用,而在操作的时候则看个人了。在docker创建时,使用启动脚本,自动运行。主要的命令有: CMD, RUN, ADD . 创建一个start.sh,可以定复杂的启动逻辑;但是这在后期中,就很难更改其逻辑了哦!
CMD [“sh”, “-c”, “service httpd start;bash”] # 开机启动 apache 服务

26.如何自定义端口映射?容器需要与外部通信!
  Docker 自带了端口映射功能,使用docker run -p 进行操作!
docker run -d -p 81:80 --name container_name myimage:1.0
  多个端口映射使用多个-p即可;

★★★★★★如何备份当前容器的修改?备份是可靠性的一个保证! end★★★★★★

27.docker中怎样设置开机启动–随容器的启动而启动服务?
参考 https://www.cnblogs.com/yougewe/p/10425387.html

另附安装docker教程

52fighting 发布了13 篇原创文章 · 获赞 0 · 访问量 80 私信 关注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐