赞
踩
Docker 是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
开发者在本地编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
$ sudo apt-get remove docker docker-engine docker.io containerd runc
更新包索引和安装包以允许通过 HTTPS 使用存储库
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
添加 Docker 的官方 GPG 密钥
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
通过搜索指纹的最后 8 个字符,验证您现在是否拥有指纹9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88的密钥
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
使用以下命令设置稳定存储库
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
更新包索引,安装最新版本的 docker引擎和容器
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
要安装特定版本的 docker引擎,请在存储库中列出可用版本,然后选择并安装
#列出可用版本
$ apt-cache madison docker-ce
#安装指定的版本
$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
验证docker是否正确安装了 (可以不用去做)
$ sudo docker run hello-world
创建容器
# 以交互模式启动一个容器,在容器内执行bash命令。
# -i: 以交互模式运行容器,通常与 -t 同时使用。
$ sudo docker run -it ubuntu:18.04 bash
启动停止的容器
$ sudo docker start [容器ID]
停止运行的容器
$ sudo docker stop [容器ID]
重启容器
$ sudo docker restart [容器ID]
进入到容器
# 进入到容器的内部,执行 exit 时退出容器
$ sudo docker attach [容器ID]
查看正在运行的容器
$ sudo docker ps
查看所有的容器
$ sudo docker ps -a
杀死正在运行的容器
$ sudo docker kill [容器ID]
创建镜像
# 使用当前目录的 Dockerfile 创建镜像,镜像名字和标签为 myimage:mylable
# -t: 镜像的名字及标签。
$ sudo docker build -t myimage:mylable .
查看镜像
$ sudo docker images
删除镜像
列出容器
$ sudo docker ps -a
移除对应的容器
$ sudo docker rm [容器ID]
列出镜像
$ sudo docker images
删除镜像
$ sudo docker rmi [镜像ID]
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
FROM:定制的镜像都是基于 FROM 的镜像
RUN:用于执行后面跟着的命令行命令
WORKDIR:指定工作目录
ENV:设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量
开始构建镜像
命令
$ docker build -t [镜像名称]:[镜像标签] .
点代表执行的上下文路径,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。
**注意:**上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。
Dockerfile 文件所在路径创建 .dockerignore ,里面可以写要忽略的路径和文件(很好用)
基础镜像简单,小巧,只有基本功能。版本
$ docker pull ubuntu:18.04
run.sh
脚本内容
#!/bin/sh work_path=$(dirname $(readlink -f $0)) container=$(docker ps -a | grep 'xxx' | grep -oP '\S+' | head -1) #要用新生成的容器ID替换xxx #echo $work_path #echo $container #如果容器不存在就会创建容器 if [ -z "$container" ]; then # --privileged: 扩展权限,可以操作宿机,会有风险. # -i: 交互式操作. # -t: 终端. # -d: 在后台运行容器,并且打印容器id # -v: 挂载目录到容器. # -w: 指定工作目录,运行的时候会直接进入到这个目录下. # --name: 为新建的容器指定名称. # ubuntu:18.04: 容器的基础镜像. # /bin/bash: 交互式 Shell 用的是 /bin/bash. docker run -it -v $work_path:/sdk -w /sdk --name sd_build ubuntu:18.04 /bin/bash else docker start $container docker attach $container # 和 attach 一样,但是退出时不会关闭容器 #docker exec -it $container /bin/bash fi
执行脚本
$ sudo ./run.sh
这里是以 ubuntu:16.04
为基本新建一个定制的镜像 myimage:mylable
,然后以 myimage:mylable
镜像来构建容器。
relax@ubuntu:~/mydocker$ tree -La 2
.
├── Dockerfile # 规则文件
├── .dockerignore # 忽略的文件写在这里面
├── build.sh # 构建镜像的脚本
└── run.sh # 生成,运行容器的脚本
Dockerfile
FROM ubuntu:16.04
# Install dependencies
RUN apt-get -y update && apt-get install -y --no-install-recommends \
git \
tree
# Setup build directory and root user
WORKDIR /sdk
.dockerignore
写上要忽略的文件
build.sh
#!/bin/sh
docker build -t myimage:mylable .
run.sh
#!/bin/sh work_path=$(dirname $(readlink -f $0)) container=$(docker ps -a | grep '11111' | grep -oP '\S+' | head -1) # 要用新生成的容器ID替换11111。 #echo $work_path #echo $container #如果容器不存在就会创建容器。 if [ -z "$container" ]; then # --privileged: 扩展权限,可以操作宿机,会有风险. # -i: 交互式操作. # -t: 终端. # -d: 在后台运行容器,并且打印容器id # -v: 挂载目录到容器. # -w: 指定工作目录,运行的时候会直接进入到这个目录下. # --name: 为新建的容器指定名称. # myimage:mylable: 容器的基础镜像. # /bin/bash: 交互式 Shell 用的是 /bin/bash. docker run -it -v $work_path:/sdk -w /sdk --name mycontainername myimage:mylable /bin/bash else docker start $container docker attach $container # 和 attach 一样,但是退出时不会关闭容器 #docker exec -it $container /bin/bash fi
定制新镜像
$ sudo ./build.sh
构建容器
$ sudo ./run.sh
下载
# 一般下载完成后会默认启动服务
$ sudo apt-get update
$ sudo apt-get install openssh-server
其他相关命令
# 查看服务是否启动
$ sudo ps -e | grep ssh
# 启动服务
$ sudo /etc/init.d/ssh start
# 查看服务状态
$ sudo service ssh status
# 关闭服务
$ sudo service ssh stop
# 重启服务
$ sudo service ssh restart
$ sudo apt-get update
$ sudo apt install tzdata
# 临时起作用
$ export TZ=Asia/Shanghai
# 永久
# 1.打开文件
vim ~/.bashrc
# 2.末尾加上一下内容
export TZ=Asia/Shanghai
# 3.使能
source ~/.bashrc
# 查看本地使用的语言环境 root@de4a1a7fc9e6:/sdk# locale LANG= LANGUAGE= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL= # 查看本地支持的语言环境 root@de4a1a7fc9e6:/sdk# locale -a C C.UTF-8 POSIX
# 修改配置 root@de4a1a7fc9e6:/sdk# vim ~/.bashrc # 末尾添加上 export LANG=C.UTF-8 # 加载配置 root@de4a1a7fc9e6:/sdk# source ~/.bashrc # 查看本地使用的语言环境 root@de4a1a7fc9e6:/sdk# locale LANG=C.UTF-8 LANGUAGE= LC_CTYPE="C.UTF-8" LC_NUMERIC="C.UTF-8" LC_TIME="C.UTF-8" LC_COLLATE="C.UTF-8" LC_MONETARY="C.UTF-8" LC_MESSAGES="C.UTF-8" LC_PAPER="C.UTF-8" LC_NAME="C.UTF-8" LC_ADDRESS="C.UTF-8" LC_TELEPHONE="C.UTF-8" LC_MEASUREMENT="C.UTF-8" LC_IDENTIFICATION="C.UTF-8" LC_ALL=
Dockerfile
# 制作镜像的时候加上这一行
ENV LANG C.UTF-8
当一个新的项目到来时,我们可能需要配置新的开发环境,制作基础镜像。
比如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用 docker export 保存为一个基础镜像。然后,把这个镜像分发给其他人使用。
# 查看所有容器
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de4a1a7fc9e6 ubuntu16.04:nt98323 "bash" 14 months ago Exited (0) 8 days ago vigorous_kilby
cde86db6cb11 ubuntu16.04:nt98323 "bash" 15 months ago Exited (0) 7 months ago cool_aryabhata
8b3a2c1fa9ed ubuntu16.04:imx8qxp "bash" 20 months ago Exited (0) 2 months ago gallant_mendeleev
# 导出容器,会在当前目录下生成文件
# docker export [OPTIONS] CONTAINER
$ sudo docker export [de4a1a7fc9e6] > nt98323.tar
# 导入镜像
# docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
$ sudo cat nt98323.tar | docker import - ubuntu16.04:new_nt98323
# 使用下面的命令查看导入的镜像
$ sudo docker images
# 然后可以以此镜像为基础创建容器进行开发
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。