工作中Docker使用命令笔记
docker安装与启动
安装docker
[root@localhost /]# yum -y install docker-io
更改配置文件
[root@localhost /]# vi /etc/sysconfig/docker
other-args列更改为:other_args="--exec-driver=lxc --selinux-enabled"
启动docker服务
[root@localhost /]# service docker start
重启docker
service docker restart
Starting cgconfig service: [ OK ]
Starting docker: [ OK ]
将docker加入开机启动
[root@localhost /]# chkconfig docker on
基本信息查看
docker version:查看docker的版本号,包括客户端、服务端、依赖的Go等
[root@localhost /]# docker version
Client version: 1.0.0
Client API version: 1.12
Go version (client): go1.2.2
Git commit (client): 63fe64c/1.0.0
Server version: 1.0.0
Server API version: 1.12
Go version (server): go1.2.2
Git commit (server): 63fe64c/1.0.0
1、进入容器命令:
sudo docker exec -ti 64134af51c2b /bin/sh
其中64134af51c2b表示要进入的容器名称
2、退出容器:exit
3、查看日志文件:tail -f xxx.log
ssh ubuntu@172.16.200.59
启动docker :service docker start
docker下载的镜像存放地址:一般都是在/var/lib/docker/devicemapper/mnt目录下
docker镜像文件的导出导入:
可联网的虚拟机中先获取registry镜像,然后导出tar格式的镜像文件。
docker save registry > /tmp/registry.tar
在目标虚拟机中导入tar格式的镜像文件。
docker load <registry.tar
然后通过docker images 命令即可查看导进来的镜像文件了。
启动容器:docker run IMAGE ID
通过docker ps -a 查看所有正在运行的容器
sudo docker run -i -t ubuntu /bin/bash
这条命令的含义:
首先,我们告诉 Docker 执行 docker run 这条命令,并且带上 -i -t 这两个参数。
-i 标志保证容器中 STDIN 是开启的,虽然并没有附着在容器中;
-t 标志要为新创建的容器分配一个伪 tty 终端,这样我们就能在新创建容器中使用 交互式 shell ;
接下来,我们告诉 Docker 基于什么镜像来创建容器,实例中使用的是 ubuntu 镜像。
随后, Docker 在文件系统内部用这个镜像创建了一个容器,该容器有着自己的网络、IP地址以及和宿主主机用来通信的桥接网络接口。
最后,在新创建的容器中运行 /bin/bash 命令启动了一个 Bash shell.
这样,容器创建完毕后,我们就可以看到容器中启动了shell .
docker 移除一个容器;
第一步:先停止该容器:docker stop 79072778a521
第二步:移除该容器: docker rm 79072778a521
进入容器的方法:1、attach ;3、exec
首先不管采用那种方式,必须先起一个容器:创建一个守护态的Docker容器
sudo docker run -itd ubuntu:14.04 /bin/bash
使用docker ps -a 命令查看容器的id 44fc0f0582d9
1、attach方法:
sudo docker attach 44fc0f0582d9
然后从[root@localhost /]变成了[root@44fc0f0582d9 /],这就说明进入了44fc0f0582d9容器
进入容器后,输入ls命令,列出所有的文件夹,跟我们常用的系统一模一样:
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
退出容器exit,这样又变成了[root@localhost /]
2、使用exec:
sudo docker exec -it 44fc0f0582d9 /bin/bash
如果进入容器报错说容器没有启动,需要先启动,可以使用docker restart 44fc0f0582d9命令将44fc0f0582d9容器重启下,然后再使用进入容器命令。
//////////////////////////////////////////////////////////////////////////
基于ubuntu基础镜像创建一个nginx镜像
1、首先进入ubuntu容器中,然后在该容器中创建一个nginx目录
ubuntu@ubuntu:~$ mkdir nginx #创建nginx目录
ubuntu@ubuntu:~$ cd nginx #进入目录
ubuntu@ubuntu:~/nginx$ touch Dockerfile 执行Dockerfile文件
Dockerfile文件:
FROM ubuntu:14.04
MAINTAINER Reed "reed@example.com"
RUN apt-get update
RUN apt-get -y -q install nginx
RUN mkdir -p /var/www/html
ADD global.conf /etc/nginx/conf.d/
ADD nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
对上面Dockerfile文件做一个解释:
FROM 指定基础镜像,我们制做的镜像是在Ubuntu:14.04的基础上生成的。
MAINTAINER 镜像制作人的信息
RUN 指定创建镜像时执行的命令
ADD 将本地文件添加到镜像中
EXPOSE 容器开放80端口
docker容器迁移:
docker exoprt 容器id >ubuntu_wrong.tar #ubuntu_wrong.tar 是你自己给容器起的一个英文名字,方便识别
du -sh ubuntu_wrong.tar
默认是把ubuntu_wrong.tar拷贝到root根目录下下的;
然后将该ubuntu_wrong.tar再拷贝到要迁移的服务器上。
然后通过下面的命令:
cat ubuntu_wrong.tar |sudo docker import - wr:latest
其中wr是自己起的一个名字。latest表示最新,也可以指定一个版本。
docker镜像迁移迁入:
导出镜像文件:
sudo docker save -o wrong-mysql.tar 114.113.1.101:6666/admin/commsrvmongodb:v3.4.82f5fd7
其中114.113.1.101:6666/admin/commsrvmongodb是镜像的名称
v3.4.82f5fd7是镜像的版本
wrong-mysql.tar是迁移出来的名称,到当前路径下。
导入镜像文件:
sudo docker load -i wrong-mysql.tar
必须在wrong-mysql.tar路径下面操作
修改docker 的配置文件:cat /etc/sysconfig/docker
将docker设为开机启动:chkconfig docker on
宿主机和容器的文件相互复制
1、从docker中拷贝数据到宿主机:
首先在宿主机上通过sudo docker ps | grep demo
查出demo的容器id:b2764cd71857
然后在宿主机上执行下面命令:
docker cp containerId:/file/path/within/container /host/path/target
例如:
sudo docker cp b2764cd71857:/home/logs/rm-service/log/zip /home
2、从宿主机拷贝数据到docker中;
sudo docker cp /home/ubuntu/wr/pm-adaptor.jar f3a2a81eb929:/home/zenap/pm-adaptor/pm-adaptor.jar