docker安装和使用

thinheader thinheader     2022-12-21     430

关键词:

1,Docker安装

Docker是啥,以及其与虚拟机的对比,就不介绍了,网上有很多资源可以学习和了解。 
本篇文章重点介绍Docker的安装和测试使用。

  • Docker的安装,分为离线安装和在线安装两种方式,方便不同的应用场景使用不同的安装方式。
  • 关于Docker的测试使用,本文会介绍如何运行Docker容器、如何修改Docker容器,以及如何完成Docker容器到Docker镜像的转化。

1.1,docker离线安装

很简单,从官网下载最新的docker离线安装包,并安装。

# wget https://apt.dockerproject.org/repo/pool/main/d/docker-engine/docker-engine_17.05.0~ce-0~ubuntu-trusty_amd64.deb
# wget http://archive.ubuntu.com/ubuntu/pool/main/libt/libtool/libltdl7_2.4.6-0.1_amd64.deb
# dpkg -i *.deb

 

1.2,docker在线安装

通过apt-get安装

# cat /etc/issue
Ubuntu 14.04.5 LTS 
 l
# uname -r
4.4.0-81-generic
# sudo apt-get update # 更新系统资源列表
# apt-get -y install docker.io  # 安装docker
# docker -v # 查看docker版本信息
Docker version 1.6.2, build 7c8fca2

 

通过daocloud安装docker

# curl -sSL https://get.daocloud.io/docker | sh
# docker -v
Docker version 17.06.0-ce, build 02c1d87

 

通过阿里云的镜像仓库安装docker

# curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
# docker -v
Docker version 17.05.0-ce, build 89658be

 

1.3,执行docker,验证docker是否安装成功

# docker
Usage:  docker COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -D, --debug              Enable debug mode
      --help               Print usage
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

 

1.4,用户权限修改

安装成功之后,需要使用root用户才能执行docker命令。 
如果希望用非root用户执行docker命令,可以执行以下语句。 
注意:执行完成后,需要退出再登陆才能生效。

# sudo usermod -aG docker $your-user
  • 1

2,术语介绍

Docker有仓库Repositories、镜像Images和容器Container三大核心,三者可以互相转化。

  • Docker,平台工具、守护进程
  • Image,镜像,包括应用及系统的只读数据包
  • Container,容器,虚拟机的运行实例
  • Registry,仓库登记,管理镜像文件
  • Docker hub,Docker官方公有仓库

三大核心的关系,如下图所示:

技术分享图片

3,创建镜像

Docker镜像的创建方式有两种,分别是:

  • 基于现有的镜像修改
  • 直接创建新镜像

本文介绍基于已有的镜像修改的方式,一共分为五步。

3.1,第一步,下载官网的基础镜像

从官网上pull镜像hello-world,并运行

[email protected]:/home/kevin/docker# docker run hello-world
Unable to find image ‘hello-world:latest‘ locally
latest: Pulling from library/hello-world
b04784fba78d: Pull complete 
Digest: sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f
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.
 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://cloud.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

 

从官网上pull镜像ubuntu,并以交互方式运行

root@apple:/home/kevin/docker# docker run -it ubuntu bash
Unable to find image ‘ubuntu:latest‘ locally
latest: Pulling from library/ubuntu
e0a742c2abfd: Pull complete 
486cb8339a27: Pull complete 
dc6f0d824617: Pull complete 
4f7a5649a30e: Pull complete 
672363445ad2: Pull complete 
Digest: sha256:84c334414e2bfdcae99509a6add166bbb4fa4041dc3fa6af08046a66fed3005f
Status: Downloaded newer image for ubuntu:latest
root@93a1b9d39683:/#
root@93a1b9d39683:/#
root@93a1b9d39683:/#
root@93a1b9d39683:/#
root@93a1b9d39683:/#

 

3.2,第二步,在CONTAINER中执行软件的安装

安装Linux基础软件

在第一步的基础上,在容器里面,用root用户执行Linux基础软件的安装。

root@93a1b9d39683:/home# apt-get update      
Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]                                         
Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
Get:3 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB]
Get:4 http://security.ubuntu.com/ubuntu xenial-security/universe Sources [42.0 kB]
Get:5 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [384 kB]
Get:6 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB]
Get:7 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB]
Get:8 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [12.8 kB]                                                                                
Get:9 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [178 kB]                                                                                   
Get:10 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [2931 B]                                                                                
Get:11 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB]                                                                                               
Get:12 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB]                                                                                         
Get:13 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [9827 kB]                                                                                           
Get:14 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages [176 kB]                                                                                          
Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/universe Sources [207 kB]                                                                                           
Get:16 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [742 kB]                                                                                        
Get:17 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 Packages [13.3 kB]                                                                                 
Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [640 kB]                                                                                    
Get:19 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages [16.8 kB]                                                                                 
Get:20 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages [4930 B]                                                                                      
Get:21 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [6237 B]                                                                                  
Fetched 24.2 MB in 12min 34s (32.1 kB/s)                                                                                                                                   
Reading package lists... Done

root@93a1b9d39683:/home# apt-get install vim 
root@93a1b9d39683:/home# apt-get install curl
root@93a1b9d39683:/home# apt-get install openssh-server 
root@93a1b9d39683:/home# apt-get install python 

# 安装ifconfig、netstat
root@93a1b9d39683:/home# apt-get install net-tools

# 安装ping
root@93a1b9d39683:/home# apt-get install iputils-ping

 

退出CONTAINER

  • ctrl+d,退出容器且关闭,docker ps查看容器已退出运行(Exited)
  • ctrl+p,ctrl+q,退出容器但不关闭,docker ps查看容器依然处于Up状态

3.3,第三步,将CONTAINER保存为IMAGE

查看容器列表

root@apple:/home/kevin/docker# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
966bd52b72da        ubuntu              "/bin/sh -c ‘while..."   3 hours ago         Exited (137) 2 hours ago                       stupefied_knuth
568e5204fff3        ubuntu              "/bin/sh -c ‘while..."   4 hours ago         Exited (137) 2 hours ago                       kind_khorana
00f561d97811        ubuntu              "/bin/echo hello w..."   4 hours ago         Exited (0) 4 hours ago                         nifty_mcnulty
93a1b9d39683        ubuntu              "bash"                   4 hours ago         Up 3 hours                                     zealous_noether
abdc084f9821        hello-world         "/hello"                 4 hours ago         Exited (0) 3 hours ago                         sleepy_clarke
51097978fdc6        hello-world         "/hello"                 4 hours ago         Exited (0) 3 hours ago                         vibrant_panini

 

查看镜像列表

root@apple:/home/kevin/docker# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              14f60031763d        3 days ago          120MB
hello-world         latest              1815c82652c0        5 weeks ago         1.84kB

 

保存容器到镜像

[email protected]:/home/kevin/docker# docker commit 93a1b9d39683 learn/visual_init:v1
sha256:56a4eab7dc5b9c1b0dca010e36f4e792963a213ad4b362ab4662602eb66f0216

==============
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]Create a new image from a container‘s changes

  -a, --author=""     Author (e.g., "John Hannibal Smith <[email protected]>")
  -m, --message=""    Commit message
  -p, --pause=true    Pause container during commit
==============

 

查看镜像列表

root@apple:/home/kevin/docker# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
learn/visual_init   v1                  56a4eab7dc5b        39 seconds ago      321MB
ubuntu              latest              14f60031763d        3 days ago          120MB
hello-world         latest              1815c82652c0        5 weeks ago         1.84kB

 

附,容器的常用操作

root@apple:/home/kevin/docker# docker attach $CONTAINER_ID #连接一个已存在的docker容器
root@apple:/home/kevin/docker# docker stop $CONTAINER_ID #停止docker容器
root@apple:/home/kevin/docker# docker start $CONTAINER_ID #启动docker容器
root@apple:/home/kevin/docker# docker restart $CONTAINER_ID #重启docker容器
root@apple:/home/kevin/docker# docker kill $CONTAINER_ID #强制关闭docker容器
root@apple:/home/kevin/docker# docker logs $CONTAINER_ID #查看docker容器运行日志,确保正常运行
root@apple:/home/kevin/docker# docker inspect $CONTAINER_ID #查看container的属性,比如ip等等
root@apple:/home/kevin/docker# docker rm $CONTAINER_ID      # 删除容器

 

3.4,第四步,将IMAGE上传到仓库,或者保存为本地离线文件

push image到阿里云的私有镜像仓库

# docker login [email protected] registry.cn-beijing.aliyuncs.com
# docker tag 56a4eab7dc5b registry.cn-beijing.aliyuncs.com/zhangsp/aiwen:visual_init
# docker push registry.cn-beijing.aliyuncs.com/zhangsp/aiwen:visual_init

 

上传成功,如下图所示

技术分享图片

保存docker image为本地文件,然后,可以在其他机器上还原使用

root@apple:/home/kevin# docker images
REPOSITORY                                       TAG                 IMAGE ID            CREATED             SIZE
learn/visual_init                                v1                  56a4eab7dc5b        3 minutes ago       321MB
registry.cn-beijing.aliyuncs.com/zhangsp/aiwen   visual_init         56a4eab7dc5b        3 minutes ago       321MB
ubuntu                                           latest              14f60031763d        3 days ago          120MB
hello-world                                      latest              1815c82652c0        5 weeks ago         1.84kB

# 将docker image保存为离线的本地文件,执行docker save image_name > ./save.tar 或者 docker save -o filepath image_name
root@apple:/home/kevin/docker# docker save -o visual_init.tar 56a4eab7dc5b
root@apple:/home/kevin/docker# ll
total 344956
drwxrwxr-x  2 kevin kevin      4096 Jul 24 08:14 ./
drwxr-xr-x 14 kevin kevin      4096 Jul 24 03:07 ../
-rw-rw-r--  1 kevin kevin  19182004 May  5 13:03 docker-engine_17.05.0~ce-0~ubuntu-trusty_amd64.deb
-rw-rw-r--  1 kevin kevin     38292 Feb  7  2016 libltdl7_2.4.6-0.1_amd64.deb
-rw-------  1 root           root           333993472 Jul 24 08:13 visual_init.tar

 

3.5,第五步,在其他机器上还原IMAGE测试使用

  • 加载一个docker镜像文件,执行docker load -i filepath 或者 docker load < ./save.tar
  • 执行docker pull 或者 docker run,运行仓库的image镜像
aiwen@703:~$ docker pull registry.cn-beijing.aliyuncs.com/zhangsp/aiwen:visual_init
visual_init: Pulling from zhangsp/aiwen
e0a742c2abfd: Pull complete 
486cb8339a27: Pull complete 
dc6f0d824617: Pull complete 
4f7a5649a30e: Pull complete 
672363445ad2: Pull complete 
6f2c8900b1ea: Pull complete 
Digest: sha256:faf4284d0980958df3c10c49efcc09a041dc894edd54e29304fb7fbe97c674dc
Status: Downloaded newer image for registry.cn-beijing.aliyuncs.com/zhangsp/aiwen:visual_init
  • 备注:导入IMAGE之后,可以通过docker tag命令对IMAGE打标签
kevin@orange:~/docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>              <none>              293e064b491b        24 hours ago        321.2 MB
kevin@orange:~/docker$ docker tag 293e064b491b aiwen/learn:v1
kevin@orange:~/docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
aiwen/learn         v1                  293e064b491b        24 hours ago        321.2 MB

4,参考页面














各平台安装和使用docker的差异

在Mac上运行Docker使用DockerforMac系统要求开启虚拟化的硬件支持,可以通过命令来检查:sysctlkern.hv_supportOSX10.10.3或者更高版本至少4G内存安装最新DockerforMac点击下载安装下载的docker.dmg文件安装完成后,启动docker使用镜像加速地址使... 查看详情

docker安装和基本使用

centos6安装dockersudo yum install docker-io sudo service docker start sudo chkconfig docker on  报错Docker#dockerdeadbutpidfileexists错误查看/v 查看详情

docker安装和使用

安装docker先看下centos版本[[email protected]~]#uname-r3.10.0-514.21.2.el7.x86_64 第一个命令,下载wget-qO-https://get.docker.com/|sh 下载完后,docker默认情况是允许root去运行,所有建议添加一个用户到docker组先查看用户组cat/etc/group  查看详情

[转]docker和rancher的安装与基本使用

本文转自:https://blog.csdn.net/wangshouhan/article/details/80405672一.Docker1.CentOS下Docker安装安装$yum-yinstalldocker-io查看docker版本$dockerversion启动docker$servicedockerstart以上都没问题表示docker安装成功。2.docker基础命令#查看doc 查看详情

mac下docker安装和使用(代码片段)

环境说明操作系统:macOSHighSierraDocker版本:docker内容摘要:Docker安装直接访问docker官网,下载dockerCE版本进行安装https://store.docker.com/editions/community/docker-ce-desktop-macdocker默认的本地镜像时存在当前用户目录下的,为了方便管理,... 查看详情

centos7上docker的安装和基本使用

Centos7上Docker的相关操作Docker的安装1、检查内核版本docker使用linux的内核必须是3.10以上,首先需要#uname-r 2、使用yum安装docker#yuminstalldocker3、启动&停止重启:#systemctlrestartdocker停止:#systemctlstopdocker启动:#systemctlstartdocker开机自... 查看详情

docker的安装和使用说明——dockerforwindows

一、Docker安装1.1官方方法官方下载页面:http://www.docker.com/products/docker#/windows官方下载地址:https://download.docker.com/win/stable/InstallDocker.msi1.2推荐方法:1.2.1DockerToolbox官方地址:http://www.docker.com/products/docke 查看详情

docker的安装和使用说明——dockerforwindows

一、Docker安装1.1官方方法官方下载页面:http://www.docker.com/products/docker#/windows官方下载地址:https://download.docker.com/win/stable/InstallDocker.msi1.2推荐方法:1.2.1DockerToolbox官方地址:http://www.docker.com/products/docke 查看详情

docker安装和使用(代码片段)

安装docker1.卸载旧版本sudoapt-getremovedockerdocker-enginedocker.iocontainerdrunc2.更新apt包索引sudoapt-getupdate3.安装apt依赖包sudoapt-getinstallapt-transport-httpsca-certificatescurlgnupg-agentsoftware-properties-co 查看详情

docker的安装和使用(附带详细docker命令)(代码片段)

Docker的安装移除旧版本(视情况而定):$sudoyumremovedockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotatedocker-logrotatedocker-selinuxdocker-engine-selinuxdocker-engine更新yum(centos 查看详情

docker buildkit 是不是可以与已安装的 docker.sock 和 docker compose 一起使用?

】dockerbuildkit是不是可以与已安装的docker.sock和dockercompose一起使用?【英文标题】:Doesdockerbuildkitworkwithamounteddocker.sockanddockercompose?dockerbuildkit是否可以与已安装的docker.sock和dockercompose一起使用?【发布时间】:2021-12-1506:01:45【问... 查看详情

docker-compose介绍,安装和使用(代码片段)

Docker-Compose介绍有时候运行一个镜像需要大量的参数,可以通过Docker-Compose编写这些参数.而且Docker-Compose可以版主我们批量管理容器,这些信息值需要通过一个docker-compose.yml文件去维护即可下载并安装Docker-Compose下载Docker-Compose去githu... 查看详情

docker安装与使用相关

之前docker没有系统整理,现在经常会重新安装docker,部署docker环境,进行重启的创建和操作,下面进行记录和备忘:安装docker-ce:现在常用的docker版本为docker-ce为docker社区版;官方提供的文档已经很简洁;https://docs.docker.com/engine... 查看详情

使用 docker 和 openfoam 在 /mnt 上安装 sdb

】使用docker和openfoam在/mnt上安装sdb【英文标题】:mountingsdbon/mntusingdockerandopenfoam【发布时间】:2017-05-2908:01:18【问题描述】:我最近在2016年10月在此站点上发现了题为“如何在openFOAM的docker版本中挂载卷”的帖子。该帖子自动询... 查看详情

使用docker安装elasticsearch和kibana(代码片段)

使用Docker安装安装ES【先读官方文档!!!】拉取镜像dockerpullelasticsearch:7.6.1创建网络dockernetworkcreateelastic加上内存限制启动ESdockerrun-d--namees01-test--netelastic-p9200:9200-p9300:9300-e"discovery.type 查看详情

使用docker安装elasticsearch和kibana(代码片段)

使用Docker安装安装ES【先读官方文档!!!】拉取镜像dockerpullelasticsearch:7.6.1创建网络dockernetworkcreateelastic加上内存限制启动ESdockerrun-d--namees01-test--netelastic-p9200:9200-p9300:9300-e"discovery.type 查看详情

2docker基础安装和基础使用(代码片段)

基础环境本次环境使用Centos7.x版本系统,最小化安装,系统基础优化配置请查看Centos7.x系统基础优化安装使用命令:yuminstalldocker-io-y[[email protected]~]#yuminstalldocker-io-yLoadedplugins:fastestmirrorLoadingmirrorspeedsfromcachedhostfile*base 查看详情

云原生之docker-compose篇docker-compose工具的安装和基本使用

【云原生之docker-compose篇】docker-compose工具的安装和基本使用一、docker-compose介绍1.docker-compose简介2.docker-compose的特点二、docker-composev1版本的安装1.下载docker-compose二进制包2.给文件增加执行权限3.检查docker-compose版本三、docker-compose... 查看详情