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
状态展示如下:
8)镜像相关命令
查看镜像
docker images
REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
镜像展示如下:
搜索镜像
docker search jdk8(这是镜像名称)
NAME:仓库名称
DESCRIPTION:镜像描述
STARS:星级,即镜像受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像是由Docker Hub自动构建流程创建的
搜索结果如下:
拉取、下载镜像
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
交互式方式举例:
创建完成之后就进入到了该容器之中,退出命令使用exit即可,退出之后则容器停止。
守护式方式举例,如下创建同一个nginx镜像的守护式容器,说明一个镜像可以创建多个容器,只要名字不设置重复,IMAGES才是容器名称,IMAGE是镜像,前面那个ID就是容器ID,STATUS状态为up则表示正在运行:
使用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