这里写自定义目录标题
docker 安装(ubuntu系统)
# 更新数据源
apt-get update
# 安装所需依赖
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# 安装 GPG 证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 新增数据源
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 更新并安装 Docker CE
apt-get update && apt-get install -y docker-ce
# 查看docker 安装的相关信息
docker version
配置docker的镜像地址
官方中国区镜像地址:https://registry.docker-cn.com
阿里云镜像地址:https://902jf69q.mirror.aliyuncs.com/
注:可以在阿里云官网搜索自己的镜像地址。
docker的镜像配置
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
EOF
# 重启 Docker
systemctl daemon-reload
systemctl restart docker
# 查看docker的安装信息
docker info
docker的常用命令
docker 镜像的常用命令
# 拉取镜像 其中除了软件名称意外其余都可以省略,参数可以通过docker pull --help 获取
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
# 查看都下载了那些镜像 如果镜像过多,可以通过在ls后面添加参数的方式来获取指定的镜像
docker image ls
# 查看nginx相关的镜像
docker image nginx
# 可以通过--format选项来查看指定的内容
docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
# 查看docker容器中镜像、容器、数据卷所占用的空间。
docker system df
# 删除镜像 镜像名称,镜像id都可以作为删除镜像的条件
docker image rm [选项] <镜像1> [<镜像2> ...]
docker容器的常用命令
# 查看docker中运行的容器
docker ps
# 运行一个docker容器
# -p 指定启动容器的端口号
# 前面的8080是宿主机端口:供外部(docker意外的程序)访问的端口。
# 后面的8080是容器端口:tomcat启动的端口,docker内部使用的端口。
# -d 指定启动方式,-d表示后台启动,不写表示前台启动,后台启动后得到容器的id
docker run -p 8080:8080 -d tomcat
# 运行容器
# run是docker启动容器的命令, 特点是如果本地存在,那么直接运行,如果不存在,则从镜像地址拉去一个相关的镜像,并运行
# ubuntu:15.10 镜像的名称:镜像版本
# /bin/echo "Hello world" 在容器内部要运行的命令
docker run ubuntu:15.10 /bin/echo "Hello world"
# 可以通过参数来进入运行的容器内部,可以使用exit命令来推出容器
# -t: 在新容器内指定一个伪终端或终端。
# -i: 允许你对容器内的标准输入 (STDIN) 进行交互。
docker run -i -t ubuntu:15.10 /bin/bash
# 停止容器 一般会先运行docker ps 来查看对应的容器id和名称
docker stop [容器id/容器名称]
# 停止的容器恢复运行状态
docker restart [容器id/容器名称]
# 查看所有的容器,包括已经停止的
docker ps -a
# 删除容器 提示:无法删除正在运行的容器
# 如果需要停止正在运行的容器,需要加上-f参数
docker rm [容器id/容器名称]
# 不建议经常使用
docker rm -f [容器id/容器名称]
# 交互式进入容器,修改容器配置
# docker exec 进入正在运行的容器
# -it 表示使用linux提示符的方式操作容器
# 69d1 对应的容器id
# bash 表示进去容器中的位置
# 使用 ctrl+d退出容器,获取使用exit命令
docker exec -it 69d1 /bin/bash
名词解释
镜像和容器
以面向对象的方式来解释,就是类就是镜像,实例化的对象就是容器
虚悬镜像
由于拉去了新的镜像,旧的镜像名称和原有的镜像名称重复,因此,不在显示旧的镜像名称,统一使用<none>来显示旧的镜像名称。
需要镜像都是无用的镜像,可以删除
# 查看需要镜像的命令
docker image ls -f dangling=true
# 删除虚悬镜像
docker image prune
# 虚悬镜像的显示方式(不是命令,不能运行)
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 00285df0df87 5 days ago 342 MB
中间层镜像
镜像可能会依赖一些底层镜像,这些镜像就是中间层镜像,如果删除,会导致顶层镜像不好用,不能随意删除。
中间层镜像的名称也是<none>,不要误当做是虚悬镜像删除
# 查看中间层镜像
docker image ls -a
Dockerfile
构建自己项目的镜像,以一个tomcat项目作为示例
创建Dockerfile文件
- 创建Dockerfile文件
vi Dockerfile
或者nano Dockerfile
- Dockerfile文件内容
FROM tomcat:latest
COPY index.jsp /usr/local/tomcat/webapps/ROOT
关于Dockerfile文件的内容的解释
第一行FORM tomcat:latest
:表示该镜像继承tomcat镜像,
第二行:表示操作,将indexl.jsp文件复制到指定的目录下
- 使用
docker build -t myshop .
命令打包镜像
参数说明:
build:docker的打包命令
-t myshop:指定打包的镜像名称和target
.(点) :表示当前目录有两层含义,一是表示Dockerfile的路径,二是表示Dockerfile的上下文目录并打包(参考下一个标题)
- 使用
docker images
查看镜像是否存在 docker run -p 8080:8080 --name myshop -d myshop
运行myshop镜像
Dockerfile的上下文
在docker build -t myshop .
命令中最后的.
表示的是Dockerfile文件的路径,也是打包的文件所在的路径,需要特殊说明的地方在于,docker的打包过程是将.
所在的目录打包到docker服务器之后再开始构建,就是说,如果在Dockerfile中操作了不属于.
目录下的文件,那么在构建镜像的时候就会报错。。
Dockerfile的构建命令
COPY: 复制文件到指定目录
COPY package.json /usr/src/app/
ADD:于copy类似,但是添加了如果复制的是压缩文件,那么add命令会在复制完成后解压,不推荐使用
ADD ubuntu-xenial-core-cloudimg-amd64-root.tar.gz /
CMD:和RUN的作用相似,但是只能在Dockerfile中使用一次,使用多次的话只有最后一次会被执行
CMD echo $HOME
ENTRYPOINT:和CMD命令相似
ENTRYPOINT [ "curl", "-s", "http://ip.cn" ]
ENV:设置环境变量
ENV VERSION=1.0 DEBUG=on \
NAME="Happy Feet"
VOLUME:设置卷
VOLUME /data
EXPOSE:暴露端口用的
EXPOSE <端口1> [<端口2>...]
WORKDIR:和cd的功能类似
WORKDIR <工作目录路径>
docker命令速查表
# 查看 Docker 版本
docker version
# 从 Docker 文件构建 Docker 映像
docker build -t image-name docker-file-location
# 运行 Docker 映像
docker run -d image-name
# 查看可用的 Docker 映像
docker images
# 查看最近的运行容器
docker ps -l
# 查看所有正在运行的容器
docker ps -a
# 停止运行容器
docker stop container_id
# 删除一个镜像
docker rmi image-name
# 删除所有镜像
docker rmi $(docker images -q)
# 强制删除所有镜像
docker rmi -f $(docker images -q)
# 删除所有虚悬镜像
docker rmi $(docker images -q -f dangling=true)
# 删除所有容器
docker rm $(docker ps -a -q)
# 进入 Docker 容器
docker exec -it container-id /bin/bash
# 查看所有数据卷
docker volume ls
# 删除指定数据卷
docker volume rm [volume_name]
# 删除所有未关联的数据卷
docker volume rm $(docker volume ls -qf dangling=true)
# 从主机复制文件到容器
docker cp host_path containerID:container_path
# 从容器复制文件到主机
docker cp containerID:container_path host_path
来源:CSDN
作者:_TheDawn_
链接:https://blog.csdn.net/the_dawn_1/article/details/103751452