获取Docker镜像的命令 docker pull

命令格式如下:
docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
* 选项可以通过 docker pull –help 查看
* Docker Registry地址:<域名/IP>[:端口号], 默认地址是Docker Hub
* 仓库名:仓库名是两段式名称,既 <用户名>/<软件名> 。对于 Docker Hub,如果不给出用户名,则默认为 library ,也就是官方镜像。
例如:下载mysql的镜像
[root@node1 docker]# docker pull mysql:5.7.19 5.7.19: Pulling from
library/mysqlad74af05f5a2: Pull complete 0639788facc8: Pull complete
de70fa77eb2b: Pull complete 724179e94999: Pull complete 50c77fb16ba6: Pull
completed51f459239fb: Pull complete 937bbdd4305a: Pull complete 35369f9634e1:
Pull completef6016aab25f1: Pull complete 5f1901e920da: Pull complete
fdf808213c5b: Pull complete Digest: sha256:96
edf37370df96d2a4ee1715cc5c7820a0ec6286551a927981ed50f0273d9b43Status:
Downloaded newer image for mysql:5.7.19
说明:下载过程中可以看到我们之前提及的分层存储的概念,镜像是由多层存储所构成。下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的 前
12位。并且下载结束后,给出该镜像完整的sha256 的摘要,以确保下载一致性。

列出本地镜像 docker images
[root@node1 docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql
5.7.19 c73c7527c03a 11 days ago 412MB
删除镜像 docker rmi

* 删除镜像之前,先查看是否有容器在运行,若在运行,先 docker stop CONNTAINER_ID
* 再查看停止的容器 docker ps -a
* 清除所有已经停止的容器 docker rm $(docker ps -qa)
* 删除对应的镜像: docker rmi IMAGE_ID
启动容器 docker run

普通启动,容器执行完成之后就退出
[root@node1 docker]# docker run mysql:5.7.19 /bin/echo 'hello world' hello
world
以交互式方式进入容器,添加 -t 创建终端,-i 交互模式
[root@node1 docker]# docker run -t -i mysql:5.7.19 /bin/bash root@759e97505f13
:/# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
group default 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 12: eth0@if13:
<BROADCAST,MULTICAST,UP,LOWER_UP> mtu1500 qdisc noqueue state UP group default
link/ether02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff inet 172.17.0.2/16 scope
global eth0 valid_lft forever preferred_lft forever
若不添加-d参数,退出/bin/bash之后,容器也就退出了;

docker run -d 守护状态运行
[root@node1 ~]# docker run -idt mysql:5.7.19 /bin/bash 40
ce5b1be185d22cc356bb8f38e29b3f98df23c6933a2475a9b0f5cfdb9ac210 [root@node1 ~]#
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 40ce5b1be185
mysql:5.7.19 "docker-entrypoint..." 6 seconds ago Up 5 seconds 3306/tcp
upbeat_ptolemy
这样启动之后,退出/bin/bash之后,容器仍然运行。docker run -d实现dettach的作用,即对于你docker
run的前台进程,该进程不对容器进行stdin,stdout,stderr的attach。

查看容器:docker ps

* 查看运行的容器: docker ps
* 查看所有的容器: docker ps -a
* 只显示容器的id: docker ps -q 或者 docker ps -qa
常用docker rm $(docker ps -qa)删除已经停止的容器

进入容器,docker exec | docker attach

docker exec 进入命令,该命令较常用

* 通过CONTAINER_ID进入容器 docker exec -it CONTAINER_ID /bin/bash
* 通过CONTAINER_NAME进入容器,该name就是启动是–name的值 docker exec -it CONTAINER_NAME
/bin/bash
docker attach [CONTAINER_ID | NAMES]
[root@node1 docker]# docker attach 40ce5b1be185 [root@40ce5b1be185:/# ls
注意:使用 attach 命令有时候并不方便。当多个窗口同时 attach
到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。

容器的启动、停止和重启: docker start | docker stop | docker restart
docker start CONTAINER_ID // 启动一个容器 docker stop CONTAINER_ID // 停止一个容器 docker
restart CONTAINER_ID// 重启一个容器
docker rm 删除处于终止状态的容器

清理容器
docker rm CONTAINER_ID
清理所有处于终止状态的容器
docker rm $(docker ps -a -q)
Docker常用操作

1 获取容器日志: docker logs CONTAINER_ID

获取对应容器的日志,容器的CONTAINER_ID可以通过docker ps获得

2 文件拷贝docker cp

拷贝docker中的文件到宿主机,需要注意的是:不管容器有没有启动,拷贝命令都会生效。

* 拷贝文件到宿主机 docker cp CONTAINER:SRC_DIRECTORY DES_DIRECTORY
* 拷贝文件到容器 docker cp SRC_DIRECTORY CONTAINER:DES_DIRECTORY
3 docker端口映射【启动容器时添加 -p参数】
docker run -p ip:hostPort:containerPort redis
* 宿主机IP和端口:ip:hostPort
* 容器端口:containerPort
4 docker 映射宿主机目录到容器【启动容器时添加 -v参数】
docker run -d -v /home/docker/code:/home/ocs90/src -it 10.45.80.1/public
/oraclejdk_java8_cloud_ci_ocs_90s:latest /bin/bash
* -v 宿主机目录:容器内目录
5 docker 设置网络类型【启动容器时添加 –net参数】
docker run -d --net host -it 10.45.80.1/public
/oraclejdk_java8_cloud_ci_ocs_90s:latest /bin/bash
docker的网络类型总共有5种网络类型,默认的类型是桥接模式,若希望使用其他网络模式,需要使用 –net切换网络模式。

* none模式,容器不需要和外界通信时使用;
* host模式,和宿主机共享一个网络,因此获得的IP和宿主机在同一个网段;
* bridge模式
* container模式
* user-defined模式
6 docker容器名称设置 【启动容器时添加 –name参数】
docker run -d -it --name "dev_container" ali_private:latest /bin/bash
* –name指定启动容器的名称
综合例子

1 启动容器
docker run -d -v /home/docker/code:/home/ocs90/src --cap-add=SYS_PTRACE --
security-opt seccomp=unconfined --net host --name "hunter_dev" -it 10.45.80.1/
public/oraclejdk_java8_cloud_ci_ocs_90s:latest /bin/bash
* 映射文件目录:-v /home/docker/code:/home/ocs90/src
* 使容器内支持GDB调试:–cap-add=SYS_PTRACE –security-opt seccomp=unconfined
* 指定网络模式为host:–net host
* 指定容器名称为:–name “hunter_dev”
* 以交互模式进入容器:-it
* 容器以台运行模式启动:-d
2 进入容器
docker exec -it hunter_dev /bin/bash
* 使用exec进入容器
* 使用容器名称hunter_dev而不是id进入容器
3 停止并删除容器
docker stop hunter_dev && docker rm hunter_dev
参考

* Docker的五种网络模式总结 <https://blog.csdn.net/Belug/article/details/75530627>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信