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
View Code
暂停、恢复、停止、启动容器
# 暂停容器
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
安装新版本
centos7 修改yum源为阿里源
Ubuntu 修改apt-get源为阿里源
- 查看可安装的版本
# 安装需要的依赖包
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