Docker入门

1.测试docker是否存在
  • sudo docker info
    返回docker的基本信息
$ sudo docker info
//出现一下内容
Containers: 2
 Running: 0
 Paused: 0
 Stopped: 2
Images: 1
...
2.运行第一个容器
$ sudo docker run -i -t ubuntu /bin/bash
//开始下载容器并运行
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
473ede7ed136: Pull complete 
c46b5fa4d940: Pull complete 
93ae3df89c92: Pull complete 
6b1eed27cade: Pull complete 
Digest: sha256:29934af957c53004d7fb6340139880d23fb1952505a15d69a03af0d1418878cb
Status: Downloaded newer image for ubuntu:latest
root@363ed45619ae:/# 
  • 注意 可通过 docker help 或者 man docker-run 来获取 docker的命令列表
  • 解析:
    sudo docker run -i -t ubuntu /bin/bash
    其中-i 标志保证容器中STDIN是开启的,持久的标准输入,-t标志是告诉docker为要创建的容器分配一个伪tty终端。 Ubuntu是 创建一个Ubuntu镜像,同时告诉新容器中要运行:/bin/bash 命令。所以就到:root@363ed45619ae:/# 。
3.使用容器

其中容器ID 363ed45619ae 。 也是它的主机名。

root@363ed45619ae:/home# hostname
363ed45619ae
root@363ed45619ae:/home# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	363ed45619ae
  • 网络配置
root@363ed45619ae:/home# ip a
  • 检查容器进程
root@363ed45619ae:/home# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  18508  3428 pts/0    Ss   07:34   0:00 /bin/bash
root        21  0.0  0.0  34400  2860 pts/0    R+   07:47   0:00 ps -aux
  • 在容器中安装软件包
root@363ed45619ae:~# apt-get upate    root@363ed45619ae:~# apt-get install vim 
  • 退出容器
exit

退出后,回到自己的物理机

  • 查看当前系统中的容器列表
$ sudo docker ps -a 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
363ed45619ae        ubuntu              "/bin/bash"         19 minutes ago      Exited (0) 31 seconds ago                       keen_boyd
31ef04a4ff1b        hello-world         "/hello"            3 days ago          Exited (0) 3 days ago                           gifted_austin
e4166694ac7c        hello-world         "/hello"            3 days ago          Exited (0) 3 days ago                           brave_kare
  • 查看最后一次运行的容器
$ sudo docker ps -a -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS               NAMES
363ed45619ae        ubuntu              "/bin/bash"         20 minutes ago      Exited (0) About a minute ago                       keen_boyd
4.容器命名

–name 标志

$ sudo docker run --name hiekay_container -i -t ubuntu /bin/bash
root@989f63da27d3:/# exit
exit

$ sudo docker ps -a -l                                          
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
989f63da27d3        ubuntu              "/bin/bash"         26 seconds ago      Exited (0) 8 seconds ago                       hiekay_container

合法的容器名称符合: [a-zA-Z0-9_·-]

5.重启停止的容器

可以通过容器名称 或则 容器ID

$ sudo docker start hiekay_container
hiekay_container

$ sudo docker start 989f63da27d3                
989f63da27d3
6.附着到容器上

docker容器重新启动的时候 会重启一个交互式会话shell,我们可以用 docker attach 重新附着到该容器会话上 , 可通过容器 name 或者 ID 。

$ sudo docker attach hiekay_container
root@989f63da27d3:/#

$ sudo docker attach 989f63da27d3
root@989f63da27d3:/#
7.创建守护式容器

除了交互式运行的容器,大部分是需要创建长期运行的容器, 守护式容器 没有交互式会话,适合运行应用程序和服务。
实例:

$ sudo docker run --name demo -d ubuntu /bin/sh -c "while true; do echo hello world; sleep1; done" 
ea6e0fecba4f5185f62e2a46851882572bdb465fccfdac6b27a64ea9ff3cedc9

其中-d参数 是标志让容器放在后台运行。
其中 命令是让 运行一个 while 循环 一直打印 hello world ,直到容器或进程停止。

  • 可通过 docker ps命令 查看 正在运行的容器
$ sudo docker ps                                                                                   
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
ea6e0fecba4f        ubuntu              "/bin/sh -c 'while t…"   2 minutes ago       Up 2 minutes                            demo
8.查看容器内部的工作
  • docker logs
$ sudo docker logs demo
hello world
hello world
hello world
......

也可以用 -f参数来监控日志

$ sudo docker logs -f demo

也可以用 tail 命令看最后的几行日志

sudo docker logs --tail 10  demo
或
sudo docker logs --tail 0 -f  demo
9.查看容器内的进程
  • docker top
$ sudo docker top demo                                                        
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                31469               31448               99                  16:11               ?                   00:09:46            /bin/sh -c while true; do echo hello world; sleep1; done
10.在容器内运行进程
  • docker exec
    两种类型:后台任务 和 交互式任务
  • 后台任务
$ sudo docker exec -d demo touch /etc/new_file1
  • 交互式任务
$ sudo docker exec -t -i demo /bin/bash        
root@ea6e0fecba4f:/# 
11.停止守护式容器
  • docker stop name/ID
$ sudo docker stop demo 
或
$ sudo docker stop ea6e0fecba4f 
  • 注意: 也可以通过docker kill 关闭
12.自动重启容器
  • 自动重启标志: --restart
$ sudo docker run --restart=always --name demo -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done" 
  • 注意: --restart 被设置为 always ,无论退出代码是什么,一直会自动重启。
    还可以设置为: on-failure 只有当退出代码为0的时候才会自动重启,也可以传参数: 5, 重启次数。
    –restart=on-failure:5
13.深入容器
  • docker inspect 获取更多容器信息
$ sudo docker inspect demo
//获取的信息
[
    {
        "Id": "ea6e0fecba4f5185f62e2a46851882572bdb465fccfdac6b27a64ea9ff3cedc9",
        "Created": "2018-10-29T08:11:49.219017867Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true; do echo hello world; sleep1; done"
        ],
......
  • 可以用 -f 或 --format 标志来选定查看结果 ,支持完整的Go语言模板
    例子:
    查看容器的运行状态
$ sudo docker inspect --format='{{.State.Running}}' demo 
//返回
false

查看容器IP

$ sudo docker inspect --format='{{.NetworkSettings.IPAddress}}' demo

查看多个容器的信息

$ sudo docker inspect --format='{{.Name}} {{.State.Running}}' demo demo1
/demo false
/demo1 false
14.删除容器
  • docker rm name/ID
$ sudo docker rm demo1                                                                                                
demo1
  • 注意:删除之前 必须先关闭

  • 删除所有

$ sudo rm 'docker ps -a -q '

解析:docker -a 列出所有容器,-q 返回ID, 然后传给 sudo rm ID , 即可删除。

15. 小结

docker 基础,请多联系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值