Docker虚拟机架构
云计算中的Docker虚拟机
Docker镜像与容器
CentOS7安装Docker
yum -y update
yum install -y docker
管理Docker虚拟机
- 启动、关闭与重启
--启动 service docker start --关闭 service docker stop --重启 service docker restart
Docker虚拟机管理命令
在线安装镜像
举个例子:在线安装Java镜像
docker search java
docker pull java
国外镜像仓库下载速度较慢,建议使用国内镜像仓库,如DaoCloud
我这边的加速命令
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
执行成功之后会在 /etc/docker/daemon.json 中加入 {"registry-mirrors": ["http://f1361db2.m.daocloud.io"],} 配置
注意,这里多了个 , 号,我们要编辑 /etc/docker/daemon.json 进行删除。
然后我们搜索Java镜像
docker search java
我们这边选择 docker.io/java 进行安装
docker pull docker.io/java
导出、导入、查看、删除镜像
- 导出镜像
docker save java > /home/java.tar.gz
- 导入镜像
docker load < /home/java.tar.gz
- 查看镜像
docker images
- 删除镜像
docker rmi java
启动容器
启动镜像会创建出一个运行状态的容器
# -it以交互模式运行容器,为容器重新分配一个伪输入终端 # --name为容器指定一个名称 # java镜像名称 # bash进入容器命令行 docker run -it --name myjava java bash # -p主机:docker内部端口映射 docker run -it --name myjava -p 9000:8080 -p 9001:8085 java bash # -v目录文件映射,主机/home/project,dicker内部目录/soft # --privileged文件操作拥有最高权限 docker run -it --name myjava -v /home/project:/soft --privileged java bash
示例:
[root@localhost home]# docker run -it --name myjava -p 9000:8080 -p 9001:8085 -v /home/project:/soft --privileged --name myjava docker.io/java bash root@042a54274f11:/# java -version openjdk version "1.8.0_111" OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2~bpo8+1-b14) OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode) root@042a54274f11:/# javac Usage: javac <options> <source files> where possible options include: -g Generate all debugging info -g:none Generate no debugging info -g:{lines,vars,source} Generate only some debugging info -nowarn Generate no warnings -verbose Output messages about what the compiler is doing -deprecation Output source locations where deprecated APIs are used -classpath <path> Specify where to find user class files and annotation processors -cp <path> Specify where to find user class files and annotation processors -sourcepath <path> Specify where to find input source files -bootclasspath <path> Override location of bootstrap class files -extdirs <dirs> Override location of installed extensions -endorseddirs <dirs> Override location of endorsed standards path -proc:{none,only} Control whether annotation processing and/or compilation is done. -processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process -processorpath <path> Specify where to find annotation processors -parameters Generate metadata for reflection on method parameters -d <directory> Specify where to place generated class files -s <directory> Specify where to place generated source files -h <directory> Specify where to place generated native header files -implicit:{none,class} Specify whether or not to generate class files for implicitly referenced files -encoding <encoding> Specify character encoding used by source files -source <release> Provide source compatibility with specified release -target <release> Generate class files for specific VM version -profile <profile> Check that API used is available in the specified profile -version Version information -help Print a synopsis of standard options -Akey[=value] Options to pass to annotation processors -X Print a synopsis of nonstandard options -J<flag> Pass <flag> directly to the runtime system -Werror Terminate compilation if warnings occur @<filename> Read options and filenames from file root@042a54274f11:/# cd /soft/ root@042a54274f11:/soft# ls root@042a54274f11:/soft# touch hello.txt root@042a54274f11:/soft# echo Thanks > hello.txt root@042a54274f11:/soft# exit exit [root@localhost home]# ls java.tar.gz project wyt [root@localhost home]# cd project/ [root@localhost project]# ls hello.txt
暂停、恢复、停止、启动容器
# 暂停容器 docker pause myjava # 恢复容器 docker unpause myjava # 停止容器 docker stop myjava # 开始容器 docker start -i myjava # 删除容器 docker rm myjava
查看日志
docker logs -f -t --since="20187-7-30" --tail=10 docker_container_name # --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。 # -f : 查看实时日志 # -t : 查看日志产生的日期 # -tail=10 : 查看最后的10条日志。 # docker_container_name : 容器名称
查看容器列表
docker ps -a
查看容器信息
docker inspect 容器ID
数据卷管理
docker volume create 数据卷名称 #创建数据卷
docker volume rm 数据卷名称 #删除数据卷
docker volume inspect 数据卷名称 #查看数据卷
网络管理
docker network ls 查看网络信息 docker network create --subnet=网段 网络名称 docker network rm 网络名称
避免VM虚拟机挂起恢复之后,Docker虚拟机断网
vi /etc/sysctl.conf
文件中添加 net.ipv4.ip_forward=1 这个配置
#重启网络服务
systemctl restart network
centos7 docker升级到最新稳定版本
删除老版本
- 停止docker服务
systemctl stop docker
- 查看当前版本
rpm -qa | grep docker
-
卸载软件包
yum erase docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine \ docker-ce
- 删除相关配置文件
find /etc/systemd -name '*docker*' -exec rm -f {} \; find /etc/systemd -name '*docker*' -exec rm -f {} \; find /lib/systemd -name '*docker*' -exec rm -f {} \; rm -rf /var/lib/docker #删除以前已有的镜像和容器,非必要 rm -rf /var/run/docker
安装新版本
- 查看可安装的版本
# 安装需要的依赖包 yum install -y yum-utils device-mapper-persistent-data # 配置稳定仓库 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装docker-ce yum install docker-ce # 查询不同版本的Docker yum list docker-ce --showduplicates | sort -r
- 安装最新版本
yum install docker-ce -y
-
启动并开机自启
systemctl start docker systemctl enable docker
-
查看docker版本
docker version