安装(centos7 docker-ce)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
docker version
阿里云镜像加速(centos7)
具体配置在阿里云里面搜镜像加速,不同linux版本方式不同,分配的id也是每人独有
cd /etc/docker/
ll
sudo tee /etc/docker/daemon.json<<-'EOF'
{
"registry-mirrors":["https://分配id.mirror.aliyuncs.com"]
}
EOF
cat daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker
帮助命令
docker --help
docker run --help
镜像命令
docker images
docker search hello-world
docker pull hello-world
容器命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
常用options:
–name:为容器指定name
-d:后台运行(启动守护容器),run命令返回容器id
-it:i交互模式,t为容器创建一个伪终端
-P:随机端口映射
-p:指定端口映射,格式包括
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
docker run -it centos
#exit停止容器然后退出
#ctrl +p +q不停止退出
docker run -d centos
#立即退出,因为该容器没有 任何交互
#不退出需要有任务 docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 10; done; "
docker ps [options]
默认显示当前运行的容器
常用options:
-a:显示所有运行的或已停止的container
-l:显示上次运行的container
-n 3:显示上3次
-q:只显示container编号
docker start 容器id或name
docker restart 容器id或name
docker stop 容器id或name 正常关闭container
docker kill 容器id或name立刻关闭
docker rm 容器id或name删除停止的容器 删除正在运行的rm -f
docker rm -f ${docker ps -qa}
docker ps -qa |xargs docker rm -f
docker logs -f -t 容器id/name
docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 10; done; "
[docker@VM-0-17-centos root]$ docker logs -tf --tail 3 admiring_allen
2021-01-07T03:14:04.946527830Z hello world
2021-01-07T03:14:14.947424003Z hello world
2021-01-07T03:14:24.948334640Z hello world
2021-01-07T03:14:34.949263929Z hello world
docker top 容器id/name 查看容器内部进程
docker inspect 容器id/name 查看容器内部细节(json格式)
docker attach 容器id/name 重新进入一个后台运行的container
docker exec 容器id/name [cmd] 不进入容器执行容器内部命令并返回结果
[docker@VM-0-17-centos root]$ docker exec pensive_kilby ls -al /
total 56
drwxr-xr-x 1 root root 4096 Jan 7 02:29 .
drwxr-xr-x 1 root root 4096 Jan 7 02:29 ..
-rwxr-xr-x 1 root root 0 Jan 7 02:29 .dockerenv
lrwxrwxrwx 1 root root 7 Nov 3 15:22 bin -> usr/bin
drwxr-xr-x 5 root root 360 Jan 7 02:29 dev
drwxr-xr-x 1 root root 4096 Jan 7 02:29 etc
drwxr-xr-x 2 root root 4096 Nov 3 15:22 home
lrwxrwxrwx 1 root root 7 Nov 3 15:22 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Nov 3 15:22 lib64 -> usr/lib64
drwx------ 2 root root 4096 Dec 4 17:37 lost+found
drwxr-xr-x 2 root root 4096 Nov 3 15:22 media
drwxr-xr-x 2 root root 4096 Nov 3 15:22 mnt
drwxr-xr-x 2 root root 4096 Nov 3 15:22 opt
dr-xr-xr-x 97 root root 0 Jan 7 02:29 proc
dr-xr-x--- 2 root root 4096 Dec 4 17:37 root
drwxr-xr-x 11 root root 4096 Dec 4 17:37 run
lrwxrwxrwx 1 root root 8 Nov 3 15:22 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 Nov 3 15:22 srv
dr-xr-xr-x 13 root root 0 Jan 7 02:29 sys
drwxrwxrwt 7 root root 4096 Dec 4 17:37 tmp
drwxr-xr-x 12 root root 4096 Dec 4 17:37 usr
drwxr-xr-x 20 root root 4096 Dec 4 17:37 var
docker cp 容器id/name [cmd] 将容器内文件拷贝至服务器
[docker@VM-0-17-centos home]$ docker cp pensive_kilby:/tmp/yum.log /home/docker
[docker@VM-0-17-centos home]$ ls -al /home/docker/
total 36
drwx------ 4 docker docker 4096 Jan 7 11:59 .
drwxr-xr-x. 3 root root 4096 Jan 4 10:36 ..
-rw------- 1 docker docker 4018 Jan 7 11:59 .bash_history
-rw-r--r-- 1 docker docker 18 Apr 1 2020 .bash_logout
-rw-r--r-- 1 docker docker 193 Apr 1 2020 .bash_profile
-rw-r--r-- 1 docker docker 231 Apr 1 2020 .bashrc
drwxrwxr-x 3 docker docker 4096 Jan 4 10:37 .cache
drwxrwxr-x 3 docker docker 4096 Jan 4 10:37 .config
-rw------- 1 docker docker 651 Jan 5 15:56 .viminfo
-rw-r--r-- 1 docker docker 0 Jan 7 11:58 yum.log
提交容器成为新镜像
docker commit -m=“commit msg” -a=“author” groupNm/imageNm:tag name
容器数据卷(容器数据持久化、宿主机&容器数据共享)
1.-v命令添加
1.docker run -it -v /宿主机绝对路径:/容器内路径 image
2.首先查看挂载是否成功,然后查看bind
docker inspect containerId
3.宿主机和容器可以数据共享,即便容器停止,再次启动后数据依然同步
4.带权限(read only)
docker run -it -v /宿主机绝对路径:/容器内路径:ro image
2.dockerfile添加
From centos
VOLUME ["/dataVolContainer"]
CMD /bin/bash
3.–volumes-from容器间传递数据卷
docker run -it --name dc02 --volumes-from dc01 centos
注:容器之间数据卷的传递,数据卷的生命周期一直持续到没有任何一个容器使用它为止
Dockerfile 构建镜像
FROM J基础镜像
MAINTAINER 维护者信息
RUN 额外执行命令
EXPOSE 暴露服务端口号
WORKDIR 指定登录容器后的工作目录
ENV 设置环境变量,后续指令可以应用这些环境变量
ADD 构建docker镜像时把某个压缩包拷贝进上下文并解压
COPY 类似ADD,将源路径内容拷贝到镜像内目标路径
VOLUME 建立容器数据卷
CMD 指定一个容器启动时要运行的命令
ENTRYPOINT 指定一个容器启动时要运行的命令,方式为追加
##myip1
FROM centos
RUN yum install -y curl
CMD ["curl","-s","http://ip.cn"]
#默认centos镜像源不带curl
#执行成功,但运行容器的docker run语句不能再带参数,否则原CMD指令会被覆盖
##myip2
FROM centos
RUN yum install -y curl
ENTRYPOINT ["curl","-s","http://ip.cn"]
#若run带参数,例如docker run -it myip1:0.1 -i
#相当于ENTRYPOINT追加参数 ["curl","-s","-i",http://ip.cn"]
ONBUILD 构建一个被继承的Dockerfile时运行,父镜像在被继承时触发