Docker 是云时代的产物,它的诞生是一种必然。
那么,什么是虚拟化呢?
Docker 包含四个基本概念:理解了这四个概念,就理解了 docker 的整个生命周期了!
* 最大的公有Registry是DockerHub,存放了数量庞大的镜像供用户下载使用。
* 国内的公开 Registry 包括 USTC、网易云、DaoCloud、AliCloud 等,可以供大陆用户更稳当快捷的访问。
* 用户可以在本地创建一个私有 Registry。
# 安装之前可以先卸载
yum -y remove docker
# 安装
yum install -y docker
# 启动
systemctl start docker
# 查看docker版本
[root@localhost ~]# docker --version
Docker version 1.13.1, build 7f2769b/1.13.1
docker search centos
我们可以使用命令从一些公用仓库中拉取镜像到本地,下面就列举一些常用的公用仓库拉取镜像的方式
docker pull centos:7
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
systemctl restart docker
[root@localhost ~]# docker pull centos:7
Trying to pull repository docker.io/library/centos ...
7: Pulling from docker.io/library/centos
d8d02d457314: Pull complete
Digest: sha256:307835c385f656ec2e2fec602cf093224173c51119bbebd602c53c3653a3d6eb
Status: Downloaded newer image for docker.io/centos:7
[root@localhost ~]#
docker images
docker rmi repository:tag
docker rmi imageID
docker rmi $(docker images -q)
docker save repository:tag/imageId > /root/xx.tar.gz
docker save -o mynginx.tar mynginx
docker load < /root/xx.tar.gz
docker load -i mynginx.tar
创建容器命令:docker run,常用的参数说明如下:
docker run -i -t --name 容器名称 repository:tag /bin/bash
docker run -it --name 容器名称 imageId /bin/bash
docker run -di --name 容器名称 repository:tag
docker run -di --name 容器名称 imageId
docker start 容器名称或者容器ID
docker exec -it 容器名称或者容器ID /bin/bash
docker attach 容器名称或者容器ID
docker ps:查看正在运行的容器
docker ps -a:查看历史运行过的容器
docker ps -l:查看最近运行过的容器
docker stop 容器名称或者容器ID
docker rm 容器名称或者容器 ID
docker rm 'docker ps -a -q'
docker cp 源文件 目标文件
docker pull mysql:5.6
docker run -di --name docker_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.6
docker exec -it docker_mysql /bin/bash
mysql -uroot -p
docker inspect docker_mysql
docker pull tomcat:7-jre7
docker run -di --name docker_tomcat -p 9000:8080 tomcat:7-jre7
vim /usr/lib/sysctl.d/00-system.conf
添加如下代码:
net.ipv4.ip_forward=1
重启network服务
systemctl restart network
浏览器访问:http://192.168.254.120:9000/
docker pull nginx
docker run -di --name docker_nginx -p 9080:80 nginx
# 进入容器并启动nginx
[root@localhost ~]# docker exec -it docker_nginx /bin/bash
root@69473e62ad1d:/# /usr/sbin/nginx
curl 'http://192.168.254.120:9080'
docker pull redis
docker run -di --name docker_redis -p 16379:6379 redis
docker run -di --name my-tomcat -v /root/webapps: /usr/local/tomcat/webapps -p
8888:8080 imageID
或者
docker run -ti --name my-tomcat -v /opt/webapps:/opt/tomcat/webapps -p 8888:8080
imageID /bin/bash
/kkb/webapps:宿主机器的目录
/usr/local/tomcat/webapps:容器中的目录
docker run -di --name docker-tomcat-web -v /kkb/webapps:/usr/local/tomcat/webapps -p 8888:8080 --privileged=true tomcat:7-jre7
# --privileged=true 给容器访问目录授权
[root@localhost ~]# docker exec -it docker-tomcat-web /bin/bash
root@e6b5068a9f6c:/usr/local/tomcat# cd /usr/local/tomcat/w
webapps/ work/
root@e6b5068a9f6c:/usr/local/tomcat# cd /usr/local/tomcat/webapps/
root@e6b5068a9f6c:/usr/local/tomcat/webapps# ls
root@e6b5068a9f6c:/usr/local/tomcat/webapps# ps -ef | grep tomcat
root 1 0 2 14:33 ? 00:00:02 /docker-java-home/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 55 48 0 14:35 ? 00:00:00 grep tomcat
root@e6b5068a9f6c:/usr/local/tomcat/webapps#
cp kkb-docker.war /kkb/webapps/
制作一个 tomcat 镜像
docker pull centos:7(注意:jdk 要和 os 的位数一致)
vim /etc/profile
export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
docker commit 容器名称或者容器 ID 新镜像名称