Loading

Docker 笔记

Docker

安装

  • Mac
$ brew cask install docker
  • Ubuntu
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

免 root 使用 docker

sudo groupadd docker           # 添加 docker 用户组,docker 安装时应该已经添加过,可略去
sudo gpasswd -a $USER docker   # 将登陆用户加入到 docker 用户组中
newgrp docker                  # 更新用户组

镜像加速

网易:https://hub-mirror.c.163.com
七牛云:https://reg-mirror.qiniu.com

Linux

在 /etc/docker/daemon.json 中写入:

{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}

重启服务:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

macOS

Docker 使用

运行交互式的容器

$ docker run -it ubuntu:20.04 /bin/bash
  • -t:在新容器内指定一个伪终端或终端。
  • -i:允许对容器内的标准输入(STDIN)进行交互。

此时已进入 docker 中的 Ubuntu 20.04

root@3be79357f5f2:/# /proc/version
Linux version 4.19.76-linuxkit (root@4abe09437d05) (gcc version 8.3.0 (Alpine 8.3.0)) #1 SMP Tue May 26 11:42:35 UTC 2020

可通过 CTRL + D 或 exit 命令退出容器

启动容器(后台模式)

创建一个以进程方式运行的容器:

$ docker run -d ubuntu:20.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

输出为一个长字符串作为容器 ID:
c37fc2e85c1d2b89d477b7ecfe985a7d5e083a7ace45a0af5702913647d8cad7

查看运行中的容器:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
c37fc2e85c1d        ubuntu:20.04        "/bin/sh -c 'while t…"   3 minutes ago       Up 3 minutes                            angry_bassi

输出字段解释

Name 解释
CONTAINER ID 容器 ID
IMAGE 使用的镜像
COMMAND 启动容器时运行的命令
CREATED 容器的创建时间
STATUS 容器状态
PORTS 容器的端口信息和使用的连接类型(TCP/UDP)
NAMES 自动分配或手动指定的容器名称

其中状态共有 7 种:

  • created
  • restarting
  • running
  • removing
  • paused
  • exited
  • dead

在宿主机内使用 docker logs 命令,查看容器内的标准输出:

$ docker logs c37fc2e85c1d

docker run -it \
    --name bt \
    -p 16881:16881 \
    -p 16881:16881/udp \
    -p 18080:8080 \
    -v /home/zhaochunyu/workspace/BT:/BT \
    ubuntu:18.04 /bin/bash
  • --name:指定容器名称
  • -p:端口映射
  • -v:目录挂载

停止容器

$ docker stop c37fc2e85c1d

停止的容器可通过 docker restart 重启:

$ docker restart c37fc2e85c1d

进入容器

在使用 -d 参数时,容器可进入后台运行,可通过以下命令进入:

  • docker attach
  • docker exec:常用,退出容器终端不会导致容器的停止。

attach 命令

$ docker attach aa571dd81169

注意:从这个容器退出会导致容器的停止

exec 命令

docker exec -it aa571dd81169 /bin/bash

退出容器不会导致容器的停止

导出和导入容器

导出

$ docker export aa571dd81169 > ubuntu.tar

导出容器 aa571dd81169 的快照到 ubuntu.tar。

导入

使用 docker import 从容器快照文件中导入为镜像

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

删除容器

$ docker rm -f aa571dd81169

清理所有处于终止状态的容器

$ docker container prune
posted @ 2021-01-05 09:48  Chainey  阅读(124)  评论(0)    收藏  举报