当前位置:   article > 正文

Docker安装与使用_docker 18.06.3-ce

docker 18.06.3-ce

系统环境

  1. #防火墙关闭
  2. [root@n1 ~]# systemctl status firewalld.service
  3. ● firewalld.service - firewalld - dynamic firewall daemon
  4. Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  5. Active: inactive (dead)
  6. Docs: man:firewalld(1)
  7. #selinux关闭
  8. [root@n1 ~]# getenforce
  9. Disabled
  10. #内核版本
  11. [root@n1 ~]# uname -r
  12. 3.10.0-862.el7.x86_64
  13. #版本
  14. [root@n1 ~]# cat /etc/redhat-release
  15. CentOS Linux release 7.5.1804 (Core)
  16. 注意:CentOS6无法安装,需打补丁

安装Docker

配置yum源

[root@n1 ~]# cd /etc/yum.repos.d/
[root@n1 yum.repos.d]# wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

[root@n1 yum.repos.d]# vim docker-ce.repo

#进入命令行模式,替换为清华镜像源,否则,下载会很慢

:%s#https://download.docker.com/#https://mirrors.tuna.tsinghua.edu.cn/docker-ce/#g

安装

注:安装最新的docker-ce时,写Dockerfile时关键字不变色,然后安装了以前的版本

docker-ce是社区版本

[root@n1 ~]# yum install docker-ce-18.06.3.ce-3.el7 -y

配置docker加速器

配置后拉取镜像速度更快

[root@n1 ~]# mkdir /etc/docker/

[root@n1 docker]# cat daemon.json
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com","https://registry.docker-cn.com"]
}

可以配置阿里云镜像加速

点击镜像加速器即可得到一个加速器地址

 查看版本

启动docker

[root@n1 ~]# systemctl start docker.service

至此,安装完成

Docker命令使用

Docker命令

  1. 镜像操作:
  2. build Build an image from a Dockerfile
  3. commit Create a new image from a container's changes
  4. images List images
  5. load Load an image from a tar archive or STDIN
  6. pull Pull an image or a repository from a registry
  7. push Push an image or a repository to a registry
  8. rmi Remove one or more images
  9. search Search the Docker Hub for images
  10. tag Tag an image into a repository
  11. save 打包一个或多个镜像到name.tar (streamed to STDOUT by default)
  12. history 显示某镜像的历史
  13. inspect 获取镜像的详细信息
  14. 容器及其中应用的生命周期操作:
  15. create Create a new container (创建一个容器,不启动)
  16. kill Kill one or more running containers
  17. inspect Return low-level information on a container, image or task
  18. pause Pause all processes within one or more containers
  19. ps List containers
  20. rm Remove one or more containers (删除一个或者多个容器)
  21. rename Rename a container(更改容器名)
  22. restart Restart a container
  23. run Run a command in a new container (创建并启动一个容器)
  24. start Start one or more stopped containers (启动一个处于停止状态的容器)
  25. stats Display a live stream of container(s) resource usage statistics (显示容器实时的资源消耗信息)
  26. stop Stop one or more running containers (停止一个处于运行状态的容器)
  27. top Display the running processes of a container
  28. unpause Unpause all processes within one or more containers
  29. update Update configuration of one or more containers
  30. wait Block until a container stops, then print its exit code
  31. attach Attach to a running container
  32. exec Run a command in a running container
  33. port List port mappings or a specific mapping for the container
  34. logs 获取容器的日志
  35. 容器文件系统操作:
  36. cp Copy files/folders between a container and the local filesystem
  37. diff Inspect changes on a container's filesystem
  38. export Export a container's filesystem as a tar archive
  39. import Import the contents from a tarball to create a filesystem image
  40. Docker registry 操作:
  41. login Log in to a Docker registry.
  42. logout Log out from a Docker registry.
  43. Volume 操作
  44. volume Manage Docker volumes
  45. 网络操作
  46. network Manage Docker networks
  47. Swarm 相关操作
  48. swarm Manage Docker Swarm
  49. service Manage Docker services
  50. node Manage Docker Swarm nodes
  51. 系统操作:
  52. version Show the Docker version information
  53. events Get real time events from the server (持续返回docker 事件)
  54. info Display system-wide information (显示Docker 主机系统范围内的信息)

拉取镜像

[root@n1 ~]# docker pull centos:latest

“:”后跟标签,不加默认是latest

查看镜像列表

[root@n1 ~]# docker images

删除镜像

docker   rmi  centos:latest   

使用此镜像创建容器,需把容器删除后,才能删除镜像,在这里先不删除

打包镜像

save

[root@n1 ~]# docker save -o centos.tar centos:latest

恢复镜像

[root@n1 ~]# docker load -i centos.tar

导出容器

[root@n1 ~]# docker export -o t1_c.tar t1

导入容器

导入后为一个镜像

Usage:    docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

[root@n1 ~]# docker import t1_c.tar centos:v1

docker save和docker export的区别:

  1. docker save保存的是镜像(image),docker export保存的是容器(container);
  2. docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
  3. docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称

详细了解见:https://blog.csdn.net/liukuan73/article/details/78089138

为镜像打标签

Usage:    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

[root@n1 ~]# docker tag centos:v1 centos:test

打标签后,只是标签变了,IMAGE_ID不变

复制文件<->容器

Usage:    docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
               docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

复制文件到容器中

[root@n1 ~]# docker cp test.txt  t1:/tmp/test.txt

搜索镜像

[root@n1 ~]# docker search centos

docker run

  1. cgroups 和 namespace 相关:
  2. --blkio-weight value Block IO (relative weight), between 10 and 1000
  3. --blkio-weight-device value Block IO weight (relative device weight) (default [])
  4. --cgroup-parent string Optional parent cgroup for the container
  5. --cpu-percent int CPU percent (Windows only)
  6. --cpu-period int Limit CPU CFS (Completely Fair Scheduler) period
  7. --cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota
  8. -c, --cpu-shares int CPU shares (relative weight)
  9. --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
  10. --cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
  11. --device-read-bps value Limit read rate (bytes per second) from a device (default [])
  12. --device-read-iops value Limit read rate (IO per second) from a device (default [])
  13. --device-write-bps value Limit write rate (bytes per second) to a device (default [])
  14. --device-write-iops value Limit write rate (IO per second) to a device (default [])
  15. --ipc string IPC namespace to use
  16. -m, --memory string Memory limit
  17. --memory-reservation string Memory soft limit
  18. --memory-swap string Swap limit equal to memory plus swap: '-1' to enable unlimited swap
  19. --memory-swappiness int Tune container memory swappiness (0 to 100) (default -1)
  20. --kernel-memory string Kernel memory limit
  21. -u, --user string Username or UID (format: <name|uid>[:<group|gid>])
  22. --userns string User namespace to use
  23. --uts string UTS namespace to use
  24. -h, --hostname string Container host name
  25. --pid string PID namespace to use
  26. --pids-limit int Tune container pids limit (set -1 for unlimited)
  27. --isolation string Container isolation technology
  28. --io-maxbandwidth string Maximum IO bandwidth limit for the system drive (Windows only)
  29. --io-maxiops uint Maximum IOps limit for the system drive (Windows only)
  30. linux process capabilities 相关参数:
  31. --cap-add value Add Linux capabilities (default [])
  32. --cap-drop value Drop Linux capabilities (default [])
  33. 容器运行模式和环境相关:
  34. -d, --detach Run container in background and print container ID
  35. -e, --env value Set environment variables (default [])
  36. --env-file value Read in a file of environment variables (default [])
  37. DNS 相关:
  38. --dns value Set custom DNS servers (default [])
  39. --dns-opt value Set DNS options (default [])
  40. --dns-search value Set custom DNS search domains (default [])
  41. 健康检查相关:
  42. --health-cmd string Command to run to check health
  43. --health-interval duration Time between running the check
  44. --health-retries int Consecutive failures needed to report unhealthy
  45. --health-timeout duration Maximum time to allow one check to run
  46. --no-healthcheck Disable any container-specified HEALTHCHECK
  47. IP 和端口:
  48. --ip string Container IPv4 address (e.g. 172.30.100.104)
  49. --ip6 string Container IPv6 address (e.g. 2001:db8::33)
  50. -p, --publish value Publish a container's port(s) to the host (default [])
  51. -P(自动进行端口映射), --publish-all Publish all exposed ports to random ports
  52. --expose value Expose a port or a range of ports (default [])
  53. --mac-address string Container MAC address (e.g. 92:d0:c6:0a:29:33)
  54. --add-host value Add a custom host-to-IP mapping (host:ip) (default [])
  55. Volume 相关:
  56. -v, --volume value Bind mount a volume (default [])
  57. --volume-driver string Optional volume driver for the container
  58. --volumes-from value Mount volumes from the specified container(s) (default [])
  59. --storage-opt value Storage driver options for the container (default [])
  60. Network 有关:
  61. --network string Connect a container to a network (default "default")
  62. --network-alias value Add network-scoped alias for the container (default [])
  63. --link value Add link to another container (default [])
  64. --link-local-ip value Container IPv4/IPv6 link-local addresses (default [])
  65. 日志有关:
  66. --log-driver string Logging driver for the container
  67. --log-opt value Log driver options (default [])
  68. 交互性有关:
  69. -a, --attach value Attach to STDIN, STDOUT or STDERR (default [])
  70. -i, --interactive Keep STDIN open even if not attached
  71. OOM 有关:
  72. --oom-kill-disable Disable OOM Killer
  73. --oom-score-adj int Tune host's OOM preferences (-1000 to 1000)
  74. 其它:
  75. --cidfile string Write the container ID to the file
  76. --detach-keys string Override the key sequence for detaching a container
  77. --device value Add a host device to the container (default [])
  78. --disable-content-trust Skip image verification (default true)
  79. --entrypoint string Overwrite the default ENTRYPOINT of the image
  80. --group-add value Add additional groups to join (default [])
  81. --help Print usage
  82. -l, --label value Set meta data on a container (default [])
  83. --label-file value Read in a line delimited file of labels (default [])
  84. --name string Assign a name to the container
  85. --privileged Give extended privileges to this container
  86. --read-only Mount the container's root filesystem as read only
  87. --restart string Restart policy to apply when a container exits (default "no")
  88. --rm Automatically remove the container when it exits
  89. --runtime string Runtime to use for this container
  90. --security-opt value Security Options (default [])
  91. --shm-size string Size of /dev/shm, default value is 64MB
  92. --sig-proxy Proxy received signals to the process (default true)
  93. --stop-signal string Signal to stop a container, SIGTERM by default (default "SIGTERM")
  94. --sysctl value Sysctl options (default map[])
  95. --tmpfs value Mount a tmpfs directory (default [])
  96. -t, --tty Allocate a pseudo-TTY
  97. --ulimit value Ulimit options (default [])
  98. -w, --workdir string Working directory inside the container

创建前台运行容器

[root@n1 ~]# docker run --name t1 --hostname test1 -it centos:latest /bin/bash
[root@test1 /]#

--name:设置容器名称

--hostname:设置容器主机名,进入容器后的hostname,不设置时,会显示容器ID

-i:保证容器中STDIN是开启的,可以输入

-t:为要创建的容器分配一个伪tty终端这样,新创建的容器才能提供一个交互式shell。

在这一切的背后又都发生了什么呢

首先Docker会检查本地是否存在centos镜像,如果本地还没有该镜像的话,那么Docker就会连接官方维护的Docker Hub Registry,查看Docker Hub中是否有该镜像。Docker一旦找到该镜像,就会下载该镜像并将其保存到本地宿主机中。

随后,Docker在文件系统内部用这个镜像创建了一个新容器。该容器拥有自己的网络、IP地址,以及一个用来和宿主机进行通信的桥接网络接口。最后,我们告诉Docker在新容器中要运行什么命令,在本例中我们在容器中运行/bin/bash命令启动了一个Bash shell。

当容器创建完毕之后,Docker就会执行容器中的/bin/bash命令,这时就可以看到容器内的shell了

退出容器

容器退出后停止运行,但容器依然存在

查看容器

[root@n1 ~]# docker ps -a

-a:列出所有容器,不指定-a时,只列出正在运行的容器

-q:列出容器ID,-aq及列出所用容器ID

启动,停止,重启容器

[root@n1 ~]# docker start t1

[root@n1 ~]# docker stop t1

[root@n1 ~]# docker restart t1

启动容器后不会进入交互式界面,会后台运行

附着到容器

attach:附着到该容器的会话

[root@n1 ~]# docker attach t1
[root@test1 /]#

创建守护式容

除了这些交互式运行的容器(interactive container),也可以创建长期运行的容器。守护式容器(daemonized container)没有交互式会话,非常适合运行应用程序和服务。大多数时候我们都需要以守护式来运行我们的容器。

创建一个容器,执行while循环

[root@n1 ~]# docker run --name t2 -d centos:latest /bin/sh -c "while true; do echo hello world; sleep 1; done"

-d:后台运行,不添加,会一直在前台输出hello world

查看容器日志

[root@n1 ~]# docker logs  t2
hello world
hello world
hello world

-f:后跟-f选项,会一直输出日志,像tail -f样

--tail n:会输出最后n行

-t:为每条日志加上时间戳

Docker日志驱动

控制Docker守护进程和容器所用的日志驱动,这可以通过--log-driver选项来实现。

指定syslog(或其他json-file),该选项将禁用docker logs命令,并且将所有容器的日志输出都重定向到Syslog。

[root@n1 ~]# docker run --name t3 --log-driver="syslog" -d centos /bin/sh -c "while true;do echo hello; seelp 1;done"

查看容器中的进程

[root@n1 ~]# docker top t3
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                61149               61135               23                  12:29               ?                   00:00:21            /bin/sh -c while true;do echo hello; seelp 1;done

显示一个或多个容器的统计信息

[root@n1 ~]# docker stats t3

CPU、内存、网络I/O及存储I/O的性能和指标

参数会一直变动,ctrl+c结束

在容器中运行命令

exec

查看hosts文件

在容器内运行交互式命令

[root@n1 ~]# docker exec -it t3 /bin/bash
[root@644fd4f62918 /]# ls

自动重启容器

如果由于某种错误而导致容器停止运行,还可以通过--restart标志,让Docker自动重新启动该容器。--restart标志会检查容器的退出代码,并据此来决定是否要重启容器。默认的行为是Docker不会重启容器。

[root@n1 ~]# docker run --restart=always --name t4 -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"

获取跟多容器信息

inspect

[root@n1 ~]# docker inspect t4

-f,--format:选定查看结果

删除容器

rm

[root@n1 ~]# docker rm t1
t1

删除全部容器

[root@n1 ~]# docker rm `docker ps -aq`

为容器开启端口

创建一个守护进程,用while循环测试

[root@n1 ~]# docker run --name p1  -p 81:80 -d centos:latest /bin/sh -c "while true; do echo hello world; sleep 1; done"

-p:可以指定IP:LocalPort:ContainerPort

查看容器端口映射

[root@n1 ~]# docker port p1
80/tcp -> 0.0.0.0:81

 

其它重要的参数会在后边单独介绍~

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/970535
推荐阅读
相关标签
  

闽ICP备14008679号