docker 入坑2

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

查看版本

$ sudo docker --version

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

$ sudo gpasswd -a ${USER} docker

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

[email protected]:~$ 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 :显示最近创建的容器。
[email protected]:~$ 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都是自动生成的,写起来比较麻烦,有没有简单的办法呢?答案仍然是有的:我们可以在创建容器的时候指定容器的名字

[email protected]:~$ docker run --name dc1 ubuntu [email protected]:~$ 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

原文地址:https://www.cnblogs.com/mantishell/p/11294538.html

时间: 2024-10-19 12:39:45

docker 入坑2的相关文章

Docker入坑指南之RUN

总有一些场景,我们需要自己制作一个镜像,可以快速还原环境,又不想被其他因素干扰镜像的纯净,这个时候,就可以选择Docker了,启动便捷,镜像还原很快捷,除了上手不容易. 最近入坑研究了一番,小有心得,故写一篇杂文,记录自己的踩坑经历. 安装Docker的过程可以参考其他前辈的文章,不再赘述,从实战角度说,如何构建一个自用的Docker镜像. 首选说一下Docker的几个名词,仓库是管理镜像的,容器是镜像启动后的,镜像就是最干净的环境,镜像启动之后变成容器. docker的run是启动镜像的介质,

docker 入坑1

本文是记录一下学习docker的过程,希望可以帮助到入门的朋友. 系统:ubuntu16.04 docker:18.09 打开官网:https://docs.docker.com/install/linux/docker-ce/ubuntu/ OS requirements To install Docker Engine - Community, you need the 64-bit version of one of these Ubuntu versions: Disco 19.04 C

入坑winpdb-1.4.8

这几天莫名的不能在docker中使用winpdb-1.4.8调试,把容器重新安装了也不行,跟踪调试以后发现原因是容器中使用pycryptodemo作为rpdb2的加密库,加密向量IV需要以byte类型(b'0000000000000000')传入. 记录一下防止再次入坑 rpdb2(pycryptodome)下载 原文地址:https://www.cnblogs.com/goyier/p/11037411.html

弃坑pexpect,入坑paramiko

弃坑pexpect,入坑paramiko 上文书说到,ssh库pexpect的使用,简直就是个"月亮公主"--满眼全是坑.勉强把程序写好了,跑起来的时候发现了一个新坑,让我不可抗拒的把它弃掉了--经常莫名其妙的连不上服务器!开线程连接14台服务器,总有1到3台连不上,还查不到原因.这还了得!一怒之下把写好的pexpect封装库删掉了,用paramiko重新写起.其实这个库也是有一些坑的,这个放在后面说.先介绍一下这个库的用法. 安装方法:没有什么新鲜的 pip install para

py3学习笔记0(入坑)

什么是Python? Python是一种面向对象.解释型计算机程序设计语言,语法简洁,具有很多强大的库.它也被称为胶水语言,能够把其他语言制作的库轻松地粘合在一起.现常用于科学计算,界面设计,网络通信等. 它优雅,明确,简单,将“用一种方法,最好是只有一种方法来做一件事”的优雅哲学贯穿始终. 当然关键还是它比较好玩,就抱着玩一玩的心态入坑看看咯. 初期学的是py2,主要写写小游戏,爬虫什么的. 在学校很久没有编程了,平时还是要写写代码练练手. 那就开始学py3吧!虽然都差不多,但周围有好多人都想

ReactNative for Android入坑(一)

最近找工作发现有些公司要求会ReactNative,决定入坑. 搭建环境:官网详细的教程附链接. 坑一:FQ,建议整个搭建过程中FQ.第一步:安装Chocolatey,管理员运行cmd,输入指令: Chocolatey安装官网指令:@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org

VPS 入坑之路

一.入坑动机: 以前一直的FQ服务也被请喝茶了,仅限企业客户使用.于是想到租用一个VPS,搭个梯子. 二.入坑之路: 1.购买 想起在G+看见有人推荐搬瓦工性价比很高,去了解了一下,最低配置19.99刀一年,折合人民币也就十块一个月的样子,果断入之. 2.SS 以前在虚拟机稍微接触过linux,比如ubuntu和fedora,然而都是在图形界面瞎搞.这次终于有机会在终端操作了.各种命令上手确实不容易,只会cd,ls...突然发现控制面板有一键搭建SS,后来又放弃了敲命令...有一天心血来潮,决定

猿说摄影(上)--入坑指南

最近师弟师妹们以及复读的童鞋临近毕业,有的想买相机拍拍毕业照,记录一下旅行毕业游之类的.五一放假,咱就先不聊技术,聊一下摄影,不过摄影也是一个技术活,而且烧钱.摄影穷三代,单反毁一生.相机贵吗?贵,但贵的不只是相机,还有镜头.为什么这么说呢?大家也知道,单反和微单都是可以更换镜头的.一旦入坑,除了买相机同时买的套头(标准变焦镜头)之外,你很可能会接下来陆陆续续地买其它镜头→_→想拍漂亮的人物,你需要大光圈的定焦镜头:想拍壮阔的风景,你需要广角镜头:想拍飞禽走兽,你需要长焦镜头:你可能还要拍点小花

webpack入坑之旅(一)不是开始的开始

最近学习框架,选择了vue,然后接触到了vue中的单文件组件,官方推荐使用 Webpack + vue-loader构建这些单文件 Vue 组件,于是就开始了webpack的入坑之旅.因为原来没有用过任何的构建工具与模块化工具,所以本系列会十分的基础.并且可能有很多不正确的地方,希望大家谅解,并指出错误帮助改进.谢谢! 这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webp