上一节我们安装好了docker,那么这节我们讲一下docker基本命令使用

查看版本

$ sudo docker --version

返回:Docker version 18.09.0, build 4d60db4
操作命令前需要使用管理员权限,每次操作都要添加sudo有点麻烦,有没有办法省略掉sudo呢?答案是有的:

$ sudo gpasswd -a ${USER} docker

这里的${USER}代表当前用户,比如我的用户名是mantishell

mantishell@zkl:~$ sudo gpasswd -a mantishell docker

重启docker

$ sudo service docker restart

然后再次使用version命令查看版本:

$ docker --version

同样可以查看到当前docker的版本。

启动容器

$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
ARG如果是name,表示命令自定义的容器名字

eg: $ docker run  ubuntu

它首先检查本地是否有ubuntu这个镜像,没有的话就从官网拉取。这条命令执行完以后,什么也没有返回,如何查看呢?

查看容器

$ docker ps [OPTIONS]

$ docker ps  默认查看正在运行的

options:

  • -a :显示所有的容器,包括未运行的。
  • -l :显示最近创建的容器。
mantishell@zkl:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
285843bc50ec ubuntu "/bin/bash" 7 minutes ago Exited (0) 10 seconds ago affectionate_mendeleev

启动、停止、重启容器

docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]

可以是id,也可以是名字

eg:$ docker start 285843bc50ec 或者 $ docker start affectionate_mendeleev

这个id和name都是自动生成的,写起来比较麻烦,有没有简单的办法呢?答案仍然是有的:我们可以在创建容器的时候指定容器的名字

mantishell@zkl:~$ docker run --name dc1 ubuntu 
mantishell@zkl:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2ced2dbbd472 ubuntu "/bin/bash" 6 seconds ago Exited (0) 4 seconds ago dc1

再次启动容器的时候可以是:$ docker start dc1 是不是方便了很多!

如果我们想在容器里操作一些东西,怎么办呢?现在创建的容器创建完就停止了,肯定是不能操作的,那怎么办呢?

启动交互式容器

$ docker run -i -t IMAGE /bin/bash
  -i --interactive=true|false 默认是false
  -t --tty=true|false 默认是false

eg: $ docker run -i -t ubuntu /bin/bash

这时候创建完容器并不会停止掉,我们可以在里面执行ubuntu的命令,ls,cd,mkdir等等。

如果想退出当前容器怎么办呢?

一种方式:直接退出并停止:exit

一种方式:CTRL+P,CTRL+Q,让它在后台运行变成守护式容器

守护式容器

另外一种方式:在创建容器的同时指定是守护式容器:

-d: 后台运行容器,并返回容器ID;

docker run --name dc1 -d ubuntu /bin/bash -c "while true; do echo hello world; sleep 1; done"

附加到运行中的容器

$ docker attach 容器的name

运行中的容器启动新进程

$ docker exec [-d] [-i] [-t] 容器名 [COMMAND] [ARG...]
docker exec -i -t dc1 /bin/bash 打开一个会话

停止容器的第二种方式

 $ docker kill 容器名

删除停止的容器

$ docker rm 容器名

查看容器日志

$ docker logs [-f] [-t] [--tail] 容器名
  -f, --follows=true|false 默认false
  -t, -- timestamps=true|false默认false
  --tail="all"

eg: $ docker logs -tf --tail 10 dc1

查看容器内进程

$ docker top 容器名

容器端口映射

$ docker run [-P] [-p]
  -P, --publish-all=true|false 默认false
$ docker run -P -i -t ubuntu /bin/bash
  -p, --publish=[]
containerPort 宿主机的任意端口:docker的端口80
$ docker run -p 80 -i -t ubuntu /bin/bash
hostPort:containerPort 宿主机的端口8080:docker的端口80
$ docker run -p 8080:80 -i -t ubuntu /bin/bash-i
ip::containerPort 宿主机的ip:docker的端口80
$ docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash
ip:hostPort:containerPort 宿主机的ip和端口8080:docker的端口80
$ docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash

我们做个小测试,访问docker的网站

$ docker run -p 80 --name web -it ubuntu /bin/bash
# apt-get install update
# apt-get inistall -y nginx
# apt-get install -y vim
# apt-get install -y curl
# mkdir -p /var/www/html
# ls /etc/nginx
# vim /etc/nginx/sites-enabled/default

使用ctrl+p,ctrl+q退出

把/home/docker/demo/index.html拷贝到docker中

docker -p /home/docker/demo/index.html dc1:/var/www/html

使用curl访问80端口查看结果

# curl http://localhost:80

退回到宿主机ubuntu中

首先查看宿主机对应的端口

$ docker ps

使用浏览器访问刚查到的端口号假如是32768

http://localhost:32768

docker 入坑2的更多相关文章

  1. Docker 入坑教程笔记

    Docker 入坑教程笔记 视频网址B站:点这里 查询命令 man docker 简单启动和退出 docker run --name [容器名] -i -t ubuntu /bin/bash 交互启动 ...

  2. Docker入坑系列(二)

    Docker入坑系列(二) 上一篇我们为Docker创造了一个良好的生活环境,这一篇我们就开始让Docker活起来. 安装Docker ok,原文地址在这里. 当然,我只是自己翻译了一下而已- -跟着 ...

  3. Docker入坑系列(一)

    Docker入坑系列(一) 引用嘛,当然是来引用别人说的东西啦. Docker 是一个开源项目,诞生于 2013 年初,它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux ...

  4. Docker入坑指南之RUN

    总有一些场景,我们需要自己制作一个镜像,可以快速还原环境,又不想被其他因素干扰镜像的纯净,这个时候,就可以选择Docker了,启动便捷,镜像还原很快捷,除了上手不容易. 最近入坑研究了一番,小有心得, ...

  5. 一、docker 入坑(win10和Ubuntu 安装)

    前言 终究还是绕不过去了,要学的知识真的是太多了,好在我们还有时间,docker 之前只闻其声,不曾真正的接触过,现在docker 越来越火,很多公司也都开始使用了.所以对于我们程序员而言,又得修炼一 ...

  6. docker 入坑4

    搭建mongodb $ docker run --name mongo -it -d -p : -v ~/docker-data/mongo:/data/db -e MONGO_INITDB_ROOT ...

  7. docker 入坑3

    查看镜像 docker images [OPTIONS] [REPOSITORY[:TAG]] -a, --all=false -f, --filter=[] --no-trunc=false -q, ...

  8. docker 入坑1

    本文是记录一下学习docker的过程,希望可以帮助到入门的朋友. 系统:ubuntu16.04 docker:18.09 打开官网:https://docs.docker.com/install/li ...

  9. Docker入坑指南之EXEC

    容器启动之后,如果我们需要进入容器内修改配置,比如mysql修改启动配置 我们启动的附加参数是不是shell,这个时候就可以用docker exec了,docker除了对image参数以外,大部分命令 ...

随机推荐

  1. sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock

    原因:历史软件(包)更新(安装)未完成就退出了系统 解决办法:杀死该进程 sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock ...

  2. 通过Zabbix监控Tomcat单机多实例

    前面已经介绍过Tomcat单机多实例部署,接下来就在他的基础上进行下一步操作:Tomcat多实例监控! Tomcat多实例监控过程和之前的redis多实例原理一样,分为以下4步: 1.获取多实例 2. ...

  3. [RoarCTF]Easy Java

    目录 [RoarCTF]Easy Java 知识点 1.WEB-INF/web.xml泄露 [RoarCTF]Easy Java 题目复现链接:https://buuoj.cn/challenges ...

  4. 请简述web开发中的兼容问题

    1,浏览器默认的内外边距不一样,所以用通用选择器*设置margin和padding来设置.2,块标签设置浮动后,有设置margin的情况下,在ie6下的margin比别的浏览器大.3,img标签会有默 ...

  5. jmeter 参数化大数据取唯一值方式

    jmeter 参数化大数据取唯一值方式 一.用时间函数: 因为时间戳永远没有重复,jmeter参数化,而且要取唯一值,可以考虑用时间函数加上其他函数一起: # 以13位的时间戳作为 userID no ...

  6. PHP 发送 POST 值到任意 url

    以下方法可以实现将 POST 值发送到 url,并获取返回值 $url = 'http://www.someurl.com'; $myvars = 'myvar1=' . $myvar1 . '&am ...

  7. tushare包使用案例

    Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们在数据获取 ...

  8. MySQL二进制快速安装升级(待验证)

    适合小版本的升级. 即 关闭当前的MySQL,替换当前的二进制文件或包,在现有的数据目录上重启MySQL,并运行mysql_upgrade. 特点:不改变数据文件,升级速度快:但,不可以跨操作系统,不 ...

  9. keepalived双主虚拟路由配置

    我使用了两台虚拟机做测试 系统centos7.3 主机A:172.16.1.123 主机B:172.16.1.124 其实和普通配置keepalived差不多,就是复制多了一个vrrp_instanc ...

  10. teamviewer破解版

    简介 TeamViewer是一个能在任何防火墙和NAT代理的后台用于远程控制的应用程序,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行 TeamView ...