docker学习笔记

docker启动命令

systemctl命令是系统服务管理器指令

启动docker:

systemctl start docker

停止docker:

systemctl stop docker

重启docker:

systemctl restart docker

查看docker状态:

systemctl status docker

开机启动:

systemctl enable docker

查看docker概要信息

docker info

查看docker帮助文档

docker ‐‐help

1、创建docker容器

命令: docker run ubuntu:15.10 /bin/echo "Hello world"

docker: Docker 的二进制执行文件。

run: 与前面的 docker 组合来运行一个容器。

ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

/bin/echo "Hello world": 在启动的容器里执行的命令

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。


2、交互式容器

通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:

docker run -itd --name ubuntu-test ubuntu:15.10 /bin/bash

-t: 在新容器内指定一个伪终端或终端。

-i: 允许你对容器内的标准输入 (STDIN) 进行交互。

-d: 让容器在后台运行。

--name: 容器的名称。

3、常用命令

docker ps :查看正在运行的容器

docker ps - a :查看所有的容器

输出详情介绍:

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

created(已创建)

restarting(重启中)

running 或 Up(运行中)

removing(迁移中)

paused(暂停)

exited(停止)

dead(死亡)

PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配的容器名称。


docker pull ubuntu:载入镜像

docker rename 【原名称/id】【新名称】:修改容器名称

docker stop 【容器名/id】:停止容器

docker start 【容器名/id】:启动容器

docker restart 【容器名/id】:重启容器

docker exec -it 【容器名/id】 /bin/bash:进入容器

docker rm -f 【容器名/id】:删除容器

docker container prune:删除所有处于终止状态的容器


4、创建镜像

docker commit -m="描述信息" -a="作者名" 【容器名/id】【镜像名称】:【标签】

-m: 提交的描述信息

-a: 指定镜像作者


5、容器连接

docker network create -d bridge(连接模式) 【连接名称】

-d:参数指定 Docker 网络类型,有 bridge、overlay。


6、问题

docker创建容器未配置时间的时候,容器的时间与主机的时间不一致,比如UTC和CST相差8小时,换句话来说就是容器时间与北京时间相差8个小时。

这里采取的方法是在Dockerfile文件里进行时间设置:

# 添加时区环境变量,亚洲,上海

ENV TimeZone=Asia/Shanghai

# 使用软连接,并且将时区配置覆盖/etc/timezone

RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone

也可以在运行容器时进行配置:

-v /etc/localtime:/etc/localtime

# 实例1

docker run -p 3306:3306 --name mysql -v /etc/localtime:/etc/localtime


# 实例2

docker run \

    --detach \

    --restart always \

    --name 'scribe' \

    --publish 11315:11315 \

    --mount type=bind,source=/data/gop/,destination=/data/gop/,consistency=consistent \

    -v /etc/localtime:/etc/localtime \

    wsgzao/facebook-scribe


7、docker打包jar包镜像

先创建一个文件夹,在文件夹中上传所需jar包,使用 vim 命令创建一个Dockerfile文件,以下是dockerfile文件内容:

### 引入jdk

FROM openjdk:8

###设置作者

MAINTAINER Ruide

###设置工作文件夹

WORKDIR /moyu-sso

###将jar包复制到对应文件夹中

COPY moyudemo-1.0.0-SNAPSHOT.jar /moyu-sso/moyudemo-1.0.0-SNAPSHOT.jar

###设置时区

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \

  && echo 'Asia/Shanghai' >/etc/timezone \

RUN bash -c 'touch /moyu-sso/moyudemo-1.0.0-SNAPSHOT.jar'

###运行命令

ENTRYPOINT ["java","-jar","moyudemo-1.0.0-SNAPSHOT.jar"," > /moyu-sso/logs/info.log 2>&1 &"]

###暴露端口

EXPOSE 8082

编辑完Dockerfile之后,需要构建镜像

docker build -t 【镜像名】 .

构建完镜像后创建一个容器并启动:

docker run -it -p 8080:8080 --name 【容器名】 -d 【镜像名】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容