docker build
docker pull
docker run
docker daemon
containers
images
sudo docker image ls
more Dockerfiledocker build -t official/redis:latestdocker pull ubuntu:14.04sudo docker version
sudo groupadd docker
sudo gpasswd -a vagrant docker
sudo service docker restart
exit
vagrant ssh
docker version
docker image ls
docker pull hello-world
sudo yum install vim gcc git glibc locate glibc-static
vim hello.c
#include<stdio.h>
int main()
{
printf("hello docker\n");
}
gcc -static hello.c -o hello
vim Dockerfile
FROM scratch
ADD hello /
CMD ["/hello"]
docker build -t nirolee/hello-world
docker container ls
docker container ls -a(退出的也能看到)
more hello-world/Dockerfile
docker run ubuntu
docker run -it ubuntu
docker container rm CONTAINER ID(ID 不用写全 能区分就行) 缩写 docker rm iddocker container ls -a缩写 docker ps -adocker image ls缩写docker imagesdocker image rm id 缩写 docker rmi iddocker container ls -a | awk {'print$1'} 缩写 docker container ls -aq
全部清理
docker rm $(docker container ls -aq)
清理退出的container
docker rm $(docker container ls -f "status=exited" -q)
create a new image from a container’s changes
docker container commit
例如
docker images
docker run -it centos
yum install -y vim
exit
docker container ls -a
docker commit [options] container [repository[:tag]] [flags]
docker commit elegant_mestorf nirolee/centos-vim
但是不提倡用这种方法创建镜像,不安全
build an image from a dockerfile
docker image build
例如
mkdir docker-centos-vim
cd docker-centos-vim
vim Dockerfile
FROM centos
RUN yum install -y vim
docker build -t nirolee/centos-vim-new .
Dockerfile 语法
– FROM
+ FROM scratch # 制作base image 从头制作的意思
+ FROM centos # 使用base image
+ FROM ubuntu:14.04
尽量用官方的image
– LABEL
+ LABEL maintainer = “nirolee@foxmail.com”
+ LABEL version=”1.0″
+ LABEL description=”this is description”
metadata不可少
– RUN
+ RUN yum update && yum install -y vim
\python-dev
+ apt-get update && apt-get install -y perl \
pwgen –no-install-recommends && rm -rf \
/var/lib/apt/lists/* #注意清理cache
+ /bin/bash -c ‘source’ $HOME/.bashrc; echo $HOME’
执行命令并创建新的image layer
复杂run用反斜线换行,避免无用分层,合并多条命令成一行
– WORKDIR
+ WORKDIR /root
+ WORKDIR /test # 如果没有会自动创建test目录
+ WORKDIR demo
+ RUN pwd #输出结果应该是 /test/demo
用WORKDIR,不要用RUN cd,尽量用绝对目录
– ADD and COPY
+ ADD hello /
+ ADD test.tar.gz / #添加到根目录并解压
+ WORKON /root
ADD hello test # /root/test/hello
+ WORKON /root
COPY hello test/
大部分情况,COPY优于ADD add除了COPY还有解压功能 添加远程文件/目录用curl或wget
设置容器启动时运行的命令
Shell 和 Exec格式
– Shell格式
RUN apt-get install -y vim
CMD echo "hello docker"
ENTRYPOINT echo "hello docker"
RUN ["apt-get", "install", "-y", "vim"]CMD ["/bin/echo", "hello docker"]ENTRYPOINT ["/bin/echo", "hello docker"]镜像的发布
– docker hub
先在docker Hub上注册一个账号
docker login
docker push nirolee/hello-world:latest
拉取
docker pull nirolee/hello-world
docker run -d -p 5000:5000 --restart always --name registry registry:2
sudo ls /etc/docker
sudo more /etc/docker/daemon.json
{“insecure-registries”: [“192.168.0.1:5000”]}
sudo vim /lib/systemd/system/docker.service
docker push 192.168.0.1:5000/hello-world
查看是否push成功
GET /v2/_catalog