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
