docker系列一安装 有更新!

 
评论 • 100 浏览

docker安装步骤及常用命令

这里使用docker-ce版本。社区免费版。

docker安装

1. 卸载docker,防止docker已经安装

sudo yum remove docker
没有安装的话会提示:

 Loaded plugins: fastestmirror
 Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
 No Match for argument: docker
 No Packages marked for removal
2.使用yum安装
sudo yum install docker-ce

有可能会提示没有可用软件包。

Loaded plugins: fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base                                                          | 3.6 kB  00:00:00     
epel                                                          | 4.7 kB  00:00:00     
extras                                                        | 3.4 kB  00:00:00     
updates                                                       | 3.4 kB  00:00:00     
(1/7): epel/x86_64/group_gz                                   |  88 kB  00:00:00     
(2/7): base/7/x86_64/group_gz                                 | 166 kB  00:00:00     
(3/7): epel/x86_64/updateinfo                                 | 985 kB  00:00:00     
(4/7): extras/7/x86_64/primary_db                             | 187 kB  00:00:00     
(5/7): updates/7/x86_64/primary_db                            | 3.4 MB  00:00:00     
(6/7): base/7/x86_64/primary_db                               | 6.0 MB  00:00:00     
(7/7): epel/x86_64/primary_db                                 | 6.7 MB  00:00:00     
Determining fastest mirrors
No package docker-ce available.
Error: Nothing to do

这个时候需要安装必要的软件依赖及更新增加docker-ce yum源。
1.安装必要依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2.加载docker-ce的yum源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.再次安装docker

sudo yum install docker-ce
3.使用脚本安装

注意:使用脚本是一般在测试或开发环境中Docker官方为了简化安装步骤。和yum源选其一安装即可。

1.下载脚本

curl -fsSL https://get.docker.com -o get-docker.sh

2.运行脚本

sudo sh get-docker.sh --mirror Aliyun
4.启动Docker CE
systemctl start docker

将docker加入开机启动

systemctl  enable docker

重启docker

systemctl restart docker

查看docker信息

docker info

或者

docker --version
5.建立docker用户组

一般在生产环境中,不使用root用户,而docker命令需要docker组的用户才能访问docker引擎的Unix socket。所以一般建立docker 用户并且加入docker组。

1.添加docker组

groupadd docker

2.将当前用户加入docker组

sudo usermod -aG docker $USER
6.测试docker是否安装正确
docker run hello-world

打印出Hello from Docker!即为正常。

6.删除docker安装包

1.删除docker安装包

sudo yum remove docker-ce

2.删除docker镜像

sudo rm -rf /var/lib/docker
7.centos配置镜像加速

国内加速器服务

  • Docker官方的中国registry mirror
  • 阿里云加速器
  • DaoCloud加速器
  • 163加速器

这里使用网易演示
对于使用systemd的系统,请在/etc/docker/daemon.json中写入下内容
(不存在请新建)

{
“registry-mirrors”:[
“https://ziemv5xm.mirror.aliyuncs.com”
]
}

重启服务生效

sudo systemctl daemon-reload 

sudo systemctl restart docker
8.docker删除镜像及容器

查看实例

docker ps -a

删除实例

docker rm -f 示例id

删除镜像

docker rmi 镜像

docker常用命令

docker镜像操作

1.获取镜像

从docker镜像仓库获取镜像的命令时docker pull。其命令格式为:

docker pull [选项] [Docker Registry 地址:端口/]仓库名[:标签]

具体选项通过docker pull –help命令看到。
docker镜像仓库地址:一般是<域名/ip>[:端口号]。
默认地址是Docker Hub。
仓库名:如之前所说,这里的仓库名是两段式名称,即<用户名>/<软件名>。对于Docker Hub,如果不给出用户名,则默认为library,也就是官方镜像。

docker pull ubuntu:16.04

上述命令没有给出Docker镜像仓库地址,因此将会从Docker官方拉取library/ubuntu仓库中标签为16.04的镜像。

ps:如果遇到以下错误

Error response from daemon: pull access denied for unbuntu, repository does not exist or may require 'docker login'

请乖乖去docker hub官网注册一下。
然后登陆一下:

[root@iz2ze69bx00tfe97qzk0lvz ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: wangqianjun
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

类似我这样。
然后拉取。
(事后发现,是我名字敲错了。。捂脸。。我敲成了unbuntu)

2.运行镜像
[root@iz2ze69bx00tfe97qzk0lvz ~]# docker run -it --rm ubuntu:16.04 bash

-it是两个参数,一个是-i:交互式操作,一个是-t终端。
–rm:这个参数说明容器退出后随之将其删除。
ubuntu:16.04:指定镜像。
bash:放在镜像后面的是命令,这里我们希望有个交互式的shell,因此用的bash。

可以看到如下:

 root@66fee9ac066a:/# ls
 bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
 boot  etc  lib   media  opt  root  sbin  sys  usr
 root@66fee9ac066a:/# exit
 exit

证明我们的ubuntu镜像启动成功。然后执行exit退出,退出成功。

3.列出镜像

列出已经下载下来的镜像。docker image ls/docker images

[root@iz2ze69bx00tfe97qzk0lvz ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               9361ce633ff1        5 weeks ago         118MB
hello-world         latest              fce289e99eb9        3 months ago        1.84kB

查看镜像、容器、数据卷所占用的空间。docker system df

[root@iz2ze69bx00tfe97qzk0lvz ~]# docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              2                   1                   117.6MB             117.6MB (99%)
Containers          1                   0                   0B                  0B
Local Volumes       0                   0                   0B                  0B
Build Cache         0                   0                   0B                  0B

查看虚悬镜像。docker image ls -f dangling=true
虚悬镜像,仓库名、标签均为 的镜像。

[root@iz2ze69bx00tfe97qzk0lvz ~]# docker image ls -f dangling=true
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
<none>              <none>              d5870ab8abe0        About a minute ago   118MB

虚悬镜像一般没有价值,可以删除。docker image prune 可以删除所有虚悬镜像。

[root@iz2ze69bx00tfe97qzk0lvz ~]# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:d5870ab8abe094600c2c951d8a972db9d99a00315d66075a4f055be2ca3300b2

Total reclaimed space: 0B
4.删除本地镜像

如果要删除本地的镜像,可以使用docker image rm。格式为:

docker image rm [选项] <镜像1> [<镜像2>...] 

其中,<镜像>可以是镜像短ID、镜像长ID、镜像名或者镜像摘要。
如:

[root@iz2ze69bx00tfe97qzk0lvz ~]# docker image rm -f hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:92695bc579f31df7a63da6922075d0666e565ceccad16b59c3374d2cf4e8e50e
Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e

使用docker image ls -q来配合docker image rm,这样可以批量删除希望删除的镜像。

docker image rm $(docker image ls -q ubuntu ) #删除所有仓库名为ubuntu的镜像

或者删除所有在ubuntu:16.04之前的镜像:

docker image rm $(docker image ls -q -f before=unbuntu:16.04)

docker容器操作

容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他操作系统环境)和泡在上面的应用。

1.启动容器

启动容器有两种,一种是基于镜像新建一个容器并且启动,另外一个是将在终止状态(stopped)的容器重新启动。
docker的容器是轻量级的,用户可以随时删除和创建新容器。

  • 新建并启动

docker run
如输入一个"Hello World",之后终止容器。

[root@iz2ze69bx00tfe97qzk0lvz ~]# docker run ubuntu:16.04 /bin/echo 'Hello world'
Hello world
  • 启动已终止的容器

docker container start 或者docker start

[root@iz2ze69bx00tfe97qzk0lvz ~]# docker run -ti ubuntu:16.04 /bin/bash

-t让docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。
当用docker run来创建容器时,docker在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并且启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中
  • 从地址池配置一个ip地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

后台启动
使用-d参数

docker run -d hello-world 
2.停止运行的容器

终止一个运行中的容器

docker container stop <id>

终止状态的容器查看

docker container ls -a

处于终止态的容器重启

docker container start <id>

运行态容器重启

docker container restart <id>

进入容器

exec 命令 -i -t参数
docker exec 后面可以跟随多个参数。这里主要用-i -t。

[root@iz2ze69bx00tfe97qzk0lvz ~]# docker exec -it 78c24d59c676 /bin/bash
root@78c24d59c676:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

导出和导入容器

  • 导出容器

导出本地的某个容器,可以使用docker export命令
docker export 容器ID > 导出文件名.tar

docker export 78c24d59c676 > test.zip
  • 导入容器

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

cat 导出文件名.tar|docker import - 镜像用户/镜像名:镜像版本

也可以指定url或者某个目录来导入

docker import http://xxx/xxx/image.tgz   example/imgrepo

下面示例如何导出容器,然后重新导入镜像

[root@iz2ze69bx00tfe97qzk0lvz ~]# docker export 78c24d59c676 > test.zip
[root@iz2ze69bx00tfe97qzk0lvz ~]# ls
Dockerfile  env.txt  sa_recovery.log  sa_recovery.log.bak  test.zip
[root@iz2ze69bx00tfe97qzk0lvz ~]# cat test.zip | docker import - wangqianjun/ubuntu:1.0
sha256:c974b3359d38373e7efa855451b7e6358dc6574425107a5e119d2af547d4beda
[root@iz2ze69bx00tfe97qzk0lvz ~]# docker image ls
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
wangqianjun/ubuntu   1.0                 c974b3359d38        21 seconds ago      85.9MB
ubuntu               16.04               9361ce633ff1        5 weeks ago         118MB

删除容器

可以使用docker container rm来删除一个处于终止状态的容器。

docker container rm <id>

如果要删除一个运行中的容器,可以添加-f参数。Docker会发送SIGKILL给容器。

使用prune来删除所有处于终止状态的容器。

docker container prune 
评论
validate