最近接触了点docker相关的技术,在此小记下。
安装docker
有多系统现在默认装了docker,可以运行docker启动命令尝试下,如果没有安装显示如下:
$ sudo /bin/systemctl start docker.service
Failed to start docker.service: Unit docker.service failed to load: No such file or directory.
# 也可以运行 rpm -qi docker 进行查看是否安装docker
$ rpm -qi docker
package docker is not installed
docker的安装比较简单,有现成的脚本直接执行就ok curl -sSL https://get.docker.com/ | sh
脚本执行成功之后,安装并没有结束,需要将当前用户加入到docker用户组中,执行命令sudo usermod -aG docker username
现在就可以启动docker来验证下是否安装成功,可以执行sudo /bin/systemctl start docker.service
或者 sudo service docker start
如果执行docker命令报
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.29/info: dial unix /var/run/docker.sock: connect: permission denied
错误的话,退出重新登录下就OK了。
docker常用命令
- 查看docker相关信息
docker info
- 查看本地镜像
docker image
- 从远程仓库里拉取image
docker pull ubuntu:14.04
- 查看存活的容器
docker ps
,查看所有的容器docker ps -a
,docker ps -q
只显示容器ID - 删除image
docker rmi
,强制删除docker rmi --force
,批量删除docker rmi $(sudo docker images | grep "<none>" | awk '{print($3)}')
- 查看容器log
docker logs containerID
- 启动容器tomcat
docker run -p 8080:8080 test/tomcat
,进入终端docker run -t -i -v /etc/localtime:/etc/localtime -p 8080:8080 test/tomcat /bin/bash
自定义docker镜像
从远程仓库拉取的image自己难免要进行一些个性化的修改,对image进行修改有两种方法,一种是在容器里直接修改然后执行docker commit
将修改后的image进行保存,另一种是通过Dockerfile进行修改。
第一种虽然可以比较直观的帮助理解镜像分层存储的概念,但是实际环境中并不会这样使用。因为这样会使很多多余的文件也保存到image中,将会导致镜像极为臃肿,也不利于别人对image的理解。
第二种会将对原始image的修改都记录在Dockerfile中,体现更好的逻辑性和层次性。
下面就来看下在官方ubuntu的基础上进行修改的Dockerfile文件
FROM ubuntu
ADD start.sh /
RUN chmod 777 /start.sh
#RUN apt-get update
#RUN apt-get install vim
CMD /start.sh
上述的Dockerfile上将start.sh脚本复制到容器的/
目录下,然后执行RUN
命令在build image时更改脚本的权限,最后执行CMD
命令设置容器启动时的默认执行命令。
start.sh脚本中可以写任何你希望容器在启动成功之后执行的命令,比如启动mysql服务什么的,这里只是echo 了个hello world。
Dockerfile文件编辑好之后,在当前目录下执行build命令,docker build -t hunhun/ubuntu .
,这里通常都会提醒你注意最后的那个.
。
虽然可以通过Dockerfile自定义镜像,并在启动容器的执行自定义的命令对容器进行初始化,但在测试时,对于新手可能有些镜像使用Dockerfile无法构建,那么就可以退而求次使用commit命令在基础镜像中进行修改然后执行commit命令,之后可以将image进行保存,命令docker save ubuntu_mysql:v0.2 > ubuntu_mysql_0.2.tar
。
以上内容仅实用与docker新手。。。。