docker-基础命令

Posted bronk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker-基础命令相关的知识,希望对你有一定的参考价值。

docker 容器, 只能启动一个指定的程序, 程序结束, 容器退出

查看命令: docker --help

 

总得来说, docker的命令为以下几种: 

  • 容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
  • 容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
  • 容器rootfs命令 — docker [commit|cp|diff]
  • 镜像仓库 — docker [login|pull|push|search]
  • 本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
  • 其他命令 — docker [info|version]

1, 镜像操作: 

1, 搜索镜像
docker search alpine
2, 下载镜像
docker pull apline
3, 查看镜像
docker images
4, 删除镜像
docker rmi apline

2, 容器操作

1), 启动容器: 

a), 输出hellowork, 运行后立马退出

docker run centos /bin/echo helloworld

b), 打开终端并保持在容器中

docker run --name centos -d -it centos /bin/bash

参数解释:   --name: 指定运行名字, 

       --i: 始终保持链接状态

       -t: 打开伪终端并绑定在docker上

      /bin/bash: 需要执行的命令

运行的时候, 会先检测有没有镜像, 没有的话自动pull下载

c), 后台运行:  加 -d

d), 端口映射: 不加的话, 随机映射, 使用: 

         -p 主机端口:容器端口

docker run -d --name nginx -p 81:80 nginx

    使用 -p ip:hostPort:containerPort 可以指定主机的多个ip:port

    也可以使用 -p 指定多个 端口

2, 停止容器

docker stop CONTAINER_ID | CONTAINE_NAME

3, 查看容器

docker ps -a  # -a指查看所有, 不加只查看正在运行的

4, 进入容器

docker exec -it /bin/bash CONTAINER_NAME 
docker attach CONTAIN_ID: 进入后退出, 容器会退出

 -i: 始终打开链接

   -t: 打开伪终端使用绑定在docker上

   /bin/bash: 需要docker容器运行的命令

使用更好的方式进入容器

需要工具包:

yum install -y util-linux

查看docker 的pid

docker inspect --format "{{.State.Pid}}" CONTAINER_ID | CONTAINER_NAME

使用 nsenter 进入容器

nsenter --target 23907 --mount --uts --ipc --net --pid

写成脚本链接进容器: 

# /bin/bash
CNAME=$1
if [ ! -n "$1" ]; then
echo the param CONTAINER_ID or CONTAINER_NAME is must
exit 0
fi

CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
nsenter --target "$CPID" --mount --uts --ipc --net --pid

5, 启动已经终止的程序

docker start CONTAIN_ID

6, 删除容器

docker rm

7, 保存正在运行的容器 

docker commit -m yourtags CONTAINER_ID wenbronk/CONTANER_NAME

 

3, docker数据管理

  数据卷容器: --volumes-

  数据卷: -v /data     -v src:dst: 将数据直接写在物理机上, 也可以挂载文件到容器中

    可添加 -v /data:/opt/nginx/log:ro   添加 ro 参数 只读

1, 挂载目录或文件, 到docker 容器中 

docker run -d --name=tomcat -v /b2b:/test -it centos /bin/bash

 此时操作本地的 /b2b 目录, 就会在docker容器下看到 相应的文件管理

2, 可以使用 volumes-from参数, 将docker容器启动为数据卷容器

  实现容器间的数据共享

docker run -it --volumes-from tomcat --name db1 centos

这样 两个容器都可以访问该目录, 且做的更改对其他容器是可见的

3, 数据备份和恢复

docker run --volumes-from dbdata -v $(pwd):/backup --name worker centos tar zcf /backup/backup.tar.gz /dbdata

创建数据卷容器: 

docker run -v /dbdata/dbdata --name db centos /bin/bash

进行数据恢复

docker run --volumes-from db -v $(pwd):/backup  centos tar xf /backup/backup.tar.gz

 

以上是关于docker-基础命令的主要内容,如果未能解决你的问题,请参考以下文章

docker简介和基础命令

Docker 学习 | 基础命令

Docker 基础知识-入门篇

Docker基础命令详解——镜像及容器操作

1. Docker基础命令

Docker基础命令