Docker
介绍
Docker的英文本意是“搬运工”,Docker搬运的是集装箱(Container)可以成为容器,我们可以把WEB应用以及依赖库打包进一个可移植的容器里传播,解决了应用部署的平台兼容性问题,同时她也是一种轻量级的虚拟化技术可以做到秒级启动一个容器(类似小虚拟机,区别启动快、可以传播);
镜像是docker 创建、启动一个容器的文件系统,这个文件系统包含依赖包、命令工具、APP等;
安装和开启服务
yum install epel-release -y # 如果没有扩展源,需要先安装扩展源 yum install docker # 安装,由于Docker要求Linux内核版本必须在要在3.10,所以centos6.X版本需要 yum install docker-io systemctl start docker.service # 开启服务 docker info # 查看docker信息
- 1
- 2
- 3
- 4
镜像
修改镜像源
默认源连不上,修改镜像下载源,加入以下内容
vim etc/docker/daemon.json
- 1
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
- 1
- 2
- 3
- 4
更多国内源如下:
# Docker 官方中国区 https://registry.docker-cn.com # 网易 http://hub-mirror.c.163.com # ustc https://docker.mirrors.ustc.edu.cn
- 1
- 2
- 3
- 4
- 5
- 6
注意
目录位置为/etc/default/docker
,如果没有,那么就在/etc/sysconfig/docker
,如果还是没有,那么就去/etc/default/
下创建一个docker文件吧。
搜索镜像文件
docker search centos # 搜索centos
- 1
拉取镜像
docker pull docker.io/centos # 拉取 镜像名
- 1
删除镜像
docker rmi <镜像名|镜像ID>
- 1
容器
创建容器
进入交互式容器
docker run -i -t docker.io/centos /bin/bash # -it可以连写
- 1
- docker run 创建容器
- -t 指定镜像
- -i 交互式
进入交互式容器的/bin/bash后,可以输入常用的操作命令,比如ls
指定容器名
docker run --name <容器名> -it <镜像名> /bin/bash # --name 指定容器名
- 1
端口映射
# 使用 -p 8000:80 创建端口映射(映射docker的80端口到物理机8000) # docker run -d -p 8000:80 -p 22:22 同时映射多个端口,比如22给ssh服务用,80给Django用,即凡是需要提供给外部访问的,都需要作端口映射。 docker run --name ssh_server -it -p 8000:80 <镜像名> /bin/bash
- 1
- 2
- 3
注意:端口映射只能在docker run时操作
通过exit
可以退出容器。
查看容器
docker ps # 正在运行的容器 docker ps -a # 所有的容器 docker ps -l # 最近一次的容器 docker ps -q # 最近一次的容器的id
- 1
- 2
- 3
- 4
查看容器详细信息
docker inspect <容器ID|容器名>
- 1
结果类似于json数据,可以通过| grep
来过滤需要的信息
启动和关闭容器
docker start <容器名|容器ID> docker stop <容器名|容器ID>
- 1
- 2
进入容器
进入容器前需要先启动
# 这种方式可以进入正在运行的容器,但是exit退出时容器也就停止运行了 docker attach <容器名|容器ID> # 另一种方式进入容器,退出时容器不终止运行 docker exec -it test1 /bin/bash # /bin/bash必须加
- 1
- 2
- 3
- 4
删除容器
# 删除一个容器 docker rm <容器名|容器ID> # 强制删除一个正在运行的容器 docker rm -f <容器名|容器ID> # 删除全部容器(使用 -f 可以强制删除正在运行的容器) docker rm `docker ps -aq`
- 1
- 2
- 3
- 4
- 5
- 6
说明:飘号内的内容会作为命令来执行,并将结果交给rm命令
容器打包成镜像
docker save -o <导出的文件名.zip> <镜像名> # 如果要指定路径,必须先创建路径中的文件夹 # 比如: mkdir img docker save -o /img/vimenv.zip vimenv.img
- 1
- 2
- 3
- 4
- 5
导入镜像
docker load < <镜像文件名.zip> # < 记住别漏了重定向符号
- 1
- 导入之后使用
docker images
查看镜像 - 使用导入的镜像
docker run
来创建容器 - 新的容器内含以前打包好的项目的数据,直接运行
docker中使用systemctl命令
centos7中通过systemctl
启动服务,但是在docker中无法使用。解决方案:
1.启动参数参数用/usr/sbin/init
docker run --name ssh_server -p 8000:22 -p 80:80 -it vimenv.img /usr/sbin/init
- 1
这时会报错:Operation not permitted,不管它
2新开一个终端,docker ps
查看刚刚启动的那个容器,docker stop 容器ID
结束它
docker start
4运行容器
docker exec -it <容器ID|容器名> /bin/bash
- 1
5yum安装openssh-server
等需要的服务,然后就可以通过systemctl
启动服务了
通过端口映射访问docker
exec
进入容器,passwd
命令修改密码- Xshell或WinSCP软件连接宿主机ip,端口是创建容器时映射的端口,输入密码即可。
文章来源: Docker的简单使用