(1)使用脚本自动安装
curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun
(2)启动 Docker CE
sudo systemctl enable docker
sudo systemctl start docker
(3)建立 docker 用户组
建立 docker
组:
sudo groupadd docker
将当前用户加入 docker
组:
sudo usermod -aG docker $USER
(4)测试 Docker 是否安装正确
docker run hello-world
若能正常输出以上信息,则说明安装成功。
(5)列出镜像列表
docker image ls
(6)查看镜像体积
docker system df
(7)删除镜像
docker image rm [选项] <镜像1> [<镜像2> ...]
(8)使用 Dockerfile 定制镜像
mkdir mynginx
cd mynginx
touch Dockerfile
vim Dockerfile
FROM nginx RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
# FROM 指定基础镜像
# RUN 执行命令
Dockerfile的正确写法
FROM debian:jessie RUN buildDeps='gcc libc6-dev make' && apt-get update && apt-get install -y $buildDeps && wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" && mkdir -p /usr/src/redis && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 && make -C /usr/src/redis && make -C /usr/src/redis install && rm -rf /var/lib/apt/lists/* && rm redis.tar.gz && rm -r /usr/src/redis && apt-get purge -y --auto-remove $buildDeps
构建镜像
docker build -t nginx:v3 .
#-t nginx:v3
最终镜像的名称
#.
表示当前目录
(9)Dockerfile指令详解
1) COPY 复制文件
--chown=<user>:<group>
选项来改变文件的所属用户及所属组。
COPY --chown=55:mygroup files* /mydir/ COPY --chown=bin files* /mydir/ COPY --chown=1 files* /mydir/ COPY --chown=10:11 files* /mydir/
2) ADD 更高级的复制文件
ADD --chown=55:mygroup files* /mydir/ ADD --chown=bin files* /mydir/ ADD --chown=1 files* /mydir/ ADD --chown=10:11 files* /mydir/
copy指令和add指令的选用原则:所有的文件复制均使用 COPY
指令,仅在需要自动解压缩的场合使用 ADD
4)ENTRYPOINT 入口点
5)ENV 设置环境变量
ENV VERSION=1.0 DEBUG=on NAME="Happy Feet"
先定义了环境变量 NODE_VERSION
,其后的 RUN
这层里,多次使用 $NODE_VERSION
来进行操作定制。
ENV NODE_VERSION 7.2.0 RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && grep " node-v$NODE_VERSION-linux-x64.tar.xz$" SHASUMS256.txt | sha256sum -c - && tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 && rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt && ln -s /usr/local/bin/node /usr/local/bin/nodejs
6)WORKDIR 指定工作目录
7)USER 指定当前用户
RUN groupadd -r redis && useradd -r -g redis redis USER redis RUN [ "redis-server" ]
10)操作容器
# 启动容器-- 新建并启动
docker run ubuntu:14.04 /bin/echo 'Hello world'
# 启动已终止容器
docker container start
# 后台运行
docker run ubuntu:17.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
容器会把输出的结果 (STDOUT) 打印到宿主机上面
docker run -d ubuntu:17.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs
查看)。
# 终止容器
参考手册:https://yeasy.gitbooks.io/docker_practice/content/install/centos.html