【Docker使用概述】
1、Docker基于Linux操作系统核心,Windows下其实是后台虚拟化了一个Linux。
终端命令行下运行的格式:docker 命令 -参数 镜像或容器的名称或ID。

2、理解“镜像+容器+数据”
镜像
① 放在网络服务器(即所谓的“仓库”)里,用search命令查找,然后用pull命令“拉”下来。
② 自动识别各个镜像之间有共同的部分,只下载不同的部分,也就是所谓的“镜像分层”。
③ 可以自己调试好的容器做成一个镜像,备份在本地,或者上传到网络。
容器
① 利用已经“拉”到本地的镜像创建的一个独立的功能区块,里面可以是操作系统、软件、数据。
② 同一个镜像可以做出不同的容器,删除容器不影响其他容器运行,但数据会受影响。
③ 运行容器需要做一些基本的设置,一般通过run命令加一些参数来做。
数据
① 数据放在容器里不安全,容器被删除,数据也就完了。
② 本地主机和容器之间的数据是可以互相拷贝的,用docker cp命令。不过用这种方式保存数据,既占空间又麻烦。
③ 可以在启用容器run命令时,用-v参数将本地主机的一个或多个目录映射给容器,则容器的数据实际储存在本地主机目录。
这样做的话,删除容器后数据依旧在,还可以将这个目录映射给多个容器使用。
④ 网络IP端口也可以映射,使得容器的数据可以在网络内流转。
在启用容器run命令时,用-p参数进行映射。

3、日常管理
① 用命令方式处理:安装更新和卸载Docker、启用或停止docker服务、查找并获取镜像、查看本地镜像或容器、创建启动和关闭容器、删除镜像或容器、修改容器配置文件。
② 网页版管理:本地容器创建的Docker UI、图形页面管理工具portainer

【Docker安装】

删除旧版本(如有)
~$ sudo apt-get remove docker docker-engine docker.io containerd runc

安装依赖包
~$ sudo apt-get update
~$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加 Docker 的官方 GPG 密钥
~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK
验证
~$ sudo apt-key fingerprint 0EBFCD88
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ 未知 ] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

添加Docker APT 软件源
~$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

安装Docker最新版本
~$ sudo apt update
~$ sudo apt install docker-ce docker-ce-cli containerd.io

查询Docker服务是否开启
~$ sudo systemctl status docker

*如果你想阻止 Docker 自动更新,锁住它的版本:

sudo apt-mark hold docker-ce

【国内源】

创建daemon.json文件

~$ sudo nano /etc/docker/daemon.json

内容如下:
{
    "registry-mirrors":[
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com",
    "https://cr.console.aliyun.com/"
  ]
}

保存退出,重启docker服务使配置生效
~$ sudo systemctl restart docker.service

【测试容器】

~$ sudo docker info | grep -E "Registry|http"
显示:
 Registry: https://index.docker.io/v1/
 Registry Mirrors:
  https://registry.docker-cn.com/
  https://docker.mirrors.ustc.edu.cn/
  http://hub-mirror.c.163.com/
  https://cr.console.aliyun.com/

~$ sudo docker container run hello-world
显示:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Downloading 
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete 
Digest: sha256:f2266cbfc127c960fd30e76b7c792dc23b588c0db76233517e1891a4e357d519
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

【修改存储默认目录】

docker安装后默认目录是 /var/lib/docker

本例假设一个ntfs分区挂载在/media/Dpan,在该分区根目录下创建目录docker用于存储镜像和容器

~$ cd /media/Dpan
/media/Dpan$ sudo mkdir docker

修改docker.service

~$ sudo nano /usr/lib/systemd/system/docker.service

找到  ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock,这一行后面添加  “--graph 新的目录完整路径”
也就是修改为:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph /media/Dpan/docker

保存退出,重启docker服务使配置生效

~$ sudo systemctl daemon-reload
~$ systemctl restart docker.service

~$ sudo docker info
显示:
……
CPUs: 4
 Total Memory: 3.648GiB
 Name: 
 ID: 555U:WDIL:TGM2:UFKF:6JXM:HN26:534E:LM2X:TXDT:SWNR:4W4N:TO6O
 Docker Root Dir: /media/Dpan/docker
……

或者

$ docker info | grep "Docker Root Dir"

查镜像信息在哪个目录:
~$ sudo du /var/lib/docker
~$ sudo du /media/Dpan/docker

【不用sudo运行】

~$ sudo usermod -aG docker $USER

重启docker服务使配置生效
~$ systemctl restart docker.service

重启系统(如果重启docker服务不行的话)
~$ reboot

【帮助命令】

命令后面加上--help,可以获得帮助,比如:
docker ps --help

【查询命令】

docker images    #查本地镜像

docker search 镜像名称       #查网上的镜像
OFFICIAL [OK]   表示为官方上传的镜像
AUTOMATED [OK]   表示自动构建,非官方的意思
举例:
~$ docker search centos
这种方法只能看到镜像,却不能查到镜像的一些历史版本。
查看镜像历史版本的方法:
方法一:登录https://hub.docker.com,然后在搜索栏输入比如centos,然后点击去看标签
方法二:用curl命令去docker网站上把列表找出来,下面的命令以centos为例子,使用时注意替换两处名称
curl https://registry.hub.docker.com/v1/repositories/centos/tags\
| tr -d '[\[\]" ]' | tr '}' '\n'\
| awk -F: -v image='centos' '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}'

docker ps     #查询本地容器
~$ docker ps   显示正在运行的容器
~$ docker ps -a   显示所有的包括未运行的容器
~$ docker ps -a -s    显示中包含容器大小SIZE
~$ docker ps -n 5   显示最近创建的5个容器
~$ docker ps -a -q    只简单显示ID
STATUS: 容器状态。状态有7种:
    created(已创建)
    restarting(重启中)
    running(运行中)
    removing(迁移中)
    paused(暂停)
    exited(停止)
    dead(死亡)

docker inspect 镜像或者容器名称     #查询某个镜像或者容器的具体配置文件内容
举例:
ps命令查出镜像名称(IMAGE)为hello-world,容器名称(NAMES)为recursing_bell
~$ docker inspect hello-world
~$ docker inspect recursing_bell
这两个查出来的信息是不一样的。

docker top 容器名称    #查询容器内部进程信息

docker stats      #查看运行中的容器的资源占用情况
表达:
docker stats -a   #查看所有
docker stats 容器名称   #查看单个容器情况

【删除命令】

必须先把运行的容器停止才能删除容器,镜像相关的所有容器停止后才能删除镜像。

docker stop 容器名称    #停止运行中的容器
docker kill 容器名称    #杀死运行中的容器
区别:docker stop会做一些“退出前工作”,比如保存状态、处理当前请求等;docker kill中断应用程序直接退出。

docker rm  容器名称    #删除容器
docker rmi  镜像名称    #删除镜像

【运行容器命令】

docker start  容器名称    #启动容器
docker stop 容器名称    #停止运行中的容器
docker restart  容器名称    #重启容器

docker exec -参数 容器名称    #管理容器
参数:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
表达:
docker exec -id  容器名称    #后台管理容器
docker exec -it  容器名称 /bin/bash   #进入虚拟终端命令行管理容器
举例:
~$ docker exec -it mynginx /bin/bash
~$ docker exec -it mynginx bash       #可以简化成bash

【获取镜像】

docker pull 镜像名称:镜像版本标识tag
举例:
~$ docker pull centos
Using default tag: latest       使用最新版本,比如centos8
~$ docker pull centos:7         使用centos7
查看区别
~$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
centos        latest    300e315adb2f   4 months ago   209MB
centos        7         8652b9f0cb4c   5 months ago   204MB

【创建容器】

docker run -参数 镜像名称或ID

run命令的详细用法,可以参考:
https://www.runoob.com/docker/docker-run-command.html
https://www.cnblogs.com/ztxd/p/12346806.html

这个命令非常重要,要根据自己的实际需求来调整参数。
在https://hub.docker.com/上的每个镜像都有作者写的如何安装(How to use this image)中会列明用这个镜像创建容器可能涉及的参数配置。

参数:
①  三个运行相关的参数i、d、t
-i: 以交互模式运行容器,通常与 -t 同时使用
-d: 后台运行容器,并返回容器ID
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
可以合起来用,一般是-d,-idt,-it选一种
②  给容器自定义命名name
--name="自定义容器名"
注意是两个-,还有是英文双引号
③  端口映射大小写P、p
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
举例
~$ docker run -P -d nginx:latest     #随机端口映射,可以通过ps命令查看
~$ docker run -p 8080:80 -d nginx:latest    #指定本地主机的8080端口映射给容器里的80端口
④  主机文件夹指定给容器存储小写v
-v 主机的目录路径:容器的目录路径
举例
~$ docker run -it -v /home/ABC:/home/123 centos
主机的/home/ABC连接到容器里作为/home/123,容器创建时会自动创建该目录
⑤  设置固定IP
--network:bridge(桥接网络)、none(无指定网络)、host(主机网络)
--ip:指定一个ip地址
举例
~$ docker run -itd --name test1 --network bridge --ip 192.168.1.123 centos:latest /bin/bash
⑥  重启Docker后自动重启restart
--restart=always : 开机启动,失败也会一直重启;
--restart=on-failure:10 : 表示最多重启10次
--restart=no:容器退出时,不重启容器
⑦  容器获得root
--privileged=true
⑧  共享内存设定
--shm-size=1g    #设定为共享1GB内存

【修改容器】

如果在运行docker run时设置不合理,需要修改或者添加时就要修改容器文件
~$ sudo systemctl stop docker      #暂停docker服务
~$ cd var/lib/containers/容器id开头的一串数字
进入容器所在的目录,注意如果var/lib/路径修改过的话,换回正确的路径
~$ sudo nano hostconfig.json       #修改配置文件
保存退出后
~$ sudo systemctl restart docker    #重启docker服务
~$ sudo docker start 容器ID或者名字

Ubuntu 安装使用 Docker 记录相关推荐

  1. amd64中Ubuntu安装使用全记录

    年终于过完了,按照计划将使用1个月的Ubuntu安装使用记录做一个完整的总结.前面已经有一篇帖子记录安装方面的东西,这里主要记录软件安装和系统的使用.把这个东西写出来主要是希望国内能有更多人安装和使用 ...

  2. ubuntu安装经常使用记录

    1.将安装文件安装到根目录下 最后需要敲下这个命令 sudo make install 2.编译上一层为 cmake .. ,后 make (-j4) ,运行 ./ 二进制文件 3.查看pcd文件用p ...

  3. ubuntu安装显卡驱动记录(未完待续)

    粘贴他人经验,备忘: 装载自: 华硕天选2,Ubantu18.04,RTX3060显卡驱动安装 补充一些查看指令: 查看当前内核版本 uname -r 查看系统架构 dpkg --print-arch ...

  4. docker ubuntu16.04镜像下安装cowrie蜜罐记录

    宿主主机准备 service docker start docker pull ubuntu:16.04 docker run -i -t --privileged=true -d -p 4489:4 ...

  5. Ubuntu安装Docker引擎和支持HTTPS的docker-registry服务

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1729858 虽然 ...

  6. augustus 软件安装与Docker使用记录

    augustus 软件安装与Docker使用记录 augustus:一基因预测软件: Docker:应用容器引擎,可实现虚拟机. 一. 问题:Github下载的augustus难以正常安装及使用 本机 ...

  7. Ubuntu下通过docker安装wechat

    Ubuntu下通过docker安装微信 一.安装docker sudo apt update sudo apt upgrade sudo apt full-upgrade# 安装证书 sudo apt ...

  8. Ubuntu环境下docker的安装

    Docker 的安装 安装docker 的具体方法,我们可以从docker 的官网得到具体的方法. 链接如下: https://docs.docker.com/engine/install/ubunt ...

  9. ubuntu 安装docker_Docker: 教程04 - (初始化安装之在 Ubuntu 安装Docker CE)

    创建 Ubuntu 运行环境 首先我们需要创建一个 Ubuntu 运行环境,在云环境中,我们创建了一个版本为 "Ubuntu 18.04 Bionic Beaver LTS" ,大 ...

最新文章

  1. QString与string的相互转换
  2. JavaHelp软件的一个定制实用程序类
  3. 入职不到3年,这所C9已有多位“90后”已成副教授!
  4. Windbg 基础命令 《第一篇》
  5. 总体方差的充分统计量_R方是否衡量预测能力或统计充分性?
  6. 银行各类理财收益渐涨 各类宝钱景尚不明朗
  7. Linux学习总结(17)——Linux新手必须学会的12个命令
  8. JavaScript中prompt的使用
  9. matlab页面背景颜色改变为黑底白字
  10. 微信小程序上传照片,限制格式,限制大小,公用方法
  11. C#进阶系列——使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)
  12. 社会生活中十大著名法则
  13. 生物信息学习--nr/nt 数据库(总+子)构建
  14. 微信小程序【渲染层网络层错误】解决方法
  15. 如何拍出来好看的Vlog,必备小技能(六)?
  16. 深入理解Activity的生命周期
  17. Flutter控件——常用控件:按钮
  18. 【可信计算】第九次课:TPM密码资源管理
  19. 云计算大好前途下 头部厂商的激烈博弈
  20. CentOS 使用个人笔记

热门文章

  1. 寒武纪招聘计算机博士,中科寒武纪 AI研发招聘(base 西安)
  2. 大型主机(z/OS系统)编译运行第一个COBOL语言hello world(解决编译时返回码为12问题)
  3. 基于Xilinx公司XPS工具下的一个时钟_Devin_新浪博客
  4. 一灯大师--关于如何进行裸机开发的学习心得
  5. 如何使用HTML5以及CSS3制作美食专题栏目
  6. compose安装pgAdmin+postgis
  7. 2021年全球重型拳击沙袋架收入大约151百万美元,预计2028年达到187.8百万美元
  8. LeetCode 31. 下一个排列 Next Permutation
  9. [从头学绘画] 第15节 六十四式八卦掌 (25-32)
  10. 颠覆传统考勤 刷脸打卡更省心