设为首页 收藏本站
查看: 883|回复: 0

[经验分享] docker常见使用方法总结

[复制链接]

尚未签到

发表于 2018-5-26 11:56:04 | 显示全部楼层 |阅读模式
docker技术使用:

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]
  1、 yum -y remove docker   先删除之前的docker产品
yum install -y yum-utils  安装yum-config-manager管理工具
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo  添加docker-ce的源。
yum -y install docker-ce
  安装docker
  1、使用:
01、启动:systemctl start docker
02、docker pull ubuntu   pull从网上下载一个镜像。
docker pull [OPTIONS] NAME[:TAG|@DIGEST]  使用方法
docker pull REGISRY_HOST:PORT/NAME[:TAG]

03、docker run -t -i ubuntu /bin/bash  docker的运行
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]    使用语法。
-a stdin 指定标准输入输出内容类型,可选 STDIN/STDOUT / STDERR 三项;
-d 后台运行容器,并返回容器ID;
-i 以交互模式运行容器,通常与 -t 同时使用;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb" 为容器指定一个名称;
--dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com 指定容器DNS搜索域名,默认和宿主一致;
-h "mars" 指定容器的hostname;
-e username="ritchie" 设置环境变量;
--env-file=[] 从指定文件读入环境变量;
04、docker images  查看已下载镜像。
05、docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]  tag的使用方式,打标签。
docker tag ubuntu:latest ubuntu:lufei
06、docker inspect 747cb2d60bbe   查看一个镜像的详细信息。
07、docker search  --no-trunc=false nginx  查找指定的镜像文件
--no-trunc=false  输出信息不截断显示。
08、docker rmi nginx:123  删除指定镜像,名字:标记。
docker rmi 196e0ce0c9fb   用指定的Id来删除指定的镜像,但是必须是唯一的ID,否则会报错误。
-f:强制删除镜像。
09、docker run ubuntu echo "ni hao" 运行时可以直接接命令。
010、docker ps -a   查看已经运行的docker镜像。
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
021bd5c6baf7        ubuntu              "echo 'ni hao'"     11 seconds ago      Exited (0) 11 seconds ago                       suspicious_saha
94576603c522        ubuntu              "/bin/bash"         43 hours ago        Exited (127) 43 hours ago                       quirky_boyd
c85ac6bcf9ee        ubuntu              "/bin/bash"         43 hours ago        Exited (0) 43 hours ago                         lucid_torvalds
6764114b5ece
011、存出和载入镜像。
001、导出镜像
docker save -o nginx-latest.tar nginx:latest   导出一个镜像。
[root@localhost ~]# ll  查看导出结果。
total 314756
-rw-r--r-- 1 root root         0 Oct 17 04:11 --add-repo
-rw-r--r-- 1 root root 210291971 Nov 27  2016 centos-6-x86-minimal.tar.gz
-rw------- 1 root root 112016896 Oct 19 00:27 nginx-latest.tar
002、载入镜像
[root@localhost ~]# docker rmi nginx:latest   先删除之前导出的镜像。
Untagged: nginx:latest
Untagged: nginx@sha256:004ac1d5e791e705f12a17c80d7bb1e8f7f01aa7dca7deee6e65a03465392072
Deleted: sha256:1e5ab59102ce46c277eda5ed77affaa4e3b06a59fe209fe0b05200606db3aa7a
Deleted: sha256:182a54bd28aa918a440f7edd3066ea838825c3d6a08cc73858ba070dc4f27211
Deleted: sha256:a527b2a06e67cab4b15e0fd831882f9e6a6485c24f3c56f870ac550b81938771
Deleted: sha256:cec7521cdf36a6d4ad8f2e92e41e3ac1b6fa6e05be07fa53cc84a63503bc5700
[root@localhost ~]# docker images   查看是否已经删除。
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos-6            lufei               4e05814cc000        6 minutes ago       512MB
test                latest              f010d6ffbfea        About an hour ago   122MB
ubuntu              latest              747cb2d60bbe        8 days ago          122MB
ubuntu              lufei               747cb2d60bbe        8 days ago          122MB
centos              latest              196e0ce0c9fb        4 weeks ago         197MB
[root@localhost ~]# docker load --input nginx-latest.tar    载入镜像。方法一
cec7521cdf36: Loading layer [==================================================>]  58.44MB/58.44MB
453fc2d51e11: Loading layer [==================================================>]  53.56MB/53.56MB
a1a53f8d99b5: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: nginx:latest
docker load < nginx-latest.tar   导入镜像,方法2.
查看:
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos-6            lufei               4e05814cc000        10 minutes ago      512MB
test                latest              f010d6ffbfea        About an hour ago   122MB
ubuntu              latest              747cb2d60bbe        8 days ago          122MB
ubuntu              lufei               747cb2d60bbe        8 days ago          122MB
nginx               latest              1e5ab59102ce        9 days ago          108MB
centos              latest              196e0ce0c9fb        4 weeks ago         197MB   
创建一个镜像的三种方法:
1、基于已有镜像的容器创建:
01、docker run -ti ubuntu /bin/bash   先运行一个镜像
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
Digest: sha256:506e2d5852de1d7c90d538c5332bd3cc33b9cbd26f6ca653875899c505c82687
Status: Downloaded newer image for ubuntu:latest
02、root@6764114b5ece:/# ls   在已运行的镜像中操作一些东西,然后退出。
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@6764114b5ece:/# touch 123
root@6764114b5ece:/# vim 123
bash: vim: command not found
root@6764114b5ece:/# vi 123
bash: vi: command not found
root@6764114b5ece:/# echo "ni hao ">123
root@6764114b5ece:/# cat 123
ni hao
root@6764114b5ece:/# exit   在退出前需要记住6764114b5ece ID号。
exit
03、[root@localhost ~]# docker commit -m "lufei1" -a "xin de " 6764114b5ece test    创建镜像文件。
sha256:f010d6ffbfeae03bba5f32a497b6142ea66362f091633767775979389ee0a9e2
[root@localhost ~]# docker images   查看新创建的。
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test                latest              f010d6ffbfea        18 seconds ago      122MB
ubuntu              latest              747cb2d60bbe        8 days ago          122MB
ubuntu              lufei               747cb2d60bbe        8 days ago          122MB
nginx               345                 1e5ab59102ce        9 days ago          108MB
nginx               latest              1e5ab59102ce        9 days ago          108MB
centos              latest              196e0ce0c9fb        4 weeks ago         197MB
说明:-m:提交消息,-a: 作者信息, -p:提交时暂停容器运行。
2、基于本地模板导入一个镜像。
01、wget http://download.openvz.org/template/precreated/centos-6-x86-minimal.tar.gz  下载一个镜像模板
02、cat centos-6-x86-minimal.tar.gz |docker import - centos-6:lufei   导入,centos-6:lufei为名字,导入命令:import -
sha256:4e05814cc00015a9a2e919729fdbc5d3e8382e0ba5950333a3db023f2831310c
03、查看:
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
centos-6            lufei               4e05814cc000        About a minute ago   512MB
test                latest              f010d6ffbfea        43 minutes ago       122MB
ubuntu              latest              747cb2d60bbe        8 days ago           122MB
ubuntu              lufei               747cb2d60bbe        8 days ago           122MB
nginx               345                 1e5ab59102ce        9 days ago           108MB
nginx               latest              1e5ab59102ce        9 days ago           108MB
centos              latest              196e0ce0c9fb        4 weeks ago          197MB
  第四章:容器

一、创建容器:
1、
docker create -it  mysql:latest  创建一个容器,现在本地搜索,若有这一本地为模板来创建,若没有则会连接网络下载一个。
-t:分配一个伪终端,并绑定到容器的标准输入上。
-i:让容器的标准输入保持打开。
创建完成后查看
docker ps -a 查看其状态。
docker run -t -i ubuntu:latest /bin/bash  创建后运行。
exit  退出,并且终止程序运行。
2、守护状态运行:
docker run -d -v /usr/local/chenxu/gdca/:/usr/local/tomcat/webapps/ -v /com/:/com/ --name gdca -p 803:8080 tomcat:7
-d:守护状态运行,后台运行
-v:指定挂载目录, 宿主机的目录:容器目录
-p:指定端口,宿主机端口:容器端口
--name 指定别名
二、终止容器
1、stop
01、docker stop ID  在宿主机可以执行的方式
02、exit   在容器内部退出容器时,也及终止
03、ctrl+D  在容器内部退出容器时,也及终止
2、启动一个停止的容器
start:docker start ID
3、进入容器
01、attach
docker attach ID   ID使用docker ps -a获得
02、exec
docker exec -it ID/名字 /bin/bash
03、nsenter工具,此工具以后再做学习使用
yum -y install util-linux   先安装此工具
4、删除容器rm
docker rm `docker ps -a -q`   删除所有不在运行的容器
docker rm -f `docker ps -a -q   删除所有容器。
docker rm `docker ps -a |grep Exited|awk '{print $1}'`  删除已经退出的容器
5、导入和导出容器
01、导出:export
[root@centos7-174 docker-rongqi]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
65c06cdfbb8c        196e0ce0c9fb        "/bin/bash"         7 minutes ago       Up 7 minutes                            hungry_darwin
[root@centos7-174 docker-rongqi]# docker export 65c06cdfbb8c >centos_latest.tar
[root@centos7-174 docker-rongqi]# ll
总用量 200408
-rw-r--r--. 1 root root 205216768 10月 31 09:24 centos_latest.tar
02、导入:import
[root@centos7-174 docker-rongqi]# cat centos_latest.tar |docker import - test/centos:v1.0
sha256:833545e673b27d8718f451f6597c1e86f64264643f951cdbc6a74157e0ef4010
[root@centos7-174 docker-rongqi]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test/centos         v1.0                833545e673b2        31 seconds ago      196.6 MB
tomcat              latest              71221ee31c0b        20 hours ago        454.3 MB
docker.io/nginx     latest              c59f17fe53b0        3 days ago          108.4 MB
docker.io/tomcat    7                   e1ac7618b15d        2 weeks ago         454.3 MB
docker.io/centos    latest              196e0ce0c9fb        6 weeks ago         196.6 MB
第五章:仓库
5.1、docker hub 官方:https://hub.docker.com  lufei0920 feilu0920@163.com lufei19810920
[root@centos7-174 docker-rongqi]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: lufei0920
Password:
Login Succeeded
docker search centos 搜索指定的镜像。
存放在 /var/lib/docker
5.2、创建私有仓库
docker run -d -p5000:5000 -v /opt/data/registry:/tmp/registry registry  创建私有仓库并在本地指定一个地址。
[root@centos7-173 ~]# docker tag centos:latest 192.168.1.173:5000/test  创建一个指定地址的镜像。
其格式:docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
[root@centos7-174 docker-rongqi]# docker push 192.168.1.174:5000/test  上传镜像到本地仓库,报错。
The push refers to a repository [192.168.1.174:5000/test]
Get https://192.168.1.174:5000/v1/_ping: http: server gave HTTP response to HTTPS client
修复以上报错方法:
vim /etc/docker/daemon.json  在此文件中添加配置内容
{
"bip": "192.168.0.1/24",   此行内容是修改默认docker0地址的方式。其要和下面的配置用,分割。
"insecure-registries": ["192.168.1.174:5000"]  此行内容是修复上传报错的问题。如果是其他服务器上的docker也需要配置此项。
}
[root@centos7-175 ~]# docker pull 192.168.1.174:5000/tomcat-latest   从自己的私有仓库中下载镜像。
第六章:数据管理
6.1、数据卷
1、如何在容器中创建一个数据卷: 使用-v选项
docker run -d   -v /usr/local/njxs:/usr/local/tomcat/webapps:ro -v /com:/com  -p 8081:807 tomcat:njxs
说明:-d:后台运行
-v:挂载数据卷,可以使用多个-v挂载多个数据卷
:ro/:rw:指定为只读或读写。
6.2、数据卷容器:--volumes-from
[root@centos7-174 ~]# docker run -d -v /dbdata --name dbdata tomcat:latest  先创建一个数据卷容器
61f26198d4630b55c33b8d579fd8c97f06337d17cc229152bab9d74870c9b239
[root@centos7-174 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
61f26198d463        tomcat:latest       "catalina.sh run"        4 seconds ago       Up 3 seconds        8080/tcp                 dbdata
db7946e42083        registry            "/entrypoint.sh /etc/"   2 hours ago         Up 2 hours          0.0.0.0:5000->5000/tcp   hopeful_allen
[root@centos7-174 ~]# docker run -d --volumes-from dbdata --name db1 tomcat:latest   将新创建的容器挂载到刚刚床架你的数据局卷容器上。
c3a6ac9b6f342a273d72f973aefce67974097f5e38134e124c10e0e279f3bd3f
[root@centos7-174 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
c3a6ac9b6f34        tomcat:latest       "catalina.sh run"        4 seconds ago       Up 2 seconds        8080/tcp                 db1
61f26198d463        tomcat:latest       "catalina.sh run"        43 seconds ago      Up 42 seconds       8080/tcp                 dbdata
db7946e42083        registry            "/entrypoint.sh /etc/"   2 hours ago         Up 2 hours          0.0.0.0:5000->5000/tcp   hopeful_allen
[root@centos7-174 ~]# docker exec -it 61f26198d463 /bin/bash   进入第一个容器的/dbdata目录创建一个文件test
root@61f26198d463:/usr/local/tomcat# cd /dbdata/                                                                                                                                             
root@61f26198d463:/dbdata# ls
root@61f26198d463:/dbdata# touch test
root@61f26198d463:/dbdata#
[root@centos7-174 registry]# docker exec -it  61f26198d463 /bin/bash   再进入第二个容器的相应目录下,查看是否有刚创建的文件。
root@61f26198d463:/usr/local/tomcat# cd /dbdata/                                                                                                                                             
root@61f26198d463:/dbdata# ls
test
6.3、利用数据卷进行数据迁移:
第七章:网络:
7.1、端口映射实现访问容器。使用-p
[root@centos7-174 ~]# docker run -d -p 808:8080 tomcat:latest   指定端口映射端口
3aa0c4ce060c945c1dacc976fb88895ece8101f4c5172928ee2e022427a4f152
[root@centos7-174 ~]# docker run -d -p 192.168.1.174:809:8080 tomcat:latest   指定宿主机固定IP的端口映射容器的端口
ab80291a2da3052aee3d4c7b587f742f9acac36b6bc586375d8093efe418ee6c
[root@centos7-174 ~]# docker run -d -p 192.168.1.174::8080 tomcat:latest   指定宿主机固定IP的任意端口映射容器端口。
ce87dc5e1118ba67b02df59dbda1e97c581d0510bd304c6aa861084c9e8f8f4a
[root@centos7-174 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                           NAMES
ce87dc5e1118        tomcat:latest       "catalina.sh run"        7 seconds ago        Up 6 seconds        192.168.1.174:32768->8080/tcp   evil_mayer
ab80291a2da3        tomcat:latest       "catalina.sh run"        36 seconds ago       Up 35 seconds       192.168.1.174:809->8080/tcp     desperate_aryabhata
3aa0c4ce060c        tomcat:latest       "catalina.sh run"        About a minute ago   Up About a minute   0.0.0.0:808->8080/tcp           elated_cray
db7946e42083        registry            "/entrypoint.sh /etc/"   3 hours ago          Up 2 hours          0.0.0.0:5000->5000/tcp          hopeful_allen
[root@centos7-174 ~]# docker port ce87dc5e1118   查看指定容器映射的端口。
8080/tcp -> 192.168.1.174:32768

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481344-1-1.html 上篇帖子: docker3.10修改默认网卡docker0的ip地址的方法,及docker的常用命令 下篇帖子: docker之单机构建mysql5.7主从服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表