docker usage

DOCKER 用法简要教程

构建镜像

Dockerfile 示例

1
2
3
4
5
6
7
8
FROM openjdk:8-jre
MAINTAINER dev@shtianxin.com
WORKDIR /opt/app
ADD cela-service-platform-gateway.jar /opt/app/main.jar
ADD profile /opt/app/profile
ENV JVM_PARAMS=""
ENV APP_PARAMS=""
ENTRYPOINT ["sh","-c","java $JVM_PARAMS -jar /opt/app/main.jar $APP_PARAMS"]
  • FROM 使用的基础镜像
  • MAINTAINER 维护者信息
  • WORKDIR 工作目录,容器内路径
  • ADD 从构建的本地系统复制文件至容器内
  • ENV 容器内的环境变量配置
  • ENTRYPOINT 入口点,容器启动时的运行命令,也可使用CMD命令代替,推荐使用ENTRYPOINT

构建命令

1
docker build -t hub.facemeta.cn:88/cela/service-gateway:0.3.4 ./

-t 为镜像地址和版本号,如不带版本号则默认最后一次为lastest

镜像推送

如使用私服地址,需使用如下命令登录一次

1
2
3
4
[root@odp-test-1 ~]# docker login hub.facemeta.cn:88
Username (tianxin): tianxin
Password:
Login Succeeded

然后执行

1
docker push hub.facemeta.cn:88/cela/service-gateway:0.3.4

run

示例

1
2
3
4
5
6
7
8
9
10
11
docker run -d \
--restart=always \
--name registry2 \
-p 5000:5000 \
-v /opt/data/registry:/var/lib/registry \
-v /data/docker-registry/config.yml:/etc/docker/registry/config.yml \
-v /opt/etc/docker/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry:2.7.1
  • –restart 容器重启后的策略
  • –name 指定的容器名,不可重复
  • -p 端口号 以”:”分割,前面为本地端口后面为容器内端口
  • -v 挂载路径 以”:”分割,前面为本地路径,后面为容器内路径
  • -e 设置环境变量
  • –add-host 在容器添加需解析的主机名,可以多个,用”,”分割,格式为hostname:ip
  • -d daemon运行,默认为false
  • registry:2.7.1 容器镜像及版本号,不指定版本号则默认为lastest

ps

查看所有运行中的的容器,加-a 参数显示所有(包括已退出的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@odp-test-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9b8fd9b9f82c 2c9745890a8f "sh -c 'java $JVM_PA…" 4 hours ago Up 4 hours k8s_service-app-test_service-app-test-5dd98f65dd-5jfwg_cela_7e0083be-4e06-11e9-9bed-ac162dbcb924_1
1c7a9f903d44 2f571e7137b5 "sh -c 'java $JVM_PA…" 4 hours ago Up 4 hours k8s_manager-app-test_manager-app-test-7bc97bdb6-cfqzw_cela_260300b7-4e0e-11e9-920a-ac162da393c0_0
81963e3896c8 hub.facemeta.cn:88/pause:3.1 "/pause" 4 hours ago Up 4 hours k8s_POD_manager-app-test-7bc97bdb6-cfqzw_cela_260300b7-4e0e-11e9-920a-ac162da393c0_0
593d0b8a8bf4 f7b6cce2ec1f "sh -c 'java $JVM_PA…" 5 hours ago Up 5 hours k8s_cas-app-test_cas-app-test-74cb4f69dc-5qz6h_cela_c2c53178-4e06-11e9-9bed-ac162dbcb924_0
bc4a2262d925 hub.facemeta.cn:88/pause:3.1 "/pause" 5 hours ago Up 5 hours k8s_POD_cas-app-test-74cb4f69dc-5qz6h_cela_c2c53178-4e06-11e9-9bed-ac162dbcb924_0
57a69251584c hub.facemeta.cn:88/pause:3.1 "/pause" 5 hours ago Up 5 hours k8s_POD_service-app-test-5dd98f65dd-5jfwg_cela_7e0083be-4e06-11e9-9bed-ac162dbcb924_0
2b44b897e68e 9e31e91b3709 "sh -c 'java $JVM_PA…" 5 hours ago Up 5 hours k8s_gateway-app-test_gateway-app-test-5b8f445667-b7wtq_cela_0924debf-4e06-11e9-9bed-ac162dbcb924_0
aeaaf729fbf8 hub.facemeta.cn:88/pause:3.1 "/pause" 5 hours ago Up 5 hours k8s_POD_gateway-app-test-5b8f445667-b7wtq_cela_0924debf-4e06-11e9-9bed-ac162dbcb924_0
338f32415836 789b7f496034 "/usr/bin/weave-npc" 6 hours ago Up 6 hours k8s_weave-npc_weave-net-pmvxj_kube-system_e5d0a744-4c85-11e9-a4c8-ac162da393c0_6
f3794e052bc5 1f394ae9e226 "/home/weave/launch.…" 6 hours ago Up 6 hours k8s_weave_weave-net-pmvxj_kube-system_e5d0a744-4c85-11e9-a4c8-ac162da393c0_6
ad86369b6486 fadcc5d2b066 "/usr/local/bin/kube…" 7 hours ago Up 7 hours k8s_kube-proxy_kube-proxy-8wqhw_kube-system_e87019fa-4c83-11e9-a4c8-ac162da393c0_2
cc13380e37b4 hub.facemeta.cn:88/pause:3.1 "/pause" 2 days ago Up 2 days k8s_POD_weave-net-pmvxj_kube-system_e5d0a744-4c85-11e9-a4c8-ac162da393c0_2
3a1b58a039eb hub.facemeta.cn:88/pause:3.1 "/pause" 2 days ago Up 2 days k8s_POD_kube-proxy-8wqhw_kube-system_e87019fa-4c83-11e9-a4c8-ac162da393c0_2

logs

1
docker logs -f --tail 100 9b8fd9b9f82c
  • –tail 最后多少行
  • -f 滚动刷新

exec

在运行中的容器执行命令,linux

1
2
[root@odp-test-1 ~]# docker exec -it 2b44b897e68e bash
root@gateway-app-test-5b8f445667-b7wtq:/opt/app#
  • -i STDIN
  • -t 命令行交互模式
  • bash 开启bash会话

kill

1
docker kill 2b44b897e68e

删除镜像

1
docker rmi 2f571e7137b5

删除容器

1
docker rm 9b8fd9b9f82c

常用命令

删除已退出的容器

1
docker rm $(sudo docker ps -qf status=exited)