docker 入坑2
上一节我们安装好了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的更多相关文章
- Docker 入坑教程笔记
Docker 入坑教程笔记 视频网址B站:点这里 查询命令 man docker 简单启动和退出 docker run --name [容器名] -i -t ubuntu /bin/bash 交互启动 ...
- Docker入坑系列(二)
Docker入坑系列(二) 上一篇我们为Docker创造了一个良好的生活环境,这一篇我们就开始让Docker活起来. 安装Docker ok,原文地址在这里. 当然,我只是自己翻译了一下而已- -跟着 ...
- Docker入坑系列(一)
Docker入坑系列(一) 引用嘛,当然是来引用别人说的东西啦. Docker 是一个开源项目,诞生于 2013 年初,它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux ...
- Docker入坑指南之RUN
总有一些场景,我们需要自己制作一个镜像,可以快速还原环境,又不想被其他因素干扰镜像的纯净,这个时候,就可以选择Docker了,启动便捷,镜像还原很快捷,除了上手不容易. 最近入坑研究了一番,小有心得, ...
- 一、docker 入坑(win10和Ubuntu 安装)
前言 终究还是绕不过去了,要学的知识真的是太多了,好在我们还有时间,docker 之前只闻其声,不曾真正的接触过,现在docker 越来越火,很多公司也都开始使用了.所以对于我们程序员而言,又得修炼一 ...
- docker 入坑4
搭建mongodb $ docker run --name mongo -it -d -p : -v ~/docker-data/mongo:/data/db -e MONGO_INITDB_ROOT ...
- docker 入坑3
查看镜像 docker images [OPTIONS] [REPOSITORY[:TAG]] -a, --all=false -f, --filter=[] --no-trunc=false -q, ...
- docker 入坑1
本文是记录一下学习docker的过程,希望可以帮助到入门的朋友. 系统:ubuntu16.04 docker:18.09 打开官网:https://docs.docker.com/install/li ...
- Docker入坑指南之EXEC
容器启动之后,如果我们需要进入容器内修改配置,比如mysql修改启动配置 我们启动的附加参数是不是shell,这个时候就可以用docker exec了,docker除了对image参数以外,大部分命令 ...
随机推荐
- Python3爬取王者官方网站英雄数据
爬取王者官方网站英雄数据 众所周知,王者荣耀已经成为众多人们喜爱的一款休闲娱乐手游,今天就利用python3 爬虫技术爬取官方网站上的几十个英雄的资料,包括官方给出的人物定位,英雄名称,技能名称,CD ...
- 2019_软工实践_Beta收官
简介 组名:955 组长博客:点这里! 成员 031702329庄锡荣(组长) 031702309林晓锋 031702309侯雅倩 031702311陈珊珊 171709030吴珂雨 03170231 ...
- WEB API 的设计与开发
- 创业小记:ALL IN才是迈出创业第一步的关键
对于创业而言,能卖出这创业第一步的,大多都经过了长期反复的心理拷问与折磨. 因为当你迈出创业的那一步,你可能需要面对的是毫无收入保障的生活,以及后果自负的结局. ALL IN才是迈出创业第一步的关键( ...
- Service与Activity通信 回调方式***
要实现service与activity的高强度通信用什么方法? service与activity之前的通信方式有很多,回调接口方式.观察者模式.广播.还有handler等,方法有很多,但要高强度地通信 ...
- 手把手教你 GitLab 的安装及使用
前言 新入职公司,发现公司还在使用落后生产工具 svn,由于重度使用过 svn 和 git ,知道这两个工具之间的差异,已经在使用 git 的路上越走越远. 于是,跟上级强烈建议让我在公司推行 git ...
- Java JDBC利用反射技术将查询结果封装为对象
1.JDBC将返回结果集封装成对象demo class JdbcDemo { /** * 获取数据库列名 * @param rs * @return */ private static String[ ...
- Oracle系列五 多表查询
笛卡尔集笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件. Oracle 连接 使用连接在多个表中查询数据 ...
- rpm和deb包制作和升级执行步骤
deb安装包升级和安装都是dpkg -i .deb命令,升级时直接覆盖安装新包安装步骤:1 preinst install2 postinst configure升级步骤:1 先执行旧包prerm u ...
- dataTable.NET的column index的不同定義
dataTable.NET是一個jQuery的plug in 第三方的library, 用來實現web page中table的interaction controls, 另外最近有在用的還有Teler ...