栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker安装和使用指令(新手入门,非常全)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker安装和使用指令(新手入门,非常全)

一、基本概念
  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04
    就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
二、安装

跟据系统版本和CPU架构选择适合自己的教程,我参考Ubuntu18.04 arm 安装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 lsb-release

添加Docker官方GPG密匙

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

设置稳定仓库 (arm64) 此处将download.docker.com 更换为了mirrors.ustc.edu.cn/docker-ce
解决了doceker-ce镜像下载太慢导致多次下载不成功的问题!

echo "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

测试运行

sudo docker run hello-world

测试运行是虽然出现了hello world,但是上面有一段提示:

Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: x509: certificate is valid for www.doctorcom.com, not registry-1.docker.io.
See 'docker run --help'.

我参考这边blogs解决了这个问题:docker安装踩坑:Unable to find image ‘hello-world:latest‘ locally
解决办法:
切换国内阿里云镜像,创建daemon.json文件

vim /etc/docker/daemon.json

在后面添加

 { 
 "registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"] 
 }

重启docker

systemctl restart docker
systemctl status docker

这样能解决Unable to find image ‘hello-world:latest‘ locally的bug

三、docker指令

查看docker指令帮助

docker

查看docker版本

docker -v

启动docker

sudo service docker start

停止docker

sudo service docker stop

重启docker

sudo service docker restart

创建docker组

docker groupadd docker

将用户加入docker group,${USER}可以为系统任意用户名

sudo gpass -a ${USER} docker

重启docker服务,然后更新用户组

newgrp docker

经过上述操作就可以用${USER}操作docker,不必每次在指令前添加sudo

四、镜像image指令

1、管理和使用本地 Docker 主机镜像
2、创建镜像
列出本地主机上的镜像

nvidia@nvidia-master:~$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
ubuntu        latest    38af2b009885   2 hours ago   69.2MB
hello-world   latest    46331d942d63   4 weeks ago   9.14kB

参数说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像
拉取ubuntu的image:注意,如果不指定版本,pull到的image TAG为latest即最新版本。

docker pull ubuntu

获取指定版本image

docker pull ubuntu:18.04
nvidia@nvidia-master:~$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
ubuntu        latest    38af2b009885   2 hours ago   69.2MB
ubuntu        18.04     be0b1fd80f43   2 hours ago   56.7MB
hello-world   latest    46331d942d63   4 weeks ago   9.14kB

可以看到多了一个TAG为18.04的ubuntu image
查看可以pull的image

nvidia@nvidia-master:~$ docker search ubuntu
NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                           Ubuntu is a Debian-based Linux operating sys…   14103     [OK]       
websphere-liberty                WebSphere Liberty multi-architecture images …   283       [OK]       
ubuntu-upstart                   DEPRECATED, as is Upstart (find other proces…   112       [OK]       
neurodebian                      NeuroDebian provides neuroscience research s…   88        [OK]       
open-liberty                     Open Liberty multi-architecture images based…   52        [OK]       
ubuntu-debootstrap               DEPRECATED; use "ubuntu" instead                46        [OK]       

参数说明:
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建

删除镜像

docker rmi hello-world

如果当前有用该镜像生成的容器,会报bug

Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 687920e38e31 is using its referenced image 46331d942d63
# 来自守护进程的错误响应:冲突:无法删除46331d942d63(必须强制) - 映像在多个存储库中被引用

两种办法,一种是先删除相应的container

nvidia@nvidia-master:~$ docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED             STATUS                      PORTS     NAMES
4463bd4f377d   ubuntu:18.04   "/bin/bash"   20 minutes ago      Exited (0) 20 minutes ago             youthful_payne
78b8521fa098   ubuntu         "/bin/bash"   About an hour ago   Up About an hour                      dreamy_morse
627a12a07819   hello-world    "/hello"      17 hours ago        Exited (0) 17 hours ago               frosty_saha
nvidia@nvidia-master:~$ docker rm -f 627
627
nvidia@nvidia-master:~$ docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:10d7d58d5ebd2a652f4d93fdd86da8f265f5318c6a73cc5b6a9798ff6d2b2e67
Deleted: sha256:46331d942d6350436f64e614d75725f6de3bb5c63e266e236e04389820a234c4
Deleted: sha256:efb53921da3394806160641b72a2cbd34ca1a9a8345ac670a85a04ad3d0e3507

第二种办法,强制删除

nvidia@nvidia-master:~$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    38af2b009885   2 hours ago   69.2MB
ubuntu       18.04     be0b1fd80f43   2 hours ago   56.7MB
nvidia@nvidia-master:~$ docker image rmi -f be0
Untagged: ubuntu:18.04
Untagged: ubuntu@sha256:43d8a96ef9acfbec2da181adc3b72ff1f30a555716c717e4a722b5031fa3d83e
Deleted: sha256:be0b1fd80f43f89668ff30071f506582440ac60fdcbe254b5f22a63da42ab3b2
nvidia@nvidia-master:~$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    38af2b009885   2 hours ago   69.2MB
五、容器container指令

启动container

docker start containerID

后台运行container

docker run -itd --name ubuntu-test ubuntu /bin/bash

新建container

docker run -it ubuntu /bin/bash

参数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: 代表ubuntu镜像。
/bin/bash:放在镜像名后的是命令,建立一个交互式 Shell,因此用的是 /bin/bash。

退出container

exit

停止container

docker stop containerID

查看所有container

docker ps -a

进入容器,两种方法:attach和exec,如果希望退出容器后,容器后台运行,用exec
docker attach:退出容器,容器停止

docker attach containerID

docker exec:退出容器,容器不停止

docker exec -it containerID /bin/bash

删除容器

docker rm -f containerID

导入容器这块暂时没用到,用到再回来添加。

docker export 1e560fca3906 > ubuntu.tar
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/825513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号