docker 进击之路3
1 去掉命令前的sudo
如果添加成功 执行命令还是不能去掉sudo:
<1 重启docker
<2 退出ssh重新连接。
2 做一个自己的镜像文件
2.1 mkdir hello-docker
cd hello-docker/
vi hello.c
文件内容如下
#include<stdio.h>
int main()
{
printf("hello docker\n");
}
yum install gcc
yum install glibc-static
gcc -static hello.c hello #编译 hello.c 为 hello
./hello # 运行
docker build -t wenbing-fly/hello-docker . # 打包为镜像
其中 -t 为指定镜像名 . 为在当前目录下查找
3 docker container 常用命令
docker container ls #正在运行的container进程。
docker container ls -a #运行过的container进程,已经退出。
docker run imagename:TAG#imagename:TAG 镜像名:版本号 只有一个则不需要,只填写镜像名称就可以。
docker run -it imagename #交互式运行。
#运行过的container进程,已经退出。如何删除?
docker container rm id
docker images 和 docker image ls 效果相同
docker image rm id # 移除镜像
docker rmi id # 移除镜像
docker ps -a #已经运行过得容器
docker container ls -aq # 列举所有container的id
docker rm $(docker container ls -aq) #清除所有container
docker container ls -f "status=exited" #所有运行过得container
docker rm $(docker container ls -f "status=exited" -q) #清除所有运行过得container
4 docker container commit #保存当前container为新的镜像
用法:
docker commit imagename new_imagename #不安全
docker image build
docker pull centos 获取centos的镜像。
5 通过Dockerfile 创建新的image
vi Dockerfile
FROM centos
yun yum install -y vim
docker build -t centos-vim .
FROM scratch # %制作base image
FROM centos #使用base image
FROM centos:7.0
RUN #每运行一条就分一层, 用&&符号连接 用 \ 反斜杠换行 来减少分层。
WORKDIR /root #类似 cd /root 如果没有回自动创建 /root 目录
AND and COPY # 大部分情况,COPY优先于ADD! ADD除了COPY 还有额外的功能(解压)!
#添加远程文件或目录请使用curl 或wget
ENV #定义常量
ENV AA 5.6 #设置常量
RUN apt -get install -y mysql -server ="${aa}" #引用常量
RUN # 执行命令并创建新的Image Layer
CMD # 设置容器启动后默认执行的命令和参数
ENTRYPOINT # 设置容器启动时运行的命令。