编辑文件
vi /etc/docker/daemon.json输入如下内容:
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }重启服务:
systemctl restart docker.service方便各实例之间的网络访问,如固定mysql, memcached, rabbitmq地址。
# 创建一个网络 docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 mynet # 显示当前网络 docker network ls # 第一次运行实例时,加上网络参数(主要是--net --ip参数) docker run -itd --name networkTest1 --net mynetwork --ip 172.18.0.2 centos:latest /bin/bash #将已运行的容器,连接到新网络(但IP是动态的) docker network connect mynet mysql # 实例互ping docker exec -it tomcat1 ping tomcat2
chown: changing ownership of '/var/lib/mysql/': Permission denied
加上 --privileged=true 参数
/usr/bin/docker-current: Error response from daemon: Conflict. The container name "/mysql" is already in use by container f4f8250c9a864f0807408af7d9ef456cb0aa50569f27373e9a1f3103d56dcd61. You have to remove (or rename) that container to be able to reuse that name..
删除容器实例,重建一个。
可通过https://hub.docker.com/_/rabbitmq?tab=tags查询版本
#带WEB控制台 docker pull rabbitmq:3.6.6-management #不带WEB控制台 docker pull rabbitmq:3.6.6 #启动rabbitmq容器实例 docker run --name rabbitmq3.6.6 -p 15672:15672 -p 5672:5672 -d rabbitmq:3.6.6-management #开机启动 docker update --restart=always rabbitmq3.6.6web端:http://192.168.0.5:15672
修改映射目录中的内容,会同步更新docker内的文件。
文件内容:
# FROM docker.io/centos:7 FROM centos MAINTAINER test<aa@test.com> RUN yum install kde-l10n-Chinese -y RUN yum reinstall glibc-common -y RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 RUN export LANG=zh_CN.UTF-8 RUN echo -e "export LANG=zh_CN.UTF-8" > /etc/locale.conf RUN echo -e "export LANG=zh_CN.UTF-8" > /etc/profile RUN source /etc/profile ENV LANG zh_CN.UTF-8 ENV LC_ALL zh_CN.UTF-8 COPY jdk-8u241-linux-x64.rpm /usr/ WORKDIR /usr/ RUN rpm -ivh jdk-8u241-linux-x64.rpm ADD apache-tomcat-8.0.28 /usr/local/tomcat EXPOSE 8080 ENTRYPOINT ["/bin/bash", "/usr/local/tomcat/bin/catalina.sh", "run"]生成image
# 当前目录使用Dockerfile文件名 docker build -t tomcat:centos . # 指定文件名方式,注意最后一个点 docker build -f /mydata/tools/tomcat_Dockerfile -t tomcat:centos . # 查看刚刚创建的境像 docker images # 运行容器实例(下面的境像名称,使用刚刚创建的境像) docker run -p 8081:8080 --name tomcat --privileged=true \ -v /etc/localtime:/etc/localtime \ -v /mydata/docker/tomcat/conf:/usr/local/tomcat/conf \ -v /mydata/docker/tomcat/logs:/usr/local/tomcat/logs \ -v /mydata/docker/tomcat/webapps:/usr/local/tomcat/webapps \ --net mynetwork \ --ip 172.18.0.6 \ -d tomcat:centos # 开机启动 docker update --restart=always tomcat
docker search mysql 搜索境像
docker pull mysql:5.7.10 安装境像
docker images 查看境像
docker exec -it container_name bash 进入容器 (在容器内执行 ctrl+p+q 退出容器,但不关闭容器, ctrl+q退出并关闭)
docker rmi mysql:5.7 删除境像
docker ps -a 查看所有容器实例
docker rm id 删除容器实例
docker start id 启动容器实例(第一次启动用run)
docker stop id 停止容器实例
docker logs [OPTIONS] CONTAINER 查看日志
docker create 创建容器实例,但不运行
docker run 创建容器实例,并且运行
docker inspect --format='{{.NetworkSettings.IPAddress}}' id/names 查看实例IP地址
docker rmi `docker images | grep '<none>' | awk '{print $3}'` 删除所有none的容器(注意要用docker ps -a查看一下,是否在运行)
参考:https://my.oschina.net/u/4230760/blog/3119321
将容器实例制作成tar境像
docker commit id mysql:5.7.18 # 例如: docker commit 640c369d7093 nginx2:test # (test表示tag,例如mysql的5.7)将变更后的tar包保存在当前路径下
docker save -o mysql5.7.18.tar mysql:5.7.18将tar变成新的容器实例
docker load --input mysql5.7.18.tar使用docker images查看容器实例,
然后再使用run命令运行新的容器实例,注意端口和目录映射关系。
在memcached的安装中,增加了-v参数指定时间与宿主机同步。
如果是已经安装好的doker,可使用如下方法处理。
# 复制宿主机时间文件 docker cp /usr/share/zoneinfo/Asia/Shanghai container_id:/etc/localtime # 重启容器 docker restart container_id # 登录宿主机 docker exec -it container_id bash # 查看时间 date