Docker镜像与容器的常用操作

Docker镜像操作

说明:Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。

docker镜像基础操作命令

镜像:
docker search 镜像名 搜索镜像
docker pull 镜像名 下载镜像到本地
docker images 查看本地镜像
docker tag 名称:[标签] 新名称:[新标签] 为本地镜像添加新的标签
docker rmi 名称:标签 删除镜像
docker rmi 镜像ID号 删除镜像
docker save -o 名称 名称:标签 镜像保存到本地
docker load --input 本地镜像文件 载入镜像
docker load < 本地镜像文件 载入镜像
docker push 名称:标签 上传镜像到仓库

容器:
docker create -it 名称:标签 程序(/bin/bash) 创建容器
docker ps -a 查看容器
docker start 容器ID 启动容器
docker run 名称:标签 /bin/bash -c 命令
从镜像运行容器,命令执行完毕,容器退出
docker run -itd 名称:标签 /bin/bash 以守护进程运行容器
docker stop 容器ID/名称 停止容器
docker exec -it 容器ID /bin/bash 进入容器
docker export 容器ID/名称 > 文件名 导出容器
cat 文件名 | docker import - 名称:标签 导入容器
docker rm 容器ID/名称 删除容器,先停止,再删除
-f:强制删除正在运行的容器

Docker镜像的创建方法:

一、 基于已有镜像创建
docker images //查看镜像
docker ps -a //查看容器
docker commit -m “newcentos” -a “zhangsan” 8332a113834c centos222:222
docker images //查看镜像

二、基于本地模板创建
wget http://download.openvz.org/template/precreated/ubuntu-12.04-x86_64-minimal.tar.gz //下载模板

#cat ubuntu-12.04-x86_64-minimal.tar.gz |docker import - daoke:new //创建镜像
docker images //查看镜像

三、基于Dockerfile创建镜像,并在容器中运行
1、创建工作目录
mkdir apache
cd apache
2、创建并编写Dockerfile文件
vim Dockerfile
#基于的基础镜像centos
FROM centos
#维护该镜像的用户信息
MAINTAINER The CentOS Project cloud-ops@centos.org
#镜像操作指令安装apache软件包
RUN yum -y update
RUN yum -y install httpd
#开启80端口
EXPOSE 80
#复制网站首页文件
ADD index.html /var/www/html/index.html
#将执行脚本复制到镜像中
ADD run.sh /run.sh
RUN chmod 775 /run.sh
#设置apache服务不自行启动
RUN systemctl disable httpd
#启动容器时执行脚本
CMD ["/run.sh"]

3、编写执行脚本内容
# vim run.sh
#!/bin/bash
rm -rf /run/httpd/* //清理httpd的缓存
exec /usr/sbin/apachectl -D FOREGROUND //启动apache服务

4、创建测试页面
# echo “doublekill” > index.html

5、使用Dockerfile生成镜像
# docker build -t httpd:centos . //最后有一个 点 代表当前路径
# docker images //查看新创建的镜像
6、使用新的镜像运行容器
# docker run -d -p 12345:80 httpd:centos
-p:实现从本地端口12345到容器80端口的映射
# docker ps -a //查看容器
# firefox http://127.0.0.1:12345

将镜像上传到仓库中

1、上传到公共仓库
docker login
docker push 名称:标签
2.上传到私有仓库
docker pull registry //下载registry镜像来搭建本地私有仓库
# vim /etc/sysconfig/docker //修改配置文件,指定私有仓库URL,否则会报错
OPTIONS=’–selinux-enabled --insecure-registry=192.168.10.105:5000 --log-driver=journald --signature-verification=false’
# systemctl restart docker
# docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
将下载好的registry镜像启动为容器,默认情况下,仓库存放于容器内的/tmp/registry目录下,使用-v可以将本地目录挂在到容器内的/tmp/registry目录下使用,这样就不怕容器被删除后镜像也随之丢失。
# docker tag docker.io/registry 192.168.10.105:5000/registry //镜像做标记
# docker push 192.168.10.105:5000/registry //上传标记的镜像

docker数据卷:宿主机和容器共享数据

数据卷:宿主机和容器共享数据
1、 创建数据卷:
docker run -d -v /data1 -v /data2 --name web httpd:centos //创建容器web
docker ps -a //查看容器web
docker exec -it web /bin/bash //进入容器web
ls //查看容器web中的数据卷 /data1和/data2
2、 挂载主机目录作为数据卷
docker run -d -v /var/www:/data1 --name web-1 httpd:centos //创建容器web-1
docker exec -it web-1 /bin/bash //进入容器web-1
ls /data1 //查看容器web-1中的/data1数据卷的内容,为空
cd /var/www //进入宿主机/var/www目录
touch aaa //在宿主机创建文件
ls /data1 //在容器web-1的/data1目录下查看到新创建的aaa文件

数据卷容器:容器和容器共享数据
docker run -it --volumes-from web --name db1 httpd:centos /bin/bash
//创建并进入容器db1
cd /data1 //进入容器db1中的/data1目录
touch 123 //在容器db1中创建文件
exit //退出容器
docker exec -it web /bin/bash //进入web容器
cd data1 //进入容器web中的/data1目录
ls //可以查看到在db1容器中创建的文件123

端口映射:宿主机和容器通信
]# docker run -d -P httpd:centos //创建新的容器
#docker ps -a //查看新的容器的端口映射
docker run -d -p 2222:80 httpd:centos //创建新的容器,手动指定映射
docker ps -a //查看新的容器的端口映射

容器互联:容器和容器通信
1、 创建源容器
#docker run -d -P --name web1 httpd:centos
2、 创建接收容器
#docker run -d -P --name web2 --link web1:web1to2 httpd:centos
3、 测试容器互联
docker exec -it web2 /bin/bash
ping web1

配置docker加速器

(参考 http://blog.csdn.net/xlemonok/article/details/71403534)
vim /etc/docker/daemon.json//加入如下内容
{
“registry-mirrors”: [“https://dhq9bx4f.mirror.aliyuncs.com”]
}
systemctl daemon-reload
systemctl restart docker
说明:这个url为加速器地址,需要自行到阿里云申请
申请地址:https://cr.console.aliyun.com/cn-hangzhou/mirrors
配置完加速器,重启docker服务,再次docker pull centos会快很多

docker容器内安装命令

1、docker  exec  -it  容器ID/名称  /bin/bash
2、apt-get  update
3、apt-get  install  -y  iputils-ping
4、apt-get  install  -y  vim

查看系统版本 :cat /etc/issue

docker容器构建nginx,tomcat,mariadb服务

(一)构建Nginx
1、 下载基础镜像
docker pull centos
或者是将下载好的镜像上传至服务器,然后载入
#docker load < centos-7.tar

2、 建立工作目录
#mkdir /nginx
cd /nginx

3、 创建并编写Dockerfile文件
vim Dockerfile

#设置基础镜像
FROM centos
#维护该镜像的用户信息
MAINTAINER zhangsan
#安装相关依赖包
RUN yum install -y wget proc-devel net-tools gcc zlib zlib-devel make openssl-devel
#下载并解压nginx源码包
RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz
RUN tar zxf nginx-1.9.7.tar.gz
#编译安装nginx
WORKDIR nginx-1.9.7
RUN ./configure --prefix=/usr/local/nginx && make && make install
#开启80和443端口
EXPOSE 80
EXPOSE 443
#修改nginx配置文件,以非daemon方式启动
RUN echo “daemon off;” >> /usr/local/nginx/conf/nginx.conf
#复制服务启动脚本并设置权限
WORKDIR /root/nginx
ADD run.sh /run.sh
RUN chmod 775 /run.sh
#启动容器时执行脚本
CMD ["/run.sh"]

4、 编写执行脚本内容
vim run.sh

#!/bin/bash
/usr/local/nginx/sbin/nginx

5、 生成镜像
docker build -t nginx:zhangsan . //最后还要一个点
如果报错,修改配置文件
vim /usr/lib/sysctl.d/00-system.conf
添加:net.ipv4.ip_forward=1
service network start
6、启动容器进行测试
#docker run -id --name nginx -p 80:80 nginx:zhangsan
#docker ps -a
firefox http://192.168.137.105:80
(二)构建Tomcat
1、 创建工作目录
mkdir /tomcat
cd /tomcat
把jdk软件包上传到 /tomcat下
tar zxvf jdk

2、 创建dockerfile文件
vim Dockerfile

#基础镜像 centos
FROM centos
维护该镜像的用户信息
MAINTAINER zhangsan
#设置jdk环境变量
ADD jdk1.8.0_171 /usr/local/jdk_8u171
ENV JAVA_HOME /usr/local/jdk_8u171
ENV JAVA_BIN /usr/local/jdk_8u171/bin
ENV JRE_HOME /usr/local/jdk_8u171/jre
ENV PATH $PATH:/usr/local/jdk_8u171/bin:/usr/local/jdk_8u171/jre/bin
ENV CLASSPATH /usr/local/jdk_8u171/jre/bin:/usr/local/jdk_8u171/lib:/usr/local/jdk_8u171/jre/lib/charsets.jar
#安装wget工具
RUN yum install -y wget
#下载tomcat软件包,注意软件包版本,实际使用中根据网站提供的版本号修改
RUN wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz
#解压tomcat并移动到相应位置
RUN tar zxf apache-tomcat-8.5.38.tar.gz
RUN mv apache-tomcat-8.5.38 /usr/local/tomcat
#开启8080端口
EXPOSE 8080
#启动容器时添加并执行脚本
ADD run.sh /run.sh
RUN chmod 775 /run.sh
CMD ["/run.sh"]

3、编写执行脚本内容
vim run.sh

#!/bin/bash
/usr/local/tomcat/bin/startup.sh
tailf /run

4、用dockerfile生成镜像
#docker build -t tomcat:zhangsan .

5、运行容器并验证
docker run -id --name tomcat -p 8080:8080 tomcat:zhangsan
docker ps -a
firefox http://192.168.137.105:8080
(三)构建mariadb
1、 创建工作目录
mkdir /mariadb
cd /mariadb
2、 创建Dockerfile文件
#vim Dockerfile
#指定基础镜像
FROM centos
#指定用户信息
MAINTAINER zhangsan
#安装mariadb
RUN yum install -y mariadb mariadb-server
ADD init.sh /root/init.sh
RUN chmod 775 /root/init.sh
RUN /root/init.sh
#开放端口
EXPOSE 3306
#启动容器时执行命令
CMD [“mysqld_safe”]
3、编写初始化、授权脚本
vim init.sh
#!/bin/bash
mysql_install_db --user=mysql
sleep 3
mysqld_safe &
sleep 3
mysqladmin -u “root” password “123456”
mysql -uroot -p123456 -e “grant all privileges on . to ‘root’@’%’ identified by ‘123456’;”
mysql -uroot -p123456 -e “grant all privileges on . to ‘root’@‘localhost’ identified by ‘123456’;”
mysql -uroot -p123456 -e “flush privileges;”

4、用dockerfile生成镜像
docker build -t mariadb:zhangsan .

5、运行容器
docker run -id --name mariadb -p 3306:3306 mariadb:zhangsan

6、验证:
宿主机安装mysql命令
yum -y install mysql
mysql -h 127.0.0.1 -uroot -p123456

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值