Docker学习笔记

基本概念

  • 镜像(Image):类似系统镜像
  • 容器(Container):可以简单理解为镜像提供了运行环境,类似系统硬件环境。容器是基于镜像启动的,并且每个容器都是相互隔离的
  • 仓库(Repository):用于存放镜像,类似git仓库
    在这里插入图片描述

注意:
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等

Docker安装

  1. 卸载旧版本
$ sudo apt-get remove docker \
               docker-engine \
               docker.io
  1. 安装依赖项
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  1. 添加GPG密钥
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#官方源
#$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. 添加docker软件源
$ sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

#官方源
#$ sudo add-apt-repository \
#"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
#$(lsb_release -cs) \
#stable"

以上命令会添加稳定版本的 Docker APT 镜像源,如果需要测试版本的 Docker 请将 stable 改为 test。

  1. 安装Docker
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 启动Docker
$ sudo systemctl enable docker
$ sudo systemctl start docker
  1. 建立docker组
$ sudo groupadd docker
  1. 将当前用户加入docker组
$ sudo usermod -aG docker $USER
  1. 重启docker
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

Docker常用指令

  • 获取镜像
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
eg:
$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
bf5d46315322: Pull complete
9f13e0ac480c: Pull complete
e8988b5b3097: Pull complete
40af181810e7: Pull complete
e6f7c7e5c03e: Pull complete
Digest: sha256:147913621d9cdea08853f6ba9116c2e27a3ceffecf3b492983ae97c3d643fbbe
Status: Downloaded newer image for ubuntu:18.04
  • 启动一个容器运行镜像
OPTIONS说明:
-d: 分离模式: 在后台运行
-i: 即使没有附加也保持STDIN 打开,可以读取终端输入
-t: 分配一个伪终端,容器的 Shell 映射到当前的 Shell
-p: 容器的 xxx 端口映射到本机的 xxx 端口
--rm: 在容器终止运行后自动删除容器文件

$ docker run -it --rm ubuntu:18.04 bash
$ docker run --name QtDocker -it --rm ubuntu:QtV1 bash
$ docker run --name qt-docker -i --rm ubuntu:16.04 &
$ docker container run -d --rm -p 8000:3000 -it koa-demo:0.0.1
  • 列出本地镜像
$ docker image ls
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
redis                latest              5f515359c7f8        5 days ago          183 MB
nginx                latest              05a60462f8ba        5 days ago          181 MB
mongo                3.2                 fe9198c04d62        5 days ago          342 MB
<none>               <none>              00285df0df87        5 days ago          342 MB
ubuntu               18.04               f753707788c5        4 weeks ago         127 MB
ubuntu               latest              f753707788c5        4 weeks ago         127 MB
  • 查看镜像、容器、数据卷所占用的空间
$ docker system df

TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              24                  0                   1.992GB             1.992GB (100%)
Containers          1                   0                   62.82MB             62.82MB (100%)
Local Volumes       9                   0                   652.2MB             652.2MB (100%)
Build Cache                                                 0B                  0B
  • 罗列虚悬镜像(dangling image)
$ docker image ls -f dangling=true
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              00285df0df87        5 days ago          342 MB
  • 打包镜像
    docker build -t [image name]:[version] [dockerfile所在的目录]
docker build -t test/go-app:v1.0.1 .
  • docker tag : 标记本地镜像,将其归入某一仓库。
docker tag ubuntu:15.10 runoob/ubuntu:v3
  • 删除虚悬镜像
$ docker image prune

如果删除失败,可以使用如下的强制删除方式:

$ docker rmi -f `docker image ls -f dangling=true -q`
  • 删除本地镜像
$ docker image rm [选项] <镜像1ID> [<镜像2ID> ...]
eg:
docker image rm d60f3dc1ba3c 118e37d1bc9f
  • 查看容器
docker ps: 查看当前运行的容器
docker ps -a:查看所有容器,包括停止的。
  • 删除容器
删除所有容器
$ docker rm [容器ID]
$ docker rm $(docker ps -a -q) 
$ docker rm $(docker ps -aq) 

删除所有停止的容器
$ docker container prune
  • 从容器拷贝文件到宿主机
# 在宿主机下执行
docker cp [容器名]:[文件] [宿主机路径] 
  • 从宿主机拷贝到容器
# 在宿主机下执行
docker cp [宿主机文件] [容器]:[路径]
eg:
sudo docker cp  /etc/apt/sources.list confident_wu:/etc/apt/
  • 保存镜像的修改
# 在宿主机下执行
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
eg:
$ docker commit \
    --author "fzz <fzz@gmail.com>" \
    --message "修改了默认网页" \
    webserver \
    nginx:v2
sha256:07e33465974800ce65751acc279adc6ed2dc5ed4e0838f8b86f0c87aa1795214

$ docker image ls nginx
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               v2                  07e334659748        9 seconds ago       181.5 MB
nginx               1.11                05a60462f8ba        12 days ago         181.5 MB
nginx               latest              e43d811ce2f4        4 weeks ago         181.5 MB

eg2:
docker commit b12e03bb7de7 ubuntu16.04:Qt5.12.6
  • 停止运行中的容器
docker stop $CONTAINER_ID
  • 执行docker容器里的程序
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

eg:
 $ docker exec -i qt-docker /bin/bash /src/build.sh

参考链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值