Docker安装教程

Docker安装教程

CentOS Docker安装

1)更新包

-- yum包更新到最新
sudo yum update

2)设置仓库

安装所需的软件包,yum-utils提供了yum-config-manager ,并且device mapper存储驱动程序需要device-mapper-persistent-data和lvm2

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

设置yum源为阿里云

sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3)安装Docker社区版

方式一:简单安装

sudo yum install docker-ce

方式二:安装最新版本的Docker Engine-Community和containerd

sudo yum install docker-ce docker-ce-cli containerd.io

方式三:安装特定版本的Docker Engine-Community

先列出并排序您存储库中可用的版本,此示例按版本号(从高到低)对结果进行排序。

yum list docker-ce --showduplicates | sort -r

通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

4)查看Docker版本

docker -v

5)卸载Docker

-- 查看docker安装过的包
yum list installed | grep docker

-- 卸载docker
yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y

6)设置ustc下载镜像

ustc是老牌的Linux镜像服务提供者,它的docker镜像加载速度很快

-- 编辑文件
vi /etc/docker/daemon.json

-- 在文件中设置
{
    "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

7)启动和关闭Docker

-- 启动
systemctl start docker

-- 关闭
systemctl stop docker

-- 重启
systemctl restart docker

-- 设置开机启动
systemctl enable docker

-- 查看docker信息和帮助文档
$ docker info
$ docker --help

-- 查看状态
systemctl status docker

状态展示如下:

1589615304760

8)镜像相关命令

查看镜像

docker images

REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

镜像展示如下:

1589616247812

搜索镜像

docker search jdk8(这是镜像名称)

NAME:仓库名称
DESCRIPTION:镜像描述
STARS:星级,即镜像受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像是由Docker Hub自动构建流程创建的

搜索结果如下:

1589617430263

拉取、下载镜像

docker pull ascdc/jdk8 (这是镜像仓库+名称)

-- 如果要设置镜像标签(TAG),则冒号+版本号,默认为latest,表示最终版本
docker pull ascdc/jdk8:8

删除镜像

docker rmi 2e7780388817 (镜像ID)

-- 如果要删除所有镜像,则(下面不是单引号,是esc下面那个键)
docker rmi `docker images -q`

如果删除镜像报:Error response from daemon: conflict: unable to delete 6ec9a5a0fc9f (cannot be forced) - image has dependent child images这样的错误,原因是有另外的image FROM了这个image,可以使用下面的命令列出所有在指定image之后创建的image的父image:

docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=xxxxxx)

其中 xxxxxx 是报错 image 的 id,从列表中查找到之后就可以核对并删除这些 image。 

如果删除镜像报:Error response from daemon: conflict: unable to delete d0957ffdf8a2 (must be forced) - image is referenced in multiple repositories是因为有多个镜像的IMAGE ID是相同的,可以使用REPOSITORY+TAG的方式去删除;如下:

docker rmi centos:centos6

centos:镜像名称
centos6:tag标签名称,是默认值latest的话可以不写

9)容器相关命令

镜像相当于模板,一个镜像可以创建多个容器

查看正在运行的容器

docker ps

查看所有创建的容器

docker ps -a

查看最后一次运行的容器

docker ps -l

查看停止的容器

docker ps -f status=exited

创建并启动容器

docker run

-i:表示运行容器。
-t:表示容器启动后会进入其命令行,加入-it这2个参数之后,容器创建就能登录进去,即分配一个伪终端。
--name:为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口,可以使用多个-p做多个端口映射。

-- 交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
-- 如果版本为latest,则可省略
docker run -it --name=nginx nginx /bin/bash

-- 守护式方式创建容器
docker run -di --name=容器名称 镜像名称:标签
docker run -di --name=nginx2 nginx
-- 登录守护式容器方式
docker exec -it 容器名称(或者容器ID)/bin/bash
docker exec -it nginx2 /bin/bash

交互式方式举例:

1589620466899

创建完成之后就进入到了该容器之中,退出命令使用exit即可,退出之后则容器停止。

守护式方式举例,如下创建同一个nginx镜像的守护式容器,说明一个镜像可以创建多个容器,只要名字不设置重复,IMAGES才是容器名称,IMAGE是镜像,前面那个ID就是容器ID,STATUS状态为up则表示正在运行:

1589621341878

使用exit退出容器,查看正在运行容器发现这个容器还在运行,这就是守护式和交互式的区别。

启动和关闭容器

-- 启动容器
docker start 容器名称或容器ID

-- 停止容器
docker stop 容器名称或容器ID

-- 启动所有容器
docker start $(docker ps -a -q)

-- 停止所有容器
docker stop $(docker ps -a -q)

拷贝文件

-- 拷贝到容器
docker cp 需要拷贝的文件或目录 容器名称:容器目录
docker cp 1.txt nginx:/usr/local

-- 从容器拷出到当前目录,并修改为2.txt
docker cp 容器名称:文件路径 需要拷贝到的目录+文件名称
docker cp nginx:/usr/local/1.txt 2.txt

目录挂载

在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样就可以通过修改宿主机某个目录的文件从而去修改容器文件。

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=nginx3 nginx

如果是多级目录,可能会出现权限不足的情况,这是服务器把权限禁止了,需要添加--privileged=true来解决该问题。

查看容器IP

-- 查看容器所有信息
docker inspect 容器名称或容器ID

-- 查看IP
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称或容器ID

删除容器

注意:无法删除正在运行的容器,如果删除镜像,有该镜像的容器正在运行,也是不能删除镜像的

docker rm 容器名称或容器ID

-- 删除所有容器
docker rm $(docker ps -a -q)

10)备份与迁移

容器保存为镜像

docker commit nginx nginx

前面nginx是容器名称,后面那个是镜像名称

保存时会将整个容器保存为镜像,即配置好的所有内容都会保存

备份镜像

将nginx镜像保存为nginx.tar压缩包,也可以指定路径保存

docker save -o nginx.tar nginx

镜像恢复与迁移

保存为压缩包之后就可以上传到任意的服务器中,然后通过以下命令就可以将镜像导入到docker中,可以指定路径导入

docker load -i nginx.tar
posted @ 2020-05-24 12:57  肖德子裕  阅读(484)  评论(0编辑  收藏  举报