docker安装及命令
[TOC]
docker安装
- 检查之前是否安装过docker
[root@dig-192-168-9-19 harbor]# rpm -qa |grep docker #查看是否安装过docker
docker-ce-cli-19.03.12-3.el7.x86_64
docker-ce-19.03.12-3.el7.x86_64
[root@dig-192-168-9-19 harbor]#
#有输出证明之前安装过docker需要使用rpm -e --nodeps加上输出的全名
[root@dig-192-168-9-19 harbor]# rpm -e --nodeps docker-ce-cli-19.03.12-3.el7.x86_64 docker-ce-19.03.12-3.el7.x86_64 #卸载之前安装的docker
- 卸载完旧docker后开始安装新的docker
[root@dig-192-168-9-19 harbor]# cd /etc/yum.repos.d/ #进入yum源目录
[root@dig-192-168-9-19 harbor]# mkdir a #创建备份目录
[root@dig-192-168-9-19 harbor]# mv * a #把所有原来的yum源移动到备份目录
[root@dig-192-168-9-19 harbor]# wget https://download.docker.com/linux/centos/docker-ce.repo #下载docker官方的yum源
- 安装docker
[root@dig-192-168-9-19 harbor]# yum -y install docker-ce
#出现以下结果即为安装成功:
Installing : 1:docker-ce-cli-19.03.12-3.el7.x86_64 1/2
Installing : 3:docker-ce-19.03.12-3.el7.x86_64 2/2
Verifying : 1:docker-ce-cli-19.03.12-3.el7.x86_64 1/2
Verifying : 3:docker-ce-19.03.12-3.el7.x86_64 2/2
Installed:
docker-ce.x86_64 3:19.03.12-3.el7
Dependency Installed:
docker-ce-cli.x86_64 1:19.03.12-3.el7
Complete!
- 修改docker配置文件,配置阿里云加速器并更改docker容器的路径
[root@dig-192-168-9-19 harbor]# find / -name "docker.service" #查找配置文件
/usr/lib/systemd/system/docker.service#配置文件的路径
[root@dig-192-168-9-19 harbor]# vim /usr/lib/systemd/system/docker.service#编辑配置文件找到ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock在这行后面加上--registry-mirror=https://kfwkfulq.mirror.aliyuncs.com(配置阿里云加速器,不配置可能会导致无法pull镜像) --graph=/data/docker(配置容器路径)。修改完成后保存退出
#查看自己的阿里云加速器地址步骤为:登录阿里云>>>点击控制台>>>点击左上角的三个->>>点击产品与服务>>>找到容器镜像服务并点击>>>在左侧控制栏找到镜像加速器即可看到加速器地址
- 启动docker
[root@dig-192-168-9-19 harbor]# systemctl daemon-reload #更新配置,每次修改完docker配置文件都要执行
[root@dig-192-168-9-19 harbor]# systemctl start docker #启动docker
[root@dig-192-168-9-19 harbor]# systemctl status docker #查看docker状态,状态为active (running)即为启动成功
docker基本操作
- 下载镜像
[root@dig-192-168-9-19 harbor]# docker pull 192.168.9.19/coal/coal:0.01 #下载镜像,如果报以下错误则需要在/etc/docker/daemon.json内加入配置"insecure-registries": ["192.168.9.19"],如果没有这个文件就新建。配置完成后重新加载配置文件重启docker即可
Error response from daemon: Get https://192.168.9.19/v2/: dial tcp 192.168.9.19:443: connect: connection refused
[root@dig-192-168-9-19 harbor]# cat /etc/docker/daemon.json
{
"insecure-registries": [
"192.168.9.19"
]
}
[root@dig-192-168-9-19 harbor]# systemctl daemon-reload
[root@dig-192-168-9-19 harbor]# service docker restart
#如果是私有镜像仓库需要登录
[root@dig-192-168-9-19 harbor]# docker login 192.168.9.19 #登录docker,出现以下说明docker已经登录成功
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@dig-192-168-9-19 harbor]# docker pull 192.168.9.19/coal/coal:0.01 #下载镜像,出现以下内容说明下载成功
0.01: Pulling from coal/coal
df20fa9351a1: Pull complete
194aa948f3c5: Pull complete
b7dbc99a6285: Pull complete
Digest: sha256:ba157627024d48c0a4d49a073f14be37a857d6acc1d3b6834973eac1970e21ca
Status: Downloaded newer image for 192.168.9.19/coal/coal:0.01
192.168.9.19/coal/coal:0.01
- 查看本地镜像
[root@dig-192-168-9-19 harbor]# docker images
REPOSITORY#仓库/下载地址 TAG#版本号 IMAGE ID#镜像ID CREATED#创建时间 SIZE#镜像大小
192.168.9.19/coal/coal 0.01 17bd7c8d6a09 24 hours ago 322MB
- 查找镜像仓库内的镜像(公共仓库)
[root@dig-192-168-9-19 harbor]# docker search jdk #查看所有jdk镜像
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
primetoninc/jdk Oracle jdk 1.8, 1.7 18 [OK]
ascdc/jdk8 jdk8 9 [OK]
codenvy/jdk8_maven3_tomcat8 JDK 8, Maven 3, Tomcat 8 9 [OK]
codenvy/jdk7_tomcat7 Dockerfile https://github.com/codenvy/docker… 7
kdvolder/jdk8 6
gmaslowski/jdk Oracle JDK8 6
ringcentral/jdk an alpine Linux image included glibc and Ora… 5
openkbs/jdk-mvn-py3 Java 8 OpenJDK + Maven + Python 3+ pip + no… 4 [OK]
codenvy/jdk7 Dockerfile https://github.com/codenvy/docker… 3
codenvy/jdk7_vnc Dockerfile https://github.com/codenvy/docker… 3
codenvy/jdk7_jboss7 Dockerfile https://github.com/codenvy/docker… 2
codenvy/jdk7_jetty9 Dockerfile https://github.com/codenvy/docker… 2
payneteasy/jdk-8 Java 8 for using with gitlab-ci 1 [OK]
andonescu/jdk-8-node-docker-gcp jdk8 node docker gcp 1
ukhydrographicoffice/jdk8-python36 Build image that contains bash, jdk 8 and py… 0
jdk1/php-redis-modified 0
ping2ravi/jdk All Java/JDK Versions 0 [OK]
wealthsimple/jdk 0
guligo/jdk-maven-ant Tool stack consisting of Oracle JDK, Maven a… 0 [OK]
uquote/jdk8-tomee1.7.3-plume Apache Tomee Plume with Oracle JDK 8 on Cent… 0
infinitenature/jdk JDK Images for all jdks jabba supports 0
dwetzel/jdk-ant JDK8 + ANT 0 [OK]
payneteasy/jdk-8-js jdk-8, maven and javascript 0 [OK]
king019/jdk jdk 0
codenvy/jdk7_glassfish4 Dockerfile https://github.com/codenvy/docker… 0
-
可以去docker hub查找需要的镜像下载地址,操作步骤为:进入网址 >>> 点击页面左上方搜索框 >>> 输入你要查找的镜像名称如:查找jdk就输入jdk然后回车搜索 >>> 在搜索结果中点击选择一个你想用的docker镜像 >>> 点击完后右侧会有一条dockerpull命令复制后回到服务器执行
-
docker删除镜像
[root@dig-192-168-9-19 harbor]# docker images #查看本地下载的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.9.19/coal/coal 0.01 17bd7c8d6a09 24 hours ago 322MB
[root@dig-192-168-9-19 harbor]# docker rmi 17bd7c8d6a09 #删除镜像docker rmi为删除命令17bd7c8d6a09为镜像ID
Untagged: 192.168.9.19/coal/coal:0.01
Untagged: 192.168.9.19/coal/coal@sha256:ba157627024d48c0a4d49a073f14be37a857d6acc1d3b6834973eac1970e21ca
Deleted: sha256:17bd7c8d6a09371363d2ca1ac91f620663f789584f43cd1d7312dc5888ef2d80
Deleted: sha256:68917e5f46b829e47dd2ca43ad7cac9e4c3b7d53bf1d0643ead597adebd272a5
Deleted: sha256:6019670350bae38cc67f0d559841848cfd16a307cb1a88658d923b68df66aa1d
Deleted: sha256:50644c29ef5a27c9a40c393a73ece2479de78325cae7d762ef3cdc19bf42dd0a
[root@dig-192-168-9-19 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@dig-192-168-9-19 harbor]#
- docker删除容器
[root@dig-192-168-19-14 data]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d563441524f mysql_test:5.7 "docker-entrypoint.s…" 10 minutes ago Exited (0) About a minute ago mysqld_prod
98e2f80a1ab5 9d9bfc1c7cb2 "/usr/local/bin/clic…" 5 months ago Exited (137) 2 months ago hopeful_kirch
[root@dig-192-168-19-14 data]# docker rm 9d563441524f
9d563441524f
[root@dig-192-168-19-14 data]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
98e2f80a1ab5 9d9bfc1c7cb2 "/usr/local/bin/clic…" 5 months ago Exited (137) 2 months ago hopeful_kirch
- 把镜像导出到本地
[root@dig-192-168-9-19 harbor]# ls
abc.txt anaconda-ks.cfg get-pip.py googe install-google-chrome.sh jdk-8u91-linux-x64.tar.gz recommended.yaml
[root@dig-192-168-9-19 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.9.19/coal/coal 0.01 17bd7c8d6a09 24 hours ago 322MB
[root@dig-192-168-9-19 harbor]# docker save 192.168.9.19/coal/coal:0.01 > coal.jar #docker save为固定格式。192.168.9.19/coal/coal:0.01为镜像名对应和对应的版本号
[root@dig-192-168-9-19 harbor]# ls
abc.txt anaconda-ks.cfg coal.jar get-pip.py googe install-google-chrome.sh jdk-8u91-linux-x64.tar.gz recommended.yaml
- 把镜像的导出文件重新制作成镜像
[root@dig-192-168-9-19 harbor]# ls
abc.txt anaconda-ks.cfg get-pip.py googe install-google-chrome.sh jdk-8u91-linux-x64.tar.gz recommended.yaml
[root@dig-192-168-9-19 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.9.19/coal/coal 0.01 17bd7c8d6a09 24 hours ago 322MB
[root@dig-192-168-9-19 harbor]# docker save 192.168.9.19/coal/coal:0.01 > coal.jar #docker save为固定格式。192.168.9.19/coal/coal:0.01为镜像名对应和对应的版本号
[root@dig-192-168-9-19 harbor]# ls
abc.txt anaconda-ks.cfg coal.jar get-pip.py googe install-google-chrome.sh jdk-8u91-linux-x64.tar.gz recommended.yaml
[root@dig-192-168-9-19 harbor]# docker images #查看本地下载的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.9.19/coal/coal 0.01 17bd7c8d6a09 24 hours ago 322MB
[root@dig-192-168-9-19 harbor]# docker rmi 17bd7c8d6a09 #删除镜像docker rmi为删除命令17bd7c8d6a09为镜像ID
Untagged: 192.168.9.19/coal/coal:0.01
Untagged: 192.168.9.19/coal/coal@sha256:ba157627024d48c0a4d49a073f14be37a857d6acc1d3b6834973eac1970e21ca
Deleted: sha256:17bd7c8d6a09371363d2ca1ac91f620663f789584f43cd1d7312dc5888ef2d80
Deleted: sha256:68917e5f46b829e47dd2ca43ad7cac9e4c3b7d53bf1d0643ead597adebd272a5
Deleted: sha256:6019670350bae38cc67f0d559841848cfd16a307cb1a88658d923b68df66aa1d
Deleted: sha256:50644c29ef5a27c9a40c393a73ece2479de78325cae7d762ef3cdc19bf42dd0a
[root@dig-192-168-9-19 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@dig-192-168-9-19 harbor]# docker load -i coal.jar #docker load -i为固定格式,coal.jar为刚才save导出的文件
50644c29ef5a: Loading layer [==================================================>] 5.845MB/5.845MB
51fac5ab9401: Loading layer [==================================================>] 240.6MB/240.6MB
b9434bf6232b: Loading layer [==================================================>] 76.69MB/76.69MB
Loaded image: 192.168.9.19/coal/coal:0.01
[root@dig-192-168-9-19 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.9.19/coal/coal 0.01 17bd7c8d6a09 25 hours ago 322MB
[root@dig-192-168-9-19 harbor]#
- docker修改镜像名称和版本号
[root@dig-192-168-9-19 harbor]# docker images #查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.9.19/coal/coal 0.01 17bd7c8d6a09 25 hours ago 322MB
[root@dig-192-168-9-19 harbor]# docker tag 17bd7c8d6a09 coal:0.01 #修改镜像名称和版本号,docker tag的作用是标记本地镜像,将其归入某一仓库,也可用于改名。17bd7c8d6a09为镜像ID,coal:0.01为你要修改的镜像名称和版本
[root@dig-192-168-9-19 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.9.19/coal/coal 0.01 17bd7c8d6a09 25 hours ago 322MB
coal 0.01 17bd7c8d6a09 25 hours ago 322MB
[root@dig-192-168-9-19 harbor]# docker rmi 192.168.9.19/coal/coal:0.01 #删除原来的镜像
Untagged: 192.168.9.19/coal/coal:0.01
[root@dig-192-168-9-19 harbor]# docker images #查看本地镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
coal 0.01 17bd7c8d6a09 25 hours ago 322MB
[root@dig-192-168-9-19 harbor]#
- 推送镜像到私有仓库
[root@dig-192-168-9-19 harbor]# docker images #查看本地镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
coal 0.01 17bd7c8d6a09 25 hours ago 322MB
[root@dig-192-168-9-19 harbor]# docker tag coal:0.01 192.168.9.19/coal/coal:0.02 #把镜像的名称和对应的版本改为 docker仓库地址:版本。注意docker push的镜像名称需要和镜像仓库的地址相同
[root@dig-192-168-9-19 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.9.19/coal/coal 0.02 17bd7c8d6a09 25 hours ago 322MB
coal 0.01 17bd7c8d6a09 25 hours ago 322MB
[root@dig-192-168-9-19 harbor]# docker push 192.168.9.19/coal/coal:0.02 #开始推送,出现以下内容即为推送完成,可前往私有仓库进行查看
The push refers to repository [192.168.9.19/coal/coal]
b9434bf6232b: Layer already exists
51fac5ab9401: Layer already exists
50644c29ef5a: Layer already exists
0.02: digest: sha256:ba157627024d48c0a4d49a073f14be37a857d6acc1d3b6834973eac1970e21ca size: 953
[root@dig-192-168-9-19 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.9.19/coal/coal 0.02 17bd7c8d6a09 25 hours ago 322MB
coal 0.01 17bd7c8d6a09 25 hours ago 322MB
- 运行镜像
[root@dig-192-168-9-19 harbor]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
6910e5a164f7: Pull complete
Digest: sha256:4062bbdd1bb0801b0aa38e0f83dece70fb7a5e9bce223423a68de2d8b784b43b
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
[root@dig-192-168-9-19 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
coal 0.01 17bd7c8d6a09 25 hours ago 322MB
centos latest 831691599b88 13 days ago 215MB
[root@dig-192-168-9-19 harbor]# docker run -d -p 5001:8080 -p 5002:8080 -it --name myCentos 831691599b88 /bin/bash
#-d 后台运行
#–name 容器名
#-p 把:前面的本地服务器端口映射到容器的端口可以一次映射多个但是不能端口重复
#831691599b88:镜像ID
d8bfe9adb3bc79f028a3288f5592e4e454d6cce978c3c14a4ed714398947c7d3
- 查看运行的容器
[root@dig-192-168-9-19 harbor]# docker ps -a#查看所有容器
CONTAINER ID#容器ID IMAGE#镜像ID COMMAND CREATED STATUS#运行状态 PORTS#端口映射 NAMES#容器名称
d8bfe9adb3bc 831691599b88 "/bin/bash" About a minute ago Up About a minute 0.0.0.0:5001->8080/tcp, 0.0.0.0:5002->8080/tcp myCentos
[root@dig-192-168-9-19 harbor]#
- 停止容器
[root@dig-192-168-9-19 harbor]# docker ps -a #查看所有容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d8bfe9adb3bc 831691599b88 "/bin/bash" About a minute ago Up About a minute 0.0.0.0:5001->8080/tcp, 0.0.0.0:5002->8080/tcp myCentos
[root@dig-192-168-9-19 harbor]# docker stop myCentos #停止myCentos容器
myCentos
[root@dig-192-168-9-19 harbor]# docker ps -a #查看所有容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d8bfe9adb3bc 831691599b88 "/bin/bash" 7 minutes ago Exited (0) 10 seconds ago myCentos
- 启动停止的容器
与启动镜像不同,启动镜像相当于把镜像注册为容器,而启动容器则是直接启动注册过的镜像
[root@dig-192-168-9-19 harbor]# docker ps -a #查看所有容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d8bfe9adb3bc 831691599b88 "/bin/bash" 7 minutes ago Exited (0) 10 seconds ago myCentos
[root@dig-192-168-9-19 harbor]# docker start myCentos #启动myCentos容器
myCentos
[root@dig-192-168-9-19 harbor]# docker ps -a #查看所有容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d8bfe9adb3bc 831691599b88 "/bin/bash" 8 minutes ago Up 4 seconds 0.0.0.0:5001->8080/tcp, 0.0.0.0:5002->8080/tcp myCentos
- 进入容器
[root@dig-192-168-9-19 harbor]# ip a #进入前先查看本机IP信息
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 64:00:6a:52:5c:17 brd ff:ff:ff:ff:ff:ff
inet 192.168.9.45/24 brd 192.168.9.255 scope global noprefixroute em1
valid_lft forever preferred_lft forever
inet6 fe80::4fc3:dbd5:c5d6:9557/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:65:9e:0f:9c brd ff:ff:ff:ff:ff:ff
inet 10.88.91.1/24 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:65ff:fe9e:f9c/64 scope link
valid_lft forever preferred_lft forever
4: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN group default qlen 500
link/none
inet 10.88.91.0/16 scope global flannel0
valid_lft forever preferred_lft forever
inet6 fe80::e3b0:db37:1042:c549/64 scope link flags 800
valid_lft forever preferred_lft forever
[root@dig-192-168-9-19 harbor]# docker attach myCentos #进入容器。docker attach为固定格式,myCentos为容器名也可以写成容器ID
[root@d8bfe9adb3bc /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@d8bfe9adb3bc /]# cd
[root@d8bfe9adb3bc ~]# ls
anaconda-ks.cfg anaconda-post.log original-ks.cfg
[root@d8bfe9adb3bc ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
7: eth0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:0a:58:5b:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.88.91.2/24 brd 10.88.91.255 scope global eth0
valid_lft forever preferred_lft forever
[root@d8bfe9adb3bc ~]# exit #退出容器,退出后容器会自动关闭可以使用Ctrl+P+Q退出,这样退出后仍然会保持容器运行
exit
- 向容器内复制文件
[root@dig-192-168-9-19 harbor]# docker ps -a #查看所有容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d8bfe9adb3bc 831691599b88 "/bin/bash" 48 minutes ago Up 3 minutes 0.0.0.0:5001->8080/tcp, 0.0.0.0:5002->8080/tcp myCentos
[root@dig-192-168-9-19 ~]# docker attach myCentos #进入容器
[root@d8bfe9adb3bc ~]# ls #查看文件和目录
anaconda-ks.cfg anaconda-post.log original-ks.cfg
[root@d8bfe9adb3bc ~]# pwd #查看当前路径
/root
[root@d8bfe9adb3bc ~]# read escape sequence #Ctrl+P+Q退出容器
[root@dig-192-168-9-19 ~]# docker cp coal.jar myCentos:/root #把coal.jar复制到容器内,docker cp为复制命令,coal.jar为本地的文件名称,myCentos:/root为容器名称和要把文件放到容器内的那个目录下
[root@dig-192-168-9-19 ~]# docker attach myCentos #重新进入容器
[root@d8bfe9adb3bc ~]# ls #查看文件和目录
anaconda-ks.cfg anaconda-post.log coal.jar original-ks.cfg
[root@d8bfe9adb3bc ~]# pwd #查看当前路径
/root
[root@d8bfe9adb3bc ~]#
- 查看容器内运行的进程
[root@dig-192-168-9-19 harbor]# docker top myCentos
UID PID PPID C STIME TTY TIME CMD
root 2443 2426 0 15:44 pts/0 00:00:00 /bin/bash
[root@dig-192-168-9-19 harbor]#
- 创建镜像
docker创建镜像需要dockerfile文件和源文件
[root@dig-192-168-9-19 k8s]# cat Dockerfile #查看Dockerfile
FROM jdk:8 #表示需要镜像名为jdk tag为8的镜像支持
ADD coal_seam_monitoring-0.0.1.jar app.jar #把coal_seam_monitoring-0.0.1.jar改名为app.jar
EXPOSE 9010 #暴露端口
ENTRYPOINT ["java","-jar","app.jar"] #启动命令
[root@dig-192-168-9-19 k8s]# ls
coal_seam_monitoring-0.0.1.jar Dockerfile
[root@dig-192-168-9-19 k8s]# pwd
/data/k8s
[root@dig-192-168-9-19 k8s]# docker images #查看现在的本地镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.9.19/jdk/jdk 8 a39488180474 3 days ago 245MB
jdk 8 a39488180474 3 days ago 245MB
[root@dig-192-168-9-19 k8s]# docker build -t coal:0.1 . #docker build 为构建镜像的命令,-t指定镜像名和标签,.为当前路径
Sending build context to Docker daemon 76.69MB
Step 1/4 : FROM jdk:8
---> a39488180474
Step 2/4 : ADD coal_seam_monitoring-0.0.1.jar app.jar
---> ff881bf8c6a4
Step 3/4 : EXPOSE 9010
---> Running in 4e8453ef2f85
Removing intermediate container 4e8453ef2f85
---> addfa5b20fde
Step 4/4 : ENTRYPOINT ["java","-jar","app.jar"]
---> Running in b025872858b1
Removing intermediate container b025872858b1
---> 43380628d27f
Successfully built 43380628d27f
Successfully tagged coal:0.1
[root@dig-192-168-9-19 k8s]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
coal 0.1 43380628d27f About a minute ago 322MB
192.168.9.19/jdk/jdk 8 a39488180474 3 days ago 245MB
jdk 8 a39488180474 3 days ago 245MB
- docker build参数详解
--build-arg=[] :设置镜像创建时的变量;
--cpu-shares :设置 cpu 使用权重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配额;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的内存 id;
--disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
--force-rm :设置镜像过程中删除中间容器;
--isolation :使用容器隔离技术;
--label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
--no-cache :创建镜像的过程不使用缓存;
--pull :尝试去更新镜像的新版本;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--ulimit :Ulimit配置。
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
--network: 默认 default。在构建期间设置RUN指令的网络模式
docker命令大全
管理命令:
container 管理容器
image 管理镜像
network 管理网络
node 管理Swarm节点
plugin 管理插件
secret 管理Docker secrets
service 管理服务
stack 管理Docker stacks
swarm 管理Swarm集群
system 查看系统信息
volume 管理卷
如:docker container ls 显示所有容器
普通命令:
attach 进入一个运行的容器
build 从一个DockerFile构建镜像
commit 从容器创建一个镜像
cp 从容器和主机文件系统之间拷贝文件
create 创建一个容器
diff 检查容器文件系统上的更改
events 从服务器获取实时事件
exec 在正在运行的容器中运行命令
export 将容器的文件系统导出为tar存档
history 显示镜像的历史记录
images 查看镜像列表
import 从归档文件中创建镜像
info 显示系统范围的信息
inspect 返回Docker对象的低级信息
kill kill运行中的容器
load 从存档或者STDIN加载镜像
login 登陆docker镜像仓库
logout 退出docker镜像仓库
logs 获取一个容器的日志
pause 暂停一个或多个容器中的所有进程
port 查看端口映射或容器的特定映射列表
ps 查看容器列表
pull 从镜像仓库拉取镜像
push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
rename 重命名容器
restart 重启容器
rm 删除容器
rmi 删除镜像
run 创建一个新的容器并运行一个命令
save 将指定镜像保存成 tar 归档文件
search 从Docker Hub搜索镜像
start 启动容器
stats 实时显示容器资源使用情况的统计信息
stop 停止容器
tag 标记本地镜像,将其归入某一仓库
top 展示一个容器中运行的进程
unpause 恢复容器中所有的进程
update 更新容器配置
version 显示Docker的版本信息
wait 阻塞直到容器停止,然后打印退出代码
- docker run命令常用选项说明
-d, --detach=false, 指定容器运行于前台还是后台,默认为false
-i, --interactive=false, 打开STDIN,用于控制台交互
-t, --tty=false, 分配tty设备,该可以支持终端登录,默认为false
-u, --user="", 指定容器的用户
-a, --attach=[], 登录容器(必须是以docker run -d启动的容器)
-w, --workdir="", 指定容器的工作目录
-c, --cpu-shares=0, 设置容器CPU权重,在CPU共享场景使用
-e, --env=[], 指定环境变量,容器中可以使用该环境变量
-m, --memory="", 指定容器的内存上限
-P, --publish-all=false, 指定容器暴露的端口
-p, --publish=[], 指定容器暴露的端口
-h, --hostname="", 指定容器的主机名
-v, --volume=[], 给容器挂载存储卷,挂载到容器的某个目录
--volumes-from=[], 给容器挂载其他容器上的卷,挂载到容器的某个目录
--cap-add=[], 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cap-drop=[], 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cidfile="", 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
--cpuset="", 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
--device=[], 添加主机设备给容器,相当于设备直通
--dns=[], 指定容器的dns服务器
--dns-search=[], 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
--entrypoint="", 覆盖image的入口点
--env-file=[], 指定环境变量文件,文件格式为每行一个环境变量
--expose=[], 指定容器暴露的端口,即修改镜像的暴露端口
--link=[], 指定容器间的关联,使用其他容器的IP、env等信息
--lxc-conf=[], 指定容器的配置文件,只有在指定--exec-driver=lxc时使用
--name="", 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
--net="bridge", 容器网络设置:
bridge 使用docker daemon指定的网桥
host //容器使用主机的网络
container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
none 容器使用自己的网络(类似--net=bridge),但是不进行配置
--privileged=false, 指定容器是否为特权容器,特权容器拥有所有的capabilities
--restart="no", 指定容器停止后的重启策略:
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
--rm=false, 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--sig-proxy=true, 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
扫描二维码,在手机上阅读