docker学习-常用命令

//ubuntu中简单创建新用户的方法
sudo adduser robot

//docker和docker-compose的安装
sudo apt install docker docker-compose


//加入docker用户组:
sudo groupadd docker     #添加docker用户组
sudo gpasswd -a ${USER} docker    #将用户加入到docker用户组中
newgrp docker  更新docker组
或者
sudo docker ps ...


docker search ubunt    //查找镜像
docker pull ubunt      //下载镜像
docker rmi hello-world //删除镜像


docker ps  //查看所有运行过的容器
docker ps -a  //查看已经在运行的容器
exit 或者 Ctrl+d   //退出容器终端

docker run -it --name nav_ws ros-melodic-nav-develop   //给启动的容器起个名字 nav_ws,不执行任何动作
docker run -it ros-melodic-nav-develop /bin/echo "Hello world"    //启动容器(交互模式)运行完就结束了
docker run -d ros-melodic-nav-develop /bin/sh -c "while true; do echo hello world; sleep 1; done"    //启动容器(后台模式)
docker logs 2b1b7a428627  //查看输出的日志   
docker logs -f --tail 10 docker123   //实时查看docker容器名为docker123的最新10行日志,如果有新的日志生成会实时刷新出来
docker logs docker123 | grep ERROR | tail -n 2    //错误太多了,我只想找最新的两行的ERROR日志
docker logs docker123 | head -n 10         //如果我们要打印最早期的10行日志,就是日志的头10行
docker stop 2b1b7a428627  //停止容器
docker kill 2b1b7a428627  //杀死容器
docker restart 2b1b7a428627  //重启容器
docker rm 2b1b7a428627  //删除容器
docker container prune    //删除所有处于终止状态的容器

docker exec -it 243c32535da7 /bin/bash   //在运行的容器中执行命令,适用于 docker-compose 创建的容器,然后在里面可以执行指令
-d :分离模式: 在后台运行    -i :即使没有附加也保持STDIN 打开   -t :分配一个伪终端   -it 执行一个交互的终端   /bin/bash 选择执行的bash
docker attach 2b1b7a428627   //进入后台运行的容器,适用于docker run创建的容器,然后在里面可以执行指令

docker build     //构建镜像 需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建镜像

runoob@runoob:~$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "[email protected]"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的
第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令,安装了什么
然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像

//docker-compose概述
使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,Docker Compose。
Dockerfile可以让用户管理一个单独的应用容器,而compose则允许用户在一个模板(yaml格式)中定义一组相关联的应用容器(被称为一个project,即项目)
例如一个web服务再加上后端的数据库服务容器等。

docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner)

docker-compose运行目录下的所有文件(docker-compose.yml文件、extends文件或环境变量等)组成一个工程,如无特殊指定,工程名即为当前目录名。
一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。
因此需要借助其他工具实现服务发现及负载均衡,比如consul。docker-compose的工程配置文件默认为docker-compose.yml。

//docker-compose是用于定义和运行多容器 Docker 应用程序的工具,然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务,说白了就是一个一键启动脚本
我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。
例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
通过 Docker-Compose 用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。
Docker-Compose 解决了容器与容器之间如何管理编排的问题。

Compose 中有两个重要的概念:
服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。


//Docker Compose常用命令【都需要进入到相应的有docker-compose.yaml文件目录下面】
docker-compose ps    //查看启动的服务,默认为 docker-compose.yml
docker-compose up    //启动并运行整个应用程序(后台执行加 -d选项),默认为 docker-compose.yml
docker-compose -f docker-compose.yml up -d //-f  指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定
docker-compose logs //查看服务容器的输出
docker-compose -f docker-compose-test.yml logs -f  //查看服务容器的输出,并实时刷新
docker-compose down //删除容器、网络、数据卷、和镜像
docker-compose stop //停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器
docker-compose start //启动已经存在的服务容器
docker-compose -h    //查看帮助
docker-compose pull //拉取服务依赖的镜像
docker-compose restart //重启项目中的服务
docker-compose rm    //删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器
docker-compose run ubuntu ping docker.com //在指定服务上执行一个命令
docker-compose scale web=3 db=2 //设置指定服务运行的容器个数。通过 service=num 的参数来设置数量
docker-compose build  //构建(重新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。可以随时在项目目录下运行 docker-compose build 来重新构建服务

你可能感兴趣的:(docker,docker,学习,eureka)