开发环境之Docker
Posted xdzy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发环境之Docker相关的知识,希望对你有一定的参考价值。
查看更多开发环境配置,请点击《开发环境配置大全》
CentOS Docker 安装
1)更新包
yum包更新到最新
sudo yum update
2)设置仓库
2.1 安装所需的软件包,yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.2 设置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 -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
7.1 启动
systemctl start docker
7.2 查看状态
systemctl status docker
7.3 关闭
systemctl stop docker
7.4 重启
systemctl restart docker
7.5 设置开机自启
systemctl enable docker
7.6 查看docker信息和帮助文档
$ docker info
$ docker --help
8)镜像相关命令
8.1 查看镜像
docker images
REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
8.2 搜索镜像
docker search jdk8(这是镜像名称)
NAME:仓库名称
DESCRIPTION:镜像描述
STARS:星级,即镜像受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像是由Docker Hub自动构建流程创建的
8.3 拉取/下载镜像:
docker pull ascdc/jdk8 (这是镜像仓库+名称)
如果要设置镜像标签(TAG),则冒号+版本号,默认为latest,表示最终版本:
docker pull ascdc/jdk8:8
8.4 删除镜像
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)容器相关命令
镜像相当于模板,一个镜像可以创建多个容器
9.1 查看正在运行的容器
docker ps
9.2 查看所有创建的容器
docker ps -a
9.3 查看最后一次运行的容器
docker ps -l
9.4 查看停止的容器
docker ps -f status=exited
9.5 创建并启动容器
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
创建完成之后就进入到了该容器之中,退出命令使用exit即可,退出之后则容器停止。
守护式方式创建容器
docker run -di --name=容器名称 镜像名称:标签
登录守护式容器方式:
docker exec -it 容器名称(或者容器ID)/bin/bash
如下创建同一个nginx镜像的守护式容器,说明一个镜像可以创建多个容器,只要名字不设置重复:
docker run -di --name=nginx2 nginx
IMAGES才是容器名称,IMAGE是镜像,前面那个ID就是容器ID,STATUS状态为up则表示正在运行:
登录容器:
docker exec -it nginx2 /bin/bash
使用exit退出容器,查看正在运行容器发现这个容器还在运行,这就是守护式和交互式的区别。
9.6 启动和关闭容器
启动容器:
docker start 容器名称或容器ID
停止容器:
docker stop 容器名称或容器ID
启动所有容器:
docker start $(docker ps -a -q)
停止所有容器:
docker stop $(docker ps -a -q)
9.7 拷贝文件
拷贝到容器:
docker cp 需要拷贝的文件或目录 容器名称:容器目录
docker cp 1.txt nginx:/usr/local
从容器拷出到当前目录,并修改为2.txt:
docker cp 容器名称:文件路径 需要拷贝到的目录+文件名称
docker cp nginx:/usr/local/1.txt 2.txt
9.8 目录挂载
在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样就可以通过修改宿主机某个目录的文件从而去修改容器文件。
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=nginx3 nginx
如果是多级目录,可能会出现权限不足的情况,这是服务器把权限禁止了,需要添加--privileged=true来解决该问题。
9.9 查看容器IP
查看容器所有信息:
docker inspect 容器名称或容器ID
查看IP:
docker inspect --format=‘{{.NetworkSettings.IPAddress}}‘ 容器名称或容器ID
9.10 删除容器
注意:无法删除正在运行的容器,如果删除镜像,有该镜像的容器正在运行,也是不能删除镜像的
docker rm 容器名称或容器ID
删除所有容器:
docker rm $(docker ps -a -q)
10)备份与迁移
10.1 容器保存为镜像
docker commit nginx nginx
前面nginx是容器名称,后面那个是镜像名称
保存时会将整个容器保存为镜像,即配置好的所有内容都会保存
10.2 备份镜像
将nginx镜像保存为nginx.tar压缩包,也可以指定路径保存
docker save -o nginx.tar nginx
10.3 镜像恢复与迁移
保存为压缩包之后就可以上传到任意的服务器中,然后通过以下命令就可以将镜像导入到docker中,可以指定路径导入
docker load -i nginx.tar
以上是关于开发环境之Docker的主要内容,如果未能解决你的问题,请参考以下文章