探索云原生技术之基石-Docker容器入门篇(2)
❤️💛🧡💚💔🖤💜💙❤💕💞💓💗❣️💝💘💖❤️💛🧡💚💔🖤💜💙❤💕💞💓💗❣️💝💘💖💖💖 💖
❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5🏅、华为云享专家🏅、云原生领域潜力新星🏅 💖
💛博客首页:C站个人主页🌞 💖
💗作者目的:如有错误请指正,将来会不断的完善笔记,帮助更多的Java爱好者入门,共同进步! 💖
❤️💛🧡💚💔🖤💜💙❤💕💞💓💗❣️💝💘💖❤️💛🧡💚💔🖤💜💙❤💕💞💓💗❣️💝💘💖💖💖 💖
文章目录
-
- 探索云原生技术之基石-Docker容器入门篇(2)
-
- 什么是云原生
- 什么是Docker
- docker命令
-
- docker start命令
-
- docker start命令参数与格式
- docker restart命令
-
- docker restart命令参数与格式
- docker stop命令
-
- docker stop命令参数与格式
- docker kill命令
-
- docker kill命令参数与格式
- docker rm命令
-
- docker rm命令参数与格式
- docker run -d命令
-
- docker run -d命令参数与格式
- docker logs命令
-
- docker logs命令参数与格式
- docker inspect命令
-
- docker inspect命令参数与格式
- docker exec命令
-
- docker exec命令参数与格式
- docker cp命令
-
- docker cp命令参数与格式
- docker export命令
-
- docker export命令参数与格式
- docker import命令
-
- docker import命令参数与格式
- docker commit命令
-
- docker commit命令参数与格式
- 安装vim命令
- commit提交成镜像
探索云原生技术之基石-Docker容器入门篇(2)
本博文一共有6篇,如下
- 探索云原生技术之基石-Docker容器入门篇(1)
- 探索云原生技术之基石-Docker容器入门篇(2)
- 探索云原生技术之基石-Docker容器入门篇(3)
等你对Docker有一定理解的时候可以看高级篇,不过不太建议。
- 探索云原生技术之基石-Docker容器高级篇(1)
- 探索云原生技术之基石-Docker容器高级篇(2)
- 探索云原生技术之基石-Docker容器高级篇(3)-视情况而定
剧透:未来将出云原生技术-Kubernetes(k8s),此时的你可以对Docker进行统一管理、动态扩缩容等等。
看完之后你会对Docker有一定的理解,并能熟练的使用Docker进行容器化开发、以及Docker部署微服务、Docker网络等等。干起来!
什么是云原生
Pivotal公司的Matt Stine于2013年首次提出云原生(Cloud-Native)的概念;2015年,云原生刚推广时,Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;到了2017年,Matt Stine在接受InfoQ采访时又改了口风,将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;而Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器。
总而言之,符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。
(此处摘选自《知乎-华为云官方帐号》)
什么是Docker
- Docker 是一个开源的应用容器引擎,基于Go语言开发。
- Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
- 容器是完全使用沙箱机制(容器实例相互隔离),容器性能开销极低(高性能)。
总而言之:
Docker是一个高性能的容器引擎;
可以把本地源代码、配置文件、依赖、环境通通打包成一个容器即可以到处运行;
使用Docker安装软件十分方便,而且安装的软件十分精简,方便扩展。
docker命令
docker start命令
docker start命令参数与格式
[root@aubin /]# docker start --helpUsage: docker start [OPTIONS] CONTAINER [CONTAINER...]Start one or more stopped containersOptions: -a, --attach Attach STDOUT/STDERR and forward signals --detach-keys string Override the key sequence for detaching a container -i, --interactive Attach container's STDIN
-
命令格式:docker start 容器id
-
作用:开启一个或多个状态为Exited(已经退出)的容器实例
-
先查询退出的容器:
[root@aubin ~]# docker ps -aCONTAINER ID IMAGE COMMANDCREATED STATUS PORTS NAMES2c49a87af8c9 ubuntu "bash" 18 seconds ago Exited (0) 8 seconds agocranky_ride
- 使用docker start启动容器
docker start 2c49a87af8c9
- 启动成功后就可以用docker exec去进入容器了。
docker restart命令
docker restart命令参数与格式
[root@aubin /]# docker restart --helpUsage: docker restart [OPTIONS] CONTAINER [CONTAINER...]Restart one or more containersOptions: -t, --time int Seconds to wait for stop before killing the container (default 10)
- 命令格式:docker restart 容器id
- 作用:重新启动容器实例
docker restart 2c49a87af8c9
docker stop命令
docker stop命令参数与格式
[root@aubin /]# docker stop --helpUsage: docker stop [OPTIONS] CONTAINER [CONTAINER...]Stop one or more running containersOptions: -t, --time int Seconds to wait for stop before killing it (default 10)
- 命令格式:docker stop 容器id
- 作用:停止容器实例,把容器实例状态变成Exited
docker stop 2c49a87af8c9
docker kill命令
docker kill命令参数与格式
[root@aubin /]# docker kill --helpUsage: docker kill [OPTIONS] CONTAINER [CONTAINER...]Kill one or more running containersOptions: -s, --signal string Signal to send to the container (default "KILL")
- 命令格式:docker kill 容器id
- 作用:杀死一个或多个正在运行的容器实例
docker kill 2c49a87af8c9
docker rm命令
docker rm命令参数与格式
[root@aubin /]# docker rm --helpUsage: docker rm [OPTIONS] CONTAINER [CONTAINER...]Remove one or more containersOptions: -f, --force Force the removal of a running container (uses SIGKILL) -l, --link Remove the specified link -v, --volumes Remove anonymous volumes associated with the container
- 命令格式:docker rm -f 容器id
- -f:force(强制移除容器),可选项
- 作用:移除一个或多个容器实例
docker rm -f 5b474c2309d9
docker run -d命令
docker run -d命令参数与格式
[root@aubin /]# docker run -d --helpUsage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]Run a command in a new containerOptions: --add-host list Add a custom host-to-IP mapping (host:ip) -a, --attach list Attach to STDIN, STDOUT or STDERR --blkio-weight uint16 Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0) --blkio-weight-device listBlock IO weight (relative device weight) (default []) --cap-add list Add Linux capabilities --cap-drop list Drop Linux capabilities --cgroup-parent string Optional parent cgroup for the container --cgroupns string Cgroup namespace to use (host|private) 'host': Run the container in the Docker host's cgroup namespace 'private': Run the container in its own private cgroup namespace '': Use the cgroup namespace as configured by the default-cgroupns-mode option on the daemon (default) 省略......
- 命令格式:docker run -d REPOSITORY镜像仓库名
- -d:后台模式(守护模式)
- 作用:后台启动一个容器
docker run -d redis
docker logs命令
docker logs命令参数与格式
[root@aubin /]# docker logs --helpUsage: docker logs [OPTIONS] CONTAINERFetch the logs of a containerOptions: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes) -n, --tail string Number of lines to show from the end of the logs (default "all") -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
- 命令格式:docker logs 容器id
- 作用:获取容器日志
[root@aubin ~]# docker psCONTAINER ID IMAGE COMMAND CREATEDSTATUSPORTS NAMES0e1b9afb7322 redis "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp recursing_faraday[root@aubin ~]# docker logs 0e1b9afb7322
- 输出
1:C 06 Apr 2022 07:22:51.888 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo1:C 06 Apr 2022 07:22:51.888 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started1:C 06 Apr 2022 07:22:51.888 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf1:M 06 Apr 2022 07:22:51.889 * monotonic clock: POSIX clock_gettime1:M 06 Apr 2022 07:22:51.890 * Running mode=standalone, port=6379.1:M 06 Apr 2022 07:22:51.890 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.1:M 06 Apr 2022 07:22:51.890 # Server initialized1:M 06 Apr 2022 07:22:51.890 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.1:M 06 Apr 2022 07:22:51.890 * Ready to accept connections
- 可以看到Redis已经启动与Redis版本等信息。
docker inspect命令
docker inspect命令参数与格式
[root@aubin /]# docker inspect --helpUsage: docker inspect [OPTIONS] NAME|ID [NAME|ID...]Return low-level information on Docker objectsOptions: -f, --format string Format the output using the given Go template -s, --size Display total file sizes if the type is container --type string Return JSON for specified type
- 命令格式:docker inspect 容器id/镜像id
- 作用:获取容器或者镜像的元数据。
docker inspect 0e1b9afb7322
- 输出:
[ { "Id": "0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9", "Created": "2022-04-06T07:22:51.498243986Z", "Path": "docker-entrypoint.sh", "Args": [ "redis-server" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 6614, "ExitCode": 0, "Error": "", "StartedAt": "2022-04-06T07:22:51.839540264Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631", "ResolvConfPath": "/var/lib/docker/containers/0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9/resolv.conf", "HostnamePath": "/var/lib/docker/containers/0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9/hostname", "HostsPath": "/var/lib/docker/containers/0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9/hosts", "LogPath": "/var/lib/docker/containers/0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9/0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9-json.log",......]
docker exec命令
docker exec命令参数与格式
[root@aubin /]# docker exec --helpUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]Run a command in a running containerOptions: -d, --detach Detached mode: run command in the background --detach-keys string Override the key sequence for detaching a container -e, --env list Set environment variables --env-file list Read in a file of environment variables -i, --interactive Keep STDIN open even if not attached --privileged Give extended privileges to the command -t, --tty Allocate a pseudo-TTY -u, --user string Username or UID (format: <name|uid>[:<group|gid>]) -w, --workdir stringWorking directory inside the container
- 命令格式:docker exec -it 容器id
- 作用:进入一个状态为Up的容器(这个容器一定不能被关闭,不然进不去)
docker exec -it 0e1b9afb7322 /bin/bash
docker cp命令
docker cp命令参数与格式
[root@aubin /]# docker cp --helpUsage: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATHCopy files/folders between a container and the local filesystemUse '-' as the source to read a tar archive from stdinand extract it to a directory destination in a container.Use '-' as the destination to stream a tar archive of acontainer source to stdout.Options: -a, --archiveArchive mode (copy all uid/gid information) -L, --follow-link Always follow symbol link in SRC_PATH
-
命令格式:docker cp 容器id:容器文件路径 主机路径
-
作用:当我们不在容器内,可以用docker cp把指定容器内的文件拷贝到主机路径中。
docker cp 5e464b07dd68:b.txt /var
docker export命令
docker export命令参数与格式
[root@aubin /]# docker export --helpUsage: docker export [OPTIONS] CONTAINERExport a container's filesystem as a tar archiveOptions: -o, --output string Write to a file, instead of STDOUT
- 命令格式:docker export 容器id > xxx.tar
- 作用:把指定容器导出成tar包。
[root@aubin /]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES5e464b07dd68 ubuntu "bash" About an hour ago Up About an hour heuristic_elbakyan[root@aubin /]# docker export 5e464b07dd68 > abc.tar
docker import命令
docker import命令参数与格式
[root@aubin /]# docker import --helpUsage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]Import the contents from a tarball to create a filesystem imageOptions: -c, --change listApply Dockerfile instruction to the created image -m, --message string Set commit message for imported image --platform string Set platform if server is multi-platform capable
- 命令格式:docker import tar包名 自定义镜像名:自定义tag名
- 作用:把tar包导入成镜像
docker import abc.tar myubuntu:5.2
docker commit命令
docker commit命令参数与格式
[root@aubin /]# docker commit --helpUsage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]Create a new image from a container's changesOptions: -a, --author string Author (e.g., "John Hannibal Smith ") -c, --change list Apply Dockerfile instruction to the created image -m, --message string Commit message -p, --pause Pause container during commit (default true)
安装vim命令
apt-get updateapt-get -y install vim
commit提交成镜像
-
命令格式:docker commit 容器id 自定义镜像仓库名:自定义tag
-
作用:把容器提交成镜像
docker commit f82b9b4f63b0 myubuntu:6.6
[root@aubin ~]# docker imagesREPOSITORY TAGIMAGE IDCREATED SIZEmyubuntu 6.65a035af5ac0c 5 seconds ago 176MBmbuntu1.3b31fa70be935 3 hours ago 72.8MBtomcatlatest fb5657adc892 3 months ago 680MBredis latest 7614ae9453d1 3 months ago 113MBmysql 5.7c20987f18b13 3 months ago 448MBrabbitmq latest d445c0adc9a5 3 months ago 220MBubuntulatest ba6acccedd29 5 months ago 72.8MB
- 可以看到我们只添加一个vim命令后的Ubuntu比docker hub拉取的Ubuntu大了差不多100MB
- 由于可见docker hub里面的镜像都是精简版的。
❤️💛🧡本章结束,我们下一章见❤️💛🧡